diff --git a/Example/web3swiftExample/Podfile b/Example/web3swiftExample/Podfile index e23fd2a4..942d181f 100644 --- a/Example/web3swiftExample/Podfile +++ b/Example/web3swiftExample/Podfile @@ -2,14 +2,8 @@ platform :ios, '11.2' target 'web3swiftExample' do use_frameworks! -# pod 'Alamofire', '~> 4.5' -# pod 'BigInt', '~> 3.0.1' pod 'PromiseKit', '~> 4.4' pod 'AwaitKit', '~> 3.0.1' -# pod 'PromiseKit/Alamofire', '~> 4.0' -# pod 'CryptoSwift' -# pod 'libsodium' -# pod 'secp256k1_ios', '~> 0.0.6' # pod 'web3swift', :git => 'https://github.com/bankex/web3swift.git' pod 'web3swift', :path => '../../' end diff --git a/Example/web3swiftExample/Podfile.lock b/Example/web3swiftExample/Podfile.lock index 62e3807d..019cd412 100644 --- a/Example/web3swiftExample/Podfile.lock +++ b/Example/web3swiftExample/Podfile.lock @@ -6,22 +6,22 @@ PODS: - PromiseKit (~> 4.2) - BigInt (3.0.1): - SipHash (~> 1.2) - - CryptoSwift (0.8.1) + - CryptoSwift (0.8.3) - libsodium (1.0.12) - - PromiseKit (4.5.1): - - PromiseKit/Foundation (= 4.5.1) - - PromiseKit/QuartzCore (= 4.5.1) - - PromiseKit/UIKit (= 4.5.1) - - PromiseKit/CorePromise (4.5.1) - - PromiseKit/Foundation (4.5.1): + - PromiseKit (4.5.2): + - PromiseKit/Foundation (= 4.5.2) + - PromiseKit/QuartzCore (= 4.5.2) + - PromiseKit/UIKit (= 4.5.2) + - PromiseKit/CorePromise (4.5.2) + - PromiseKit/Foundation (4.5.2): - PromiseKit/CorePromise - - PromiseKit/QuartzCore (4.5.1): + - PromiseKit/QuartzCore (4.5.2): - PromiseKit/CorePromise - - PromiseKit/UIKit (4.5.1): + - PromiseKit/UIKit (4.5.2): - PromiseKit/CorePromise - secp256k1_ios (0.1.1) - SipHash (1.2.0) - - web3swift (0.2.7): + - web3swift (0.2.14): - Alamofire (~> 4.5) - Alamofire-Synchronous (~> 4.0) - BigInt (~> 3.0.1) @@ -43,13 +43,13 @@ SPEC CHECKSUMS: Alamofire-Synchronous: eedf1e6e961c3795a63c74990b3f7d9fbfac7e50 AwaitKit: daf1af84544413a8dfadb4fc25d8b0f9706e5c83 BigInt: 8e8a52161c745cd3ab78e3dc346a9fbee51e6cf6 - CryptoSwift: 4b07d5b508c1eb67bfa314a727b705f8048a85de + CryptoSwift: 033efc3523865d19cc6ab6612fa17a62613b5dfa libsodium: 9a8faa5ef2fa0d2d57bd7f7d79bf8fb7c1a9f0ea - PromiseKit: 445dac9b2c3c3b4b31b5f842bc325700b848a8bd + PromiseKit: 743e497a5f505a470d3bbbf4ce0663c1268af0a4 secp256k1_ios: 3c94e6cce14ff03924cb6dc10c5017f17011b79d SipHash: c6e9e43e9c531b5bc6602545130c26194a6d31ce - web3swift: cf6d76db53a57fc18ce40ce090bea3b15acc18f2 + web3swift: 39787043f9867a4709ce2852f2b9b77543df5f46 -PODFILE CHECKSUM: 4e5121a1dec0e978128609b48d54cc97e1079b04 +PODFILE CHECKSUM: 5ca116ba7ac7ede430186cd1d2b7ef07870944f2 -COCOAPODS: 1.3.1 +COCOAPODS: 1.4.0 diff --git a/Example/web3swiftExample/Pods/CryptoSwift/LICENSE b/Example/web3swiftExample/Pods/CryptoSwift/LICENSE index c4b236d9..b70d6de9 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/LICENSE +++ b/Example/web3swiftExample/Pods/CryptoSwift/LICENSE @@ -8,3 +8,4 @@ Permission is granted to anyone to use this software for any purpose,including c - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. - This notice may not be removed or altered from any source or binary distribution. +- Redistributions of any form whatsoever must retain the following acknowledgment: 'This product includes software developed by the "Marcin Krzyzanowski" (http://krzyzanowskim.com/).' \ No newline at end of file diff --git a/Example/web3swiftExample/Pods/CryptoSwift/README.md b/Example/web3swiftExample/Pods/CryptoSwift/README.md index 7dbbe2ba..3c0e6f9d 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/README.md +++ b/Example/web3swiftExample/Pods/CryptoSwift/README.md @@ -1,5 +1,5 @@ -[![Platform](https://img.shields.io/badge/Platforms-ios%20%7C%20macos%20%7C%20watchos%20%7C%20tvos%20%7C%20linux-4E4E4E.svg?colorA=EF5138)](http://cocoadocs.org/docsets/CryptoSwift) -[![Swift support](https://img.shields.io/badge/Swift-3.1%20%7C%203.2%20%7C%204.0-lightgrey.svg?colorA=EF5138&colorB=4E4E4E)](#swift-versions-support) +[![Platform](https://img.shields.io/badge/Platforms-iOS%20%7C%20macOS%20%7C%20watchOS%20%7C%20tvOS%20%7C%20Linux-4E4E4E.svg?colorA=28a745)](#installation) +[![Swift support](https://img.shields.io/badge/Swift-3.1%20%7C%203.2%20%7C%204.0-lightgrey.svg?colorA=28a745&colorB=4E4E4E)](#swift-versions-support) [![CocoaPods Compatible](https://img.shields.io/cocoapods/v/CryptoSwift.svg?style=flat&label=CocoaPods)](https://cocoapods.org/pods/CryptoSwift) [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-brightgreen.svg?style=flat&colorB=64A5DE)](https://github.com/apple/swift-package-manager) [![Swift Package Manager compatible](https://img.shields.io/badge/SPM-compatible-brightgreen.svg?style=flat&colorB=64A5DE)](https://github.com/apple/swift-package-manager) @@ -155,7 +155,7 @@ You can use [Swift Package Manager](https://swift.org/package-manager/) and spec ```swift dependencies: [ - .Package(url: "https://github.com/krzyzanowskim/CryptoSwift.git", majorVersion: 0) + .package(url: "https://github.com/krzyzanowskim/CryptoSwift.git", .upToNextMinor(from: "0.8.0")) ] ``` @@ -163,7 +163,7 @@ or more strict ```swift dependencies: [ - .Package(url: "https://github.com/krzyzanowskim/CryptoSwift.git", "0.7.2"), + .package(url: "https://github.com/krzyzanowskim/CryptoSwift.git", .exact("0.8.0")) ] ``` @@ -425,6 +425,7 @@ Permission is granted to anyone to use this software for any purpose, including - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, **an acknowledgment in the product documentation is required**. - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. - This notice may not be removed or altered from any source or binary distribution. +- Redistributions of any form whatsoever must retain the following acknowledgment: 'This product includes software developed by the "Marcin Krzyzanowski" (http://krzyzanowskim.com/).' ## Changelog diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/AES.Cryptors.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/AES.Cryptors.swift index b8522625..5e21df97 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/AES.Cryptors.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/AES.Cryptors.swift @@ -1,5 +1,4 @@ // -// AES.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski @@ -90,7 +89,7 @@ extension AES { } public mutating func update(withBytes bytes: ArraySlice, isLast: Bool = false) throws -> Array { - // prepend "offset" number of bytes at the begining + // prepend "offset" number of bytes at the beginning if offset > 0 { accumulated += Array(repeating: 0, count: offset) + bytes offsetToRemove = offset diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/AES.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/AES.swift index a396348e..e044add9 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/AES.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/AES.swift @@ -1,5 +1,4 @@ // -// AES.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski @@ -330,7 +329,7 @@ public final class AES: BlockCipher { UInt8(b1 & 0xff), UInt8((b1 >> 8) & 0xff), UInt8((b1 >> 16) & 0xff), UInt8((b1 >> 24) & 0xff), UInt8(b2 & 0xff), UInt8((b2 >> 8) & 0xff), UInt8((b2 >> 16) & 0xff), UInt8((b2 >> 24) & 0xff), UInt8(b3 & 0xff), UInt8((b3 >> 8) & 0xff), UInt8((b3 >> 16) & 0xff), UInt8((b3 >> 24) & 0xff), - ] + ] return result } } @@ -491,7 +490,7 @@ extension AES: Cipher { public func encrypt(_ bytes: ArraySlice) throws -> Array { let chunks = bytes.batched(by: AES.blockSize) - var oneTimeCryptor = try self.makeEncryptor() + var oneTimeCryptor = try makeEncryptor() var out = Array(reserveCapacity: bytes.count) for chunk in chunks { out += try oneTimeCryptor.update(withBytes: chunk, isLast: false) @@ -511,7 +510,7 @@ extension AES: Cipher { throw Error.dataPaddingRequired } - var oneTimeCryptor = try self.makeDecryptor() + var oneTimeCryptor = try makeDecryptor() let chunks = bytes.batched(by: AES.blockSize) if chunks.isEmpty { throw Error.invalidData diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Array+Extension.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Array+Extension.swift index af13c2f7..2dcde036 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Array+Extension.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Array+Extension.swift @@ -1,5 +1,4 @@ // -// ArrayExtension.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Array+Extensions.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Array+Extensions.swift index b394260c..aeb20522 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Array+Extensions.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Array+Extensions.swift @@ -1,5 +1,4 @@ // -// Array+Extensions.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Authenticator.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Authenticator.swift index 5183af2c..03215a64 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Authenticator.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Authenticator.swift @@ -1,5 +1,4 @@ // -// MAC.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BatchedCollection.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BatchedCollection.swift index 2a675d58..9078b3ef 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BatchedCollection.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BatchedCollection.swift @@ -1,5 +1,4 @@ // -// BatchedCollection.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Bit.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Bit.swift index 7fc2b983..b1eb66ab 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Bit.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Bit.swift @@ -1,5 +1,4 @@ // -// Bit.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockCipher.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockCipher.swift index 079606d8..b3c1ffa9 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockCipher.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockCipher.swift @@ -1,5 +1,4 @@ // -// BlockCipher.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/BlockMode.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/BlockMode.swift index 6385d628..be7bd963 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/BlockMode.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/BlockMode.swift @@ -1,5 +1,4 @@ // -// BlockMode.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/BlockModeOptions.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/BlockModeOptions.swift index 1fbd3fa9..bff7fe50 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/BlockModeOptions.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/BlockModeOptions.swift @@ -1,5 +1,4 @@ // -// BlockModeOptions.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski @@ -17,7 +16,7 @@ struct BlockModeOptions: OptionSet { let rawValue: Int - static let none = BlockModeOptions(rawValue: 0) - static let initializationVectorRequired = BlockModeOptions(rawValue: 1) - static let paddingRequired = BlockModeOptions(rawValue: 2) + static let none = BlockModeOptions(rawValue: 1 << 0) + static let initializationVectorRequired = BlockModeOptions(rawValue: 1 << 1) + static let paddingRequired = BlockModeOptions(rawValue: 1 << 2) } diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/BlockModeWorker.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/BlockModeWorker.swift index c369a3d4..c7beb4df 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/BlockModeWorker.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/BlockModeWorker.swift @@ -1,5 +1,4 @@ // -// BlockModeWorker.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CBC.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CBC.swift index ac401282..a2b748a1 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CBC.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CBC.swift @@ -1,5 +1,4 @@ // -// CBC.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CFB.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CFB.swift index 35d77d37..dd579263 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CFB.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CFB.swift @@ -1,5 +1,4 @@ // -// CFB.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CTR.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CTR.swift index f3b82122..55011d3b 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CTR.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/CTR.swift @@ -1,5 +1,4 @@ // -// CTR.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/ECB.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/ECB.swift index a0fed819..68d8ae0d 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/ECB.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/ECB.swift @@ -1,5 +1,4 @@ // -// BlockMode.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/OFB.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/OFB.swift index 5b25aa37..70e43598 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/OFB.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/OFB.swift @@ -1,5 +1,4 @@ // -// OFB.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/PCBC.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/PCBC.swift index 6885b51a..a6dd544f 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/PCBC.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/PCBC.swift @@ -1,5 +1,4 @@ // -// PCBM.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/RandomAccessBlockModeWorker.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/RandomAccessBlockModeWorker.swift index bbd12462..aa143295 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/RandomAccessBlockModeWorker.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/BlockMode/RandomAccessBlockModeWorker.swift @@ -1,5 +1,4 @@ // -// RandomAccessBlockModeWorker.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Blowfish.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Blowfish.swift index b3151639..cd8a3efd 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Blowfish.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Blowfish.swift @@ -1,5 +1,4 @@ // -// Blowfish.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/ChaCha20.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/ChaCha20.swift index 6c48d9a1..5bc78e6b 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/ChaCha20.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/ChaCha20.swift @@ -1,5 +1,4 @@ // -// ChaCha20.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski @@ -207,18 +206,18 @@ public final class ChaCha20: BlockCipher { } // XORKeyStream - func process(bytes: Array, counter: inout Array, key: Array) -> Array { + func process(bytes: ArraySlice, counter: inout Array, key: Array) -> Array { precondition(counter.count == 16) precondition(key.count == 32) var block = Array(repeating: 0, count: ChaCha20.blockSize) - var bytes = bytes // TODO: check bytes[bytes.indices] - var out = Array(reserveCapacity: bytes.count) + var bytesSlice = bytes + var out = Array(reserveCapacity: bytesSlice.count) - while bytes.count >= ChaCha20.blockSize { + while bytesSlice.count >= ChaCha20.blockSize { core(block: &block, counter: counter, key: key) for (i, x) in block.enumerated() { - out.append(bytes[i] ^ x) + out.append(bytesSlice[bytesSlice.startIndex + i] ^ x) } var u: UInt32 = 1 for i in 0..<4 { @@ -226,12 +225,12 @@ public final class ChaCha20: BlockCipher { counter[i] = UInt8(u & 0xFF) u >>= 8 } - bytes = Array(bytes[ChaCha20.blockSize.. 0 { + if bytesSlice.count > 0 { core(block: &block, counter: counter, key: key) - for (i, v) in bytes.enumerated() { + for (i, v) in bytesSlice.enumerated() { out.append(v ^ block[i]) } } @@ -243,7 +242,7 @@ public final class ChaCha20: BlockCipher { extension ChaCha20: Cipher { public func encrypt(_ bytes: ArraySlice) throws -> Array { - return process(bytes: Array(bytes), counter: &counter, key: Array(key)) + return process(bytes: bytes, counter: &counter, key: Array(key)) } public func decrypt(_ bytes: ArraySlice) throws -> Array { @@ -293,7 +292,7 @@ extension ChaCha20 { } public mutating func update(withBytes bytes: ArraySlice, isLast: Bool = true) throws -> Array { - // prepend "offset" number of bytes at the begining + // prepend "offset" number of bytes at the beginning if offset > 0 { accumulated += Array(repeating: 0, count: offset) + bytes offsetToRemove = offset diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Checksum.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Checksum.swift index 9df4ec74..5c4c5bbc 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Checksum.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Checksum.swift @@ -1,5 +1,4 @@ // -// Checksum.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Cipher.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Cipher.swift index cc3cde39..cb3acade 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Cipher.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Cipher.swift @@ -1,5 +1,4 @@ // -// Cipher.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Collection+Extension.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Collection+Extension.swift index a1c6f399..eef4e983 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Collection+Extension.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Collection+Extension.swift @@ -1,5 +1,4 @@ // -// Collection+Extension.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Cryptors.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Cryptors.swift index e72b25d4..fc942f6a 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Cryptors.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Cryptors.swift @@ -1,5 +1,4 @@ // -// Cryptors.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Digest.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Digest.swift index 7413ac41..35e754da 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Digest.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Digest.swift @@ -1,5 +1,4 @@ // -// Hash.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/DigestType.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/DigestType.swift index b828c718..48c40d68 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/DigestType.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/DigestType.swift @@ -1,5 +1,4 @@ // -// Digest.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/AES+Foundation.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/AES+Foundation.swift index 52d96d56..bd9da456 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/AES+Foundation.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/AES+Foundation.swift @@ -1,5 +1,4 @@ // -// AES+Foundation.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Array+Foundation.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Array+Foundation.swift index 0008877e..20feefee 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Array+Foundation.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Array+Foundation.swift @@ -1,5 +1,4 @@ // -// Array+Foundation.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Blowfish+Foundation.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Blowfish+Foundation.swift index 502d4f37..a871b180 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Blowfish+Foundation.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Blowfish+Foundation.swift @@ -1,5 +1,4 @@ // -// Blowfish+Foundation.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/ChaCha20+Foundation.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/ChaCha20+Foundation.swift index e37db2eb..8cda6c7d 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/ChaCha20+Foundation.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/ChaCha20+Foundation.swift @@ -1,5 +1,4 @@ // -// ChaCha20+Foundation.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Data+Extension.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Data+Extension.swift index ef13f202..d310f3a9 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Data+Extension.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Data+Extension.swift @@ -1,6 +1,5 @@ // -// PGPDataExtension.swift -// SwiftPGP +// CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski // This software is provided 'as-is', without any express or implied warranty. diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/HMAC+Foundation.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/HMAC+Foundation.swift index b77cc8f4..796455e1 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/HMAC+Foundation.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/HMAC+Foundation.swift @@ -1,5 +1,4 @@ // -// HMAC+Foundation.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Rabbit+Foundation.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Rabbit+Foundation.swift index 83779562..b48a99c6 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Rabbit+Foundation.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Rabbit+Foundation.swift @@ -1,5 +1,4 @@ // -// Rabbit+Foundation.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/String+FoundationExtension.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/String+FoundationExtension.swift index f7e9ae37..fd0fa9f0 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/String+FoundationExtension.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/String+FoundationExtension.swift @@ -1,5 +1,4 @@ // -// String+Extension.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Utils+Foundation.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Utils+Foundation.swift index e06fa6dc..f9453650 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Utils+Foundation.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Foundation/Utils+Foundation.swift @@ -1,5 +1,4 @@ // -// Utils+Foundation.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Generics.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Generics.swift index e978da63..cd9a7d92 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Generics.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Generics.swift @@ -1,5 +1,4 @@ // -// Generics.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/HKDF.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/HKDF.swift index 1e18ac7d..b74fba80 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/HKDF.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/HKDF.swift @@ -1,5 +1,4 @@ // -// HKDF.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/HMAC.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/HMAC.swift index 7592a131..0c03681b 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/HMAC.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/HMAC.swift @@ -1,5 +1,4 @@ // -// HMAC.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Int+Extension.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Int+Extension.swift index 28b14a22..deb057d3 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Int+Extension.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Int+Extension.swift @@ -1,5 +1,4 @@ // -// IntExtension.swift // CryptoSwift // // Created by Marcin Krzyzanowski on 12/08/14. diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/MD5.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/MD5.swift index 8fb0fabc..a151e7bb 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/MD5.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/MD5.swift @@ -1,5 +1,4 @@ // -// MD5.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/NoPadding.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/NoPadding.swift index 5b04368a..93d23239 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/NoPadding.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/NoPadding.swift @@ -1,5 +1,4 @@ // -// NoPadding.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Operators.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Operators.swift index f14e3319..a15fe3c9 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Operators.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Operators.swift @@ -1,5 +1,4 @@ // -// Operators.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PBKDF1.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PBKDF1.swift index da53a32f..cef93f9e 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PBKDF1.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PBKDF1.swift @@ -1,5 +1,4 @@ // -// PBKDF1.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PBKDF2.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PBKDF2.swift index 036950ee..07645b27 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PBKDF2.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PBKDF2.swift @@ -1,5 +1,4 @@ // -// PBKDF2.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PKCS5.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PKCS5.swift index 9dbddc3d..b1afc691 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PKCS5.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PKCS5.swift @@ -1,5 +1,4 @@ // -// PKCS.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PKCS7.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PKCS7.swift index 866101fa..9c012849 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PKCS7.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PKCS7.swift @@ -1,5 +1,4 @@ // -// PKCS7.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PKCS7Padding.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PKCS7Padding.swift index 2f83f0fd..1df1204b 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PKCS7Padding.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/PKCS/PKCS7Padding.swift @@ -1,5 +1,4 @@ // -// PKCS7PAdding.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Padding.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Padding.swift index caa4520c..6abfd5b9 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Padding.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Padding.swift @@ -1,5 +1,4 @@ // -// Padding.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Poly1305.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Poly1305.swift index 6faeac3b..2c046154 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Poly1305.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Poly1305.swift @@ -1,5 +1,4 @@ // -// Poly1305.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Rabbit.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Rabbit.swift index 8e02fdd4..7f24b165 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Rabbit.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Rabbit.swift @@ -1,5 +1,4 @@ // -// Rabbit.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/RandomAccessCryptor.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/RandomAccessCryptor.swift index 675ddf2d..b665778b 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/RandomAccessCryptor.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/RandomAccessCryptor.swift @@ -1,5 +1,4 @@ // -// RandomAccessCryptor.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/RandomBytesSequence.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/RandomBytesSequence.swift index b1d628eb..b88bbbb8 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/RandomBytesSequence.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/RandomBytesSequence.swift @@ -1,5 +1,4 @@ // -// RandomBytesSequence.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/SHA1.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/SHA1.swift index 0c7ec472..ad09b692 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/SHA1.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/SHA1.swift @@ -1,5 +1,4 @@ // -// SHA1.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski @@ -106,6 +105,7 @@ public final class SHA1: DigestType { extension SHA1: Updatable { + @discardableResult public func update(withBytes bytes: ArraySlice, isLast: Bool = false) throws -> Array { accumulated += bytes diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/SHA2.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/SHA2.swift index 0291ad49..f6dc7231 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/SHA2.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/SHA2.swift @@ -1,5 +1,4 @@ // -// SHA2.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/SHA3.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/SHA3.swift index f403f364..7567c737 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/SHA3.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/SHA3.swift @@ -1,5 +1,4 @@ // -// SHA3.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski @@ -39,7 +38,6 @@ public final class SHA3: DigestType { public let markByte: UInt8 fileprivate var accumulated = Array() - fileprivate var processedBytesTotalCount: Int = 0 fileprivate var accumulatedHash: Array public enum Variant { @@ -257,12 +255,13 @@ extension SHA3: Updatable { if isLast { // Add padding - let markByteIndex = processedBytesTotalCount &+ accumulated.count - if accumulated.count == 0 || accumulated.count % blockSize != 0 { - let r = blockSize * 8 - let q = (r / 8) - (accumulated.count % (r / 8)) - accumulated += Array(repeating: 0, count: q) - } + let markByteIndex = accumulated.count + + // We need to always pad the input. Even if the input is a multiple of blockSize. + let r = blockSize * 8 + let q = (r / 8) - (accumulated.count % (r / 8)) + accumulated += Array(repeating: 0, count: q) + accumulated[markByteIndex] |= markByte accumulated[self.accumulated.count - 1] |= 0x80 } @@ -275,7 +274,6 @@ extension SHA3: Updatable { } } accumulated.removeFirst(processedBytes) - processedBytesTotalCount += processedBytes // TODO: verify performance, reduce vs for..in let result = accumulatedHash.reduce(Array()) { (result, value) -> Array in diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/SecureBytes.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/SecureBytes.swift index 5580df25..c603854a 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/SecureBytes.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/SecureBytes.swift @@ -1,5 +1,4 @@ // -// SecureBytes.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/String+Extension.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/String+Extension.swift index bb7d4d9f..d4ac91a9 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/String+Extension.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/String+Extension.swift @@ -1,5 +1,4 @@ // -// StringExtension.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/UInt16+Extension.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/UInt16+Extension.swift index 243741df..3a31df6e 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/UInt16+Extension.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/UInt16+Extension.swift @@ -1,5 +1,4 @@ // -// UInt16+Extension.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/UInt32+Extension.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/UInt32+Extension.swift index ed667dca..3a7d60ee 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/UInt32+Extension.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/UInt32+Extension.swift @@ -1,5 +1,4 @@ // -// UInt32Extension.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/UInt64+Extension.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/UInt64+Extension.swift index 54e116ab..bfa4648e 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/UInt64+Extension.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/UInt64+Extension.swift @@ -1,5 +1,4 @@ // -// UInt64Extension.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/UInt8+Extension.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/UInt8+Extension.swift index 566c98df..72978752 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/UInt8+Extension.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/UInt8+Extension.swift @@ -1,5 +1,4 @@ // -// ByteExtension.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Updatable.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Updatable.swift index ca547bc8..a5902330 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Updatable.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Updatable.swift @@ -1,5 +1,4 @@ // -// Updatable.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski @@ -54,10 +53,12 @@ extension Updatable { } } + @discardableResult public mutating func finish(withBytes bytes: ArraySlice) throws -> Array { return try update(withBytes: bytes, isLast: true) } + @discardableResult public mutating func finish() throws -> Array { return try update(withBytes: [], isLast: true) } @@ -76,6 +77,7 @@ extension Updatable { extension Updatable { + @discardableResult public mutating func update(withBytes bytes: Array, isLast: Bool = false) throws -> Array { return try update(withBytes: bytes.slice, isLast: isLast) } @@ -84,6 +86,7 @@ extension Updatable { return try update(withBytes: bytes.slice, isLast: isLast, output: output) } + @discardableResult public mutating func finish(withBytes bytes: Array) throws -> Array { return try finish(withBytes: bytes.slice) } diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Utils.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Utils.swift index edfc7aca..f401d984 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Utils.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/Utils.swift @@ -1,5 +1,4 @@ // -// Utils.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/ZeroPadding.swift b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/ZeroPadding.swift index 57df5df8..b2a47716 100644 --- a/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/ZeroPadding.swift +++ b/Example/web3swiftExample/Pods/CryptoSwift/Sources/CryptoSwift/ZeroPadding.swift @@ -1,5 +1,4 @@ // -// ZeroPadding.swift // CryptoSwift // // Copyright (C) 2014-2017 Marcin Krzyżanowski diff --git a/Example/web3swiftExample/Pods/Local Podspecs/web3swift.podspec.json b/Example/web3swiftExample/Pods/Local Podspecs/web3swift.podspec.json index bad3ed0b..b031ec5a 100644 --- a/Example/web3swiftExample/Pods/Local Podspecs/web3swift.podspec.json +++ b/Example/web3swiftExample/Pods/Local Podspecs/web3swift.podspec.json @@ -1,7 +1,7 @@ { "name": "web3swift", - "version": "0.2.7", - "summary": "Web3 implementation in vanilla Swift", + "version": "0.2.14", + "summary": "Web3 implementation in vanilla Swift for iOS ans macOS", "description": "Web3 implementation in vanilla Swift, intended for mobile developers of wallets, Dapps and Web3.0", "homepage": "https://github.com/bankex/web3swift", "license": "Apache License 2.0", @@ -10,7 +10,7 @@ }, "source": { "git": "https://github.com/bankex/web3swift.git", - "tag": "0.2.7" + "tag": "0.2.14" }, "social_media_url": "https://twitter.com/shamatar", "pod_target_xcconfig": { @@ -20,7 +20,8 @@ }, "module_name": "web3swift", "platforms": { - "ios": "9.0" + "ios": "11.2", + "osx": "10.13" }, "public_header_files": "web3swift/**/*.{h}", "source_files": [ diff --git a/Example/web3swiftExample/Pods/Manifest.lock b/Example/web3swiftExample/Pods/Manifest.lock index 62e3807d..019cd412 100644 --- a/Example/web3swiftExample/Pods/Manifest.lock +++ b/Example/web3swiftExample/Pods/Manifest.lock @@ -6,22 +6,22 @@ PODS: - PromiseKit (~> 4.2) - BigInt (3.0.1): - SipHash (~> 1.2) - - CryptoSwift (0.8.1) + - CryptoSwift (0.8.3) - libsodium (1.0.12) - - PromiseKit (4.5.1): - - PromiseKit/Foundation (= 4.5.1) - - PromiseKit/QuartzCore (= 4.5.1) - - PromiseKit/UIKit (= 4.5.1) - - PromiseKit/CorePromise (4.5.1) - - PromiseKit/Foundation (4.5.1): + - PromiseKit (4.5.2): + - PromiseKit/Foundation (= 4.5.2) + - PromiseKit/QuartzCore (= 4.5.2) + - PromiseKit/UIKit (= 4.5.2) + - PromiseKit/CorePromise (4.5.2) + - PromiseKit/Foundation (4.5.2): - PromiseKit/CorePromise - - PromiseKit/QuartzCore (4.5.1): + - PromiseKit/QuartzCore (4.5.2): - PromiseKit/CorePromise - - PromiseKit/UIKit (4.5.1): + - PromiseKit/UIKit (4.5.2): - PromiseKit/CorePromise - secp256k1_ios (0.1.1) - SipHash (1.2.0) - - web3swift (0.2.7): + - web3swift (0.2.14): - Alamofire (~> 4.5) - Alamofire-Synchronous (~> 4.0) - BigInt (~> 3.0.1) @@ -43,13 +43,13 @@ SPEC CHECKSUMS: Alamofire-Synchronous: eedf1e6e961c3795a63c74990b3f7d9fbfac7e50 AwaitKit: daf1af84544413a8dfadb4fc25d8b0f9706e5c83 BigInt: 8e8a52161c745cd3ab78e3dc346a9fbee51e6cf6 - CryptoSwift: 4b07d5b508c1eb67bfa314a727b705f8048a85de + CryptoSwift: 033efc3523865d19cc6ab6612fa17a62613b5dfa libsodium: 9a8faa5ef2fa0d2d57bd7f7d79bf8fb7c1a9f0ea - PromiseKit: 445dac9b2c3c3b4b31b5f842bc325700b848a8bd + PromiseKit: 743e497a5f505a470d3bbbf4ce0663c1268af0a4 secp256k1_ios: 3c94e6cce14ff03924cb6dc10c5017f17011b79d SipHash: c6e9e43e9c531b5bc6602545130c26194a6d31ce - web3swift: cf6d76db53a57fc18ce40ce090bea3b15acc18f2 + web3swift: 39787043f9867a4709ce2852f2b9b77543df5f46 -PODFILE CHECKSUM: 4e5121a1dec0e978128609b48d54cc97e1079b04 +PODFILE CHECKSUM: 5ca116ba7ac7ede430186cd1d2b7ef07870944f2 -COCOAPODS: 1.3.1 +COCOAPODS: 1.4.0 diff --git a/Example/web3swiftExample/Pods/Pods.xcodeproj/project.pbxproj b/Example/web3swiftExample/Pods/Pods.xcodeproj/project.pbxproj index 4de04a06..b5e3645a 100644 --- a/Example/web3swiftExample/Pods/Pods.xcodeproj/project.pbxproj +++ b/Example/web3swiftExample/Pods/Pods.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 48; objects = { /* Begin PBXBuildFile section */ @@ -15,18 +15,17 @@ 04056851010D25CFD03211572FEAEF64 /* Primitive Types.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88AED21B5224D03D613F729DD7045E7C /* Primitive Types.swift */; }; 0491E2B1082EDA983F220DE5C0D262A9 /* Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 72E3A75D7B035E424DBAEEDB5AAB2C6F /* Promise.swift */; }; 04ED4CBE1683A039945AE21E71657DCE /* SHA1.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBA609FD5D7A83DD108F78010CF51DE6 /* SHA1.swift */; }; - 06F33AF16CE116A64D15BCBA16D7E7AB /* Web3+Methods.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2E7655EEF590655321EE18837397953 /* Web3+Methods.swift */; }; - 0712263ACDD41E03822D47C9D14A899E /* ABITypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3396B084F850E4EC592BD9E912A363B2 /* ABITypes.swift */; }; + 060938139DA8560500C8064D35B3A78E /* ABIManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17D0CBABF6C26C0888829B2D972CAFD8 /* ABIManager.swift */; }; 0842A55A6C2FF1F7682024A5258CF492 /* beforenm_aes128ctr.c in Sources */ = {isa = PBXBuildFile; fileRef = B4B4F1B802A293DB693A5DF8AB59DDBA /* beforenm_aes128ctr.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 0853B4573417B4EA70C3E5868D9F2B79 /* x25519_ref10.h in Headers */ = {isa = PBXBuildFile; fileRef = BDC4360DC745AD87354A0A874492558E /* x25519_ref10.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 08A829CA5DABA99AE8E45B1DB3C8C944 /* Web3+BrowserFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = E846BBC34C45979A613C1BF6DAF4DA7E /* Web3+BrowserFunctions.swift */; }; 08C450BB03BE7BFD888431D1751132F8 /* RandomAccessBlockModeWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 806411786CC469989E42BAFFBD0279A3 /* RandomAccessBlockModeWorker.swift */; }; + 098A77307962A9DA5217039364A960DF /* ABIEncoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB44DCE3061CB0E0C37F91EBB0420ADB /* ABIEncoder.swift */; }; 09BA55206A63E564D4C41BE3ED95A008 /* race.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD3E843A3C8D06492D5DA69B37260527 /* race.swift */; }; - 0AD36DF95F4D2BFC17607D05438FA448 /* web3swift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A0F73A3F9A05D9232E2F9D989B597B8 /* web3swift-dummy.m */; }; 0C057F605156BADF076E230EA43AAEE6 /* curve25519_donna_c64.c in Sources */ = {isa = PBXBuildFile; fileRef = 6BD04C5335593D7AC9EE55BF0C10004E /* curve25519_donna_c64.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 0C8A2D86647DF8D8B66DCFA60181A438 /* mutex.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C7FB038C0AE552D7215406D4EFEF9B4 /* mutex.h */; settings = {ATTRIBUTES = (Public, ); }; }; 0C97CA68ED229DBBFDB9B18AD65768A6 /* ecdsa_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 061572E018995FF7871DCA43D8DB3623 /* ecdsa_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; 0C9F76EAB3D5C99ED2EAD2C422D53856 /* Floating Point Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = C215C89CFFD9E66199D66477FEE38751 /* Floating Point Conversion.swift */; }; - 0CE68784A2B882367E88F162937E1291 /* BIP39.swift in Sources */ = {isa = PBXBuildFile; fileRef = F32DA2C797E61CBBDAEB1E19672F3F84 /* BIP39.swift */; }; 0D6AABE7A3BA411180A637682054E14C /* when.swift in Sources */ = {isa = PBXBuildFile; fileRef = A37E4BBD829F3194E2D25EC52E87608F /* when.swift */; }; 0D88FE4F5E550BFC99CCC87CE477FC45 /* stream_aes128ctr_nacl.c in Sources */ = {isa = PBXBuildFile; fileRef = 0D7EAE0ED8E17D51510B637FA7B91881 /* stream_aes128ctr_nacl.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 0E12D8586AFB79F410044DE1381AAAD0 /* shorthash_siphash24.c in Sources */ = {isa = PBXBuildFile; fileRef = C2080C83931770B771CC21FF60AC4BE4 /* shorthash_siphash24.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; @@ -34,8 +33,11 @@ 0F85C22525EF69923FAD0F9EFB419751 /* onetimeauth_poly1305.h in Headers */ = {isa = PBXBuildFile; fileRef = 41DB5FDDDEF383C3AC6537ADE069C662 /* onetimeauth_poly1305.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0FBDCD21AD05262C3FC4D88B558E7B8E /* u1.h in Headers */ = {isa = PBXBuildFile; fileRef = 1138223686EAD4B9BFA5AA76E756D3C6 /* u1.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0FE9353D657E4D741284EF5CD4EB14F6 /* num_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E25BFABAEC90C0DA50D5EB08622AC38 /* num_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 104D96021908BFBC41B58249B292C428 /* Web3+Infura.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2AD440B7F6647E9CB2D56554AC81B088 /* Web3+Infura.swift */; }; 10EB23E9ECC4B33E16933BB1EA560B6A /* Timeline.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC196378D41286DD2E4410859F97606F /* Timeline.swift */; }; + 112BBE0613EA75E20AAB51BD1E11EB7B /* BIP32HDNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = A96A1D67A71A84310A8B3E600523DFAB /* BIP32HDNode.swift */; }; 125E16E032D9EB73B86DE9EE85E7C283 /* CALayer+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 829BF8BA495AF23C38E2E0A5DC6AD068 /* CALayer+AnyPromise.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 12E5DBC787525FCA3AC72269635C1D80 /* web3swift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = FA210D7BBA90B8FB488606A7A33B27BF /* web3swift-dummy.m */; }; 13319D017D26653501E0FA331833EC3C /* Random.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2FB1B6D2CD4C71486DFCA8DC5699179 /* Random.swift */; }; 13F6AB7435F9F3AB5D92EDDF8ECF8A78 /* crypto_onetimeauth_poly1305.h in Headers */ = {isa = PBXBuildFile; fileRef = 39EDF7E5110DA8CED315A8E626A9D474 /* crypto_onetimeauth_poly1305.h */; settings = {ATTRIBUTES = (Public, ); }; }; 14AE84FF86859F4B50C76E1365E22E34 /* secp256k1.c in Sources */ = {isa = PBXBuildFile; fileRef = 937146C615D2590707ACDEDC825CA276 /* secp256k1.c */; }; @@ -45,10 +47,8 @@ 16EACCEBFC4C0A2857AB6CB05CA0C963 /* crypto_kx.c in Sources */ = {isa = PBXBuildFile; fileRef = E331BD82115915455146E31AB093F506 /* crypto_kx.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 16F7E87D5D10EADC70585579A7920B59 /* field.h in Headers */ = {isa = PBXBuildFile; fileRef = 53D6EFD3179583F31C3AEBDF4ACDD4E8 /* field.h */; settings = {ATTRIBUTES = (Private, ); }; }; 17F8E260E7B7A42FFCA1E76A67DBAF35 /* Addition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 776244C1A0697A48ABC4A88B9AC76B62 /* Addition.swift */; }; - 188400241BD734A1CDA0A202CBC2EF39 /* RLP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 109E03D140257436F27F7E3144F38DB1 /* RLP.swift */; }; 19F209E95649F61A5101303CA297098B /* UInt8+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1429113748761659EA24981C42FE39B /* UInt8+Extension.swift */; }; - 1B69A1D5E50E7A3CB273AD799B605927 /* Web3+Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC7219F66BC3009931909070E7C58412 /* Web3+Utils.swift */; }; - 1B9EDEDC964E6B08F78920B4F4B9DB84 /* Alamofire-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B3118129A4387B6EA8C997F86A84194 /* Alamofire-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1B9EDEDC964E6B08F78920B4F4B9DB84 /* Alamofire-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E658939717252825783B1B956BBA40C /* Alamofire-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 1BCBD814F3A819CFEDD5B621CD6BC6E0 /* Array+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10B8939E6CEAF88BBFF97622E4BECCBB /* Array+Foundation.swift */; }; 1BF45A7615FF59F0B7D8FEBF94EB7F8D /* NSNotificationCenter+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7AE0DAAF7C68B4912D03CB0FEBA29581 /* NSNotificationCenter+Promise.swift */; }; 1BF9400DF220E21AB442D1AC3ABBF349 /* State.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B03EB27359BCD13C9E13E7C6C8FC4DD /* State.swift */; }; @@ -61,6 +61,8 @@ 1D44C163D50469DB2C82978E42CC999B /* stream_salsa2012.c in Sources */ = {isa = PBXBuildFile; fileRef = 8BB9CD5F0CF1B1A74BD5A05AF4BB13D7 /* stream_salsa2012.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 1D6CFBBACC438C78B84DC4C8F8774B35 /* num.h in Headers */ = {isa = PBXBuildFile; fileRef = D4BA775D60DADAD23DC8C4702A2AA5E3 /* num.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1D73AE4249FE6856BFC6FD02DA81AE67 /* group.h in Headers */ = {isa = PBXBuildFile; fileRef = 89516F5076E6DD9C07A6BB655509240D /* group.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1E54F6961AA349841C1EEE53472DCFE7 /* ABIDecoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = FBB6EAFE5237E5DA8661397C72595ECA /* ABIDecoder.swift */; }; + 1F75A0E388739D515F8966A30288BE32 /* Web3+TransactionIntermediate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A49A571A990F4CFA028AB216F6188A5 /* Web3+TransactionIntermediate.swift */; }; 213B740A64BE2F026C4E129DC70BE514 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7086D0452CB4D5EE4DE2C77047B474AC /* Foundation.framework */; }; 21C97C03E4D9EC8B9379141BC0897B68 /* ladder_namespace.h in Headers */ = {isa = PBXBuildFile; fileRef = BF789719CC7DE1537EC916116980AA95 /* ladder_namespace.h */; settings = {ATTRIBUTES = (Project, ); }; }; 220386C2111838454BBE3EE9E472813B /* argon2-encoding.h in Headers */ = {isa = PBXBuildFile; fileRef = BC3200B7EF31ABD5D32F13FC81A3B970 /* argon2-encoding.h */; settings = {ATTRIBUTES = (Project, ); }; }; @@ -72,25 +74,29 @@ 2421518D91D550B954BA2BDDFACD79A9 /* poly1305_donna32.h in Headers */ = {isa = PBXBuildFile; fileRef = 7384C46CB5B89984DB6825E02DBD517B /* poly1305_donna32.h */; settings = {ATTRIBUTES = (Project, ); }; }; 24634282D9828FFD11C2BD4C546BAD53 /* int128_aes128ctr.c in Sources */ = {isa = PBXBuildFile; fileRef = 87F94F47EC670FDCC64EFD3D195468B9 /* int128_aes128ctr.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 24ABD62828F7C2B470704860823FF864 /* blake2b-compress-avx2.h in Headers */ = {isa = PBXBuildFile; fileRef = 179F0870947C360A8BA2A904FCD427EB /* blake2b-compress-avx2.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 259B2B09D10A7FC3AA7311D758D2218B /* Web3+AbstractSigner.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8AA725BF1CEDB39AF870F96104567BC /* Web3+AbstractSigner.swift */; }; 25DC254F0F91AA1D23E52CFABA3C1B0D /* onetimeauth_poly1305.c in Sources */ = {isa = PBXBuildFile; fileRef = 58F3E581C0F8D2542CB8E54A4269DA03 /* onetimeauth_poly1305.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 26167008AF91C4AC2A144501C9C06BBD /* NSURLSession+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = D6178FABCED5E9E24B0A6417537C93F5 /* NSURLSession+AnyPromise.m */; }; + 2653C94955B2DF8192257E48523D735A /* DictionaryLiteralJSONSerializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B82875020813BB6E58D6DAD9CEC0FAB /* DictionaryLiteralJSONSerializer.swift */; }; 2794CAB200DDF53433F9078B5CA43B49 /* blake2b-compress-ssse3.c in Sources */ = {isa = PBXBuildFile; fileRef = 5BB0511A55DEBA1FD49259D38C883385 /* blake2b-compress-ssse3.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 27A81607F812846904D6F15BDA729DD7 /* runtime.h in Headers */ = {isa = PBXBuildFile; fileRef = BB1DDE6B4D04F5912CD9B8947B8FCE35 /* runtime.h */; settings = {ATTRIBUTES = (Public, ); }; }; 29196944F97910D49D7A4647010C1220 /* verify.c in Sources */ = {isa = PBXBuildFile; fileRef = F5A60FAF0C556DA7AFAB83A6B5EA2086 /* verify.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 2A499CD3A3C106997CCA7E92645411D9 /* CryptoExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F0CA3FB358CB7B184EBD5888E7C7B44 /* CryptoExtensions.swift */; }; 2A850CB2521CCF63206C98B1AD9CC183 /* base2.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C3832E296CABF9B2297C23DCDE57842 /* base2.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2B6AEC2328D5C7204F03D3A477089C5D /* SipHashable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 933A516C95B96631AA76FC2480E83402 /* SipHashable.swift */; }; 2C07EE60AF29F852B4450ABC462BA8E9 /* scalar_low_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = EA21AE8A8CF80A11AEC1258509FA86D8 /* scalar_low_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; 2C5CF5A993C674E9F85F480E7FBFAA99 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7086D0452CB4D5EE4DE2C77047B474AC /* Foundation.framework */; }; - 2D60BCD7FFF739A632E7C840CA55573B /* BIP32HDNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3872D3525E6B5E87EBF550AC9B2B1652 /* BIP32HDNode.swift */; }; 2DC344BC76550F546299454C6980DAEC /* Hashable.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECA87142B9B113800B1EC37326BCE116 /* Hashable.swift */; }; 2E0AC14311F0BA8AB0889866A070A324 /* crypto_box.h in Headers */ = {isa = PBXBuildFile; fileRef = F10C7FA53F53CFE4EC38D9E0BA87E7BA /* crypto_box.h */; settings = {ATTRIBUTES = (Public, ); }; }; 2E0D414FE584FE796783EC6C37AFB5C3 /* scalar_4x64_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CA12281B5A71ACEB3C4F1B773AFC0E2 /* scalar_4x64_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; 2E87C1D283D28C61FAB08B36FEBCBE11 /* chacha20_dolbeau-avx2.c in Sources */ = {isa = PBXBuildFile; fileRef = 894D15974F4239FC5E6AEB121E7ED1FC /* chacha20_dolbeau-avx2.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 2ED198E9CD25FD62702F73006CA5A137 /* ladder_base_namespace.h in Headers */ = {isa = PBXBuildFile; fileRef = 08A78C6A4BDBB66AD6F09F5DC8A998EB /* ladder_base_namespace.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2FC5024A5D1748A0F3418E4F5FDC8D9F /* Web3.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A8C4BE37B72D1560929038B38F79405 /* Web3.swift */; }; 302A2BEA666AC767E9B7062A4198EF2B /* scratch_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 3ACB091AA2B39E1E8EA17B896C15B641 /* scratch_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; 3069D9A60D40D1E30FAA13FCC9EACEEC /* join.m in Sources */ = {isa = PBXBuildFile; fileRef = 768B5C0BA451E678A8AF31AAF4E5CFED /* join.m */; }; 30AA0CB65A0C2ECB33366C5BE6B9675D /* crypto_kdf.c in Sources */ = {isa = PBXBuildFile; fileRef = A323614C65FEAA037088EBE01DA2B4C8 /* crypto_kdf.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 31D9CCCECC0EEAB5E1CDA07F806FADBA /* box_curve25519xsalsa20poly1305.c in Sources */ = {isa = PBXBuildFile; fileRef = F45661F05ABC3C9464F87FC4529CBCC1 /* box_curve25519xsalsa20poly1305.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 3212AF6BE093BDE4FF1EF7012AF5BCB3 /* Web3+Contract.swift in Sources */ = {isa = PBXBuildFile; fileRef = 221509961AE93648AD44198F7C7B70EB /* Web3+Contract.swift */; }; 32508A477EB8DE4F4EA066315511C4EF /* Authenticator.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6CFF550A6F9ADC5F8F1B59045809D7A /* Authenticator.swift */; }; 333171BA934355EACBEDB924CEAF8640 /* Comparable.swift in Sources */ = {isa = PBXBuildFile; fileRef = B36829E3E37699F888C7190502605755 /* Comparable.swift */; }; 338E92A59022E6035872D94CB3AA57BF /* Array+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F44300D2C7F2C770A4FA890CAF4234D /* Array+Extensions.swift */; }; @@ -100,18 +106,18 @@ 35E471ED57984AE320D0F646D62E0128 /* crypto_box_seal.c in Sources */ = {isa = PBXBuildFile; fileRef = F021E3CC94CA83A7D86BFC379C0BC908 /* crypto_box_seal.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 3626B94094672CB1C9DEA32B9F9502E1 /* TaskDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DA4296963BDD85F117BCB19BECB1CD3 /* TaskDelegate.swift */; }; 36403880474BB3D9AFFEDA5401DB79CD /* base.h in Headers */ = {isa = PBXBuildFile; fileRef = F2CAA5B9950C963CE43940B4F4ADB24A /* base.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 36ACEF8451B720D92309B7E5549B2480 /* PromiseKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 41A3ACAEC7A956D49AAF96DA60D17C24 /* PromiseKit-dummy.m */; }; + 36ACEF8451B720D92309B7E5549B2480 /* PromiseKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 86323F7D7148A07EDA5C88B5DC76C6AE /* PromiseKit-dummy.m */; }; 36C1874BB7D075DB54486AF6527079F4 /* randombytes_sysrandom.c in Sources */ = {isa = PBXBuildFile; fileRef = F82D912E0571595E9DC39D6A769DDBC4 /* randombytes_sysrandom.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 36E8B09B7AE86A747F4BB58FDF1A5326 /* crypto_shorthash_siphash24.h in Headers */ = {isa = PBXBuildFile; fileRef = 71708EF919E0C9D9B9D71E4DFE3F79C0 /* crypto_shorthash_siphash24.h */; settings = {ATTRIBUTES = (Public, ); }; }; 36EFBA3A9ACD02D86DE3622B190BE326 /* salsa20_xmm6int-sse2.h in Headers */ = {isa = PBXBuildFile; fileRef = 72DCF70AF87EDE0979B2FAECBFCA6328 /* salsa20_xmm6int-sse2.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3703B6E48C92A9CA9485B91125942BA9 /* AES+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4DD3BA5987929E8BC9A3D98C98D8FBDB /* AES+Foundation.swift */; }; 37372EDFF413EE037F3969B279917FC9 /* chacha20_dolbeau-ssse3.h in Headers */ = {isa = PBXBuildFile; fileRef = 7FAD8F02B6E0425FD24D3DE6C8699CE6 /* chacha20_dolbeau-ssse3.h */; settings = {ATTRIBUTES = (Project, ); }; }; 374978542A05A52F7E6ABE33D2528F68 /* hash.h in Headers */ = {isa = PBXBuildFile; fileRef = 04E2A210D89CCFC9D6FCCAEF770FA796 /* hash.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 3951F7DAC369F18DDCDE3B50E330EEC1 /* ABIEncoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB0CC2FAEF57AE316BE4E97096252AF /* ABIEncoder.swift */; }; 395968454CBE736B64F63A633E0B68E4 /* String+FoundationExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC424FDB0E35CAD55604B2AE30B73CA4 /* String+FoundationExtension.swift */; }; 395EF20C9E2919A6801D099BE72C7B8D /* lax_der_privatekey_parsing.c in Sources */ = {isa = PBXBuildFile; fileRef = C6A21C1E2F59741F0B57057F7C62A450 /* lax_der_privatekey_parsing.c */; }; 39A98252B1B5D00E62B1157875C0733F /* main_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 24FCDC105D535F9A6D9EB8A9BD3E46C1 /* main_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3BCF683D46EE12F6D6C91FB34102C081 /* fe.h in Headers */ = {isa = PBXBuildFile; fileRef = 3901041503563C569D277831FB4F7BB5 /* fe.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3BD8B4C08C7233436A93493DF283B9AA /* BIP32KeystoreJSONStructure.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67A41557FE2F61C175AFB783862F61F6 /* BIP32KeystoreJSONStructure.swift */; }; 3C00073FFC1672ECAB81588D56B68DE2 /* AwaitKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 318F4674DB25A77EAA5EF0BEEF57AD63 /* AwaitKit.swift */; }; 3C45EFBC434F614C32D7B7071ECE31C9 /* DispatchQueue+Async.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8465C7D9DDD5875D26CDD99ECD0E9F26 /* DispatchQueue+Async.swift */; }; 3C5BAFA66961B3B9562AD37C5CF00938 /* crypto_core_hsalsa20.h in Headers */ = {isa = PBXBuildFile; fileRef = A549372C115488412704294C32CFB9CF /* crypto_core_hsalsa20.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -123,45 +129,48 @@ 3F42F7E13FEFC594196AEDC87482FBD5 /* version.c in Sources */ = {isa = PBXBuildFile; fileRef = B5BAA8FD072C8ED786C0A84FF896DEFB /* version.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 4048FB3E06D542865BC2F966C8DA21CF /* crypto_auth_hmacsha256.h in Headers */ = {isa = PBXBuildFile; fileRef = 49DF6E74BCA19C9032FA109C03F6307B /* crypto_auth_hmacsha256.h */; settings = {ATTRIBUTES = (Public, ); }; }; 405399419B157DF8EF37D56349523B94 /* blake2b-compress-avx2.c in Sources */ = {isa = PBXBuildFile; fileRef = 03B0F6E8C12479117286D5497BA86EEF /* blake2b-compress-avx2.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 4084D2D8AF422324C3982ABDAD8D4363 /* Web3+Structures.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF87B4E9D2CB52A63CA01D0AC92C33F9 /* Web3+Structures.swift */; }; 418ECD70B202FFE2B78C91893096711F /* dispatch_promise.m in Sources */ = {isa = PBXBuildFile; fileRef = B9A3A4E029E6506D4F8A2082AB3CB75C /* dispatch_promise.m */; }; 41C2FA1F4D0080553E9123A51A805F88 /* sse2_64_32.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B662960FCEC82FB71DFB83E3C24562A /* sse2_64_32.h */; settings = {ATTRIBUTES = (Public, ); }; }; 41F01E64CEECB0C7E6DB6206DDF3F0F7 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2F4A520B7AD2EA71F063828D854813E4 /* QuartzCore.framework */; }; - 42348958030270653C6EF40C7E799593 /* Web3+Instance.swift in Sources */ = {isa = PBXBuildFile; fileRef = A4E0FB1D0CCCE77A3AF7782C32C9E4C3 /* Web3+Instance.swift */; }; 43193EAECA40E1A338432AB865CB28C8 /* DispatchQueue+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 932E5775328FCB1A272D2C6A8291CADB /* DispatchQueue+Promise.swift */; }; 4321841108FEE455C008A9D8667795AA /* crypto_hash_sha512.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D6E5BAD8FFB4B8AC90BA34890210443 /* crypto_hash_sha512.h */; settings = {ATTRIBUTES = (Public, ); }; }; 43BD49FBF2F61B795CBA8A300148A773 /* stream_salsa2012_ref.c in Sources */ = {isa = PBXBuildFile; fileRef = 62B523B0A39166961F10B894652BD993 /* stream_salsa2012_ref.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 4468FC3E35360ADB85AEFB29324AD6BF /* stream_salsa208_ref.c in Sources */ = {isa = PBXBuildFile; fileRef = A2DD3DB7B033D23E656A7DF6613696EE /* stream_salsa208_ref.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 44751BA17838B5BDE6AA88A7D19CDC35 /* PKCS5.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B3E08E154CF8F973C42F70C65D8C269 /* PKCS5.swift */; }; 44C39C2398D98B9B7AE80B6BB53F7E2E /* PMKAlertController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A963770041F9F3AABBC21B94401D1A4 /* PMKAlertController.swift */; }; + 45383390BED5E17F9C6ADFF99C47A74F /* Web3+Options.swift in Sources */ = {isa = PBXBuildFile; fileRef = F71DB190ECB5926FDDDF768E81D76562 /* Web3+Options.swift */; }; 4588D2AC75968B78C7153936F67A189E /* blake2b-long.c in Sources */ = {isa = PBXBuildFile; fileRef = FD4CB99B38AC87CF7518199B96E0F77E /* blake2b-long.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 462E11A980823607DB4D49AAFD2C38BF /* BigUInt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29AAF2336E6E11709224F0101DC64B0C /* BigUInt.swift */; }; 473DABC63FCEDEAC6C02E4AFE687DB31 /* BatchedCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 093A965E4F6017A4D45E33AB48BB8391 /* BatchedCollection.swift */; }; 480E39FF21C0804A44C6E001F6CC3EBB /* field_5x52.h in Headers */ = {isa = PBXBuildFile; fileRef = 86BAD4CAFA1D89DEC22B5182FCA98468 /* field_5x52.h */; settings = {ATTRIBUTES = (Private, ); }; }; 4856104E402235169F42552A1F92322A /* salsa20_ref.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E72913E826C612CACEAC09505917AD9 /* salsa20_ref.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 48B4380FE6D4D72B7C5E51A66D7DB118 /* Base58.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EE4F76AEECAA6929425CDCADA97EBE8 /* Base58.swift */; }; 48E770EAFA3730666D434C9AC7E48496 /* Generics.swift in Sources */ = {isa = PBXBuildFile; fileRef = EFC75F58DE7CA29A3D02103B27638AF8 /* Generics.swift */; }; 494751D9321DF2E06F6FAF41A6017E7F /* HKDF.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE34E61361780E771B17C675854F5E9D /* HKDF.swift */; }; 49763770426E2BD6285062C7B3C0831D /* NSObject+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5AB7EAD9D2357A786D724309792E339 /* NSObject+Promise.swift */; }; 49C6022FFB654F025AE6247765EFD40C /* ECB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95A270CD2E6C3C27B38B1741F9ADE4B2 /* ECB.swift */; }; 4A9757E18105065850C029144674483A /* crypto_stream_xchacha20.h in Headers */ = {isa = PBXBuildFile; fileRef = E420376450B3CAFDD3B3ED169F91C82F /* crypto_stream_xchacha20.h */; settings = {ATTRIBUTES = (Public, ); }; }; 4AA1BD53D2D4BC46569E1C1DCFA9DB3A /* salsa20_xmm6.h in Headers */ = {isa = PBXBuildFile; fileRef = CCDC8E89E1969F3E1495D026949A4B8E /* salsa20_xmm6.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4ABED6E1AB85AB75300E2709708E9F5E /* Contract.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FF38D18EB0EC35CC2A70B85CD62E729 /* Contract.swift */; }; 4AFE85213948DEAD418E98CFAA4A7918 /* fwd.h in Headers */ = {isa = PBXBuildFile; fileRef = 81E4F6AE526CCB05828DCB45B329E5C2 /* fwd.h */; settings = {ATTRIBUTES = (Public, ); }; }; 4B2DF1BFB6BF1DB60BD30E0133D3EF05 /* argon2-core.c in Sources */ = {isa = PBXBuildFile; fileRef = 1A3E2E3E9841B503424724AFBFE1D993 /* argon2-core.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 4C1FB8FF6F72F217D32E6CAD5F059DF7 /* poly1305_sse2.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F704B07EAA87233A842C14AC92683D4 /* poly1305_sse2.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4F3CB3D56B6BA65AA330593EF40C51A2 /* secp256k1_ios-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 100E9AAC7191CDEFC6BCE1EC1C00211E /* secp256k1_ios-dummy.m */; }; + 4E9B9DBF62F3E48769AAA87563F8DB8A /* BIP32Keystore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F9403C126A65CEDFCAB5123F6649D67 /* BIP32Keystore.swift */; }; + 4F3CB3D56B6BA65AA330593EF40C51A2 /* secp256k1_ios-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B3A1ACE5001C305E7DFF9B20D3E83C40 /* secp256k1_ios-dummy.m */; }; 4F50AC8FA55BC4DEFE1DBD0C12A9B18E /* libsecp256k1-config.h in Headers */ = {isa = PBXBuildFile; fileRef = EF79D21ED3ABD34DDC1AEDBF25CFBCE0 /* libsecp256k1-config.h */; settings = {ATTRIBUTES = (Private, ); }; }; 500817BC3214266CF26FBBA1ABB40AF8 /* crypto_sign.h in Headers */ = {isa = PBXBuildFile; fileRef = B6659207D9563B903FE7C16B3A130B60 /* crypto_sign.h */; settings = {ATTRIBUTES = (Public, ); }; }; 50E744F5BCD127D15C0DEE4DF318707C /* PromiseKit.h in Headers */ = {isa = PBXBuildFile; fileRef = CF4E7504383884142E7F5886F48B5D2B /* PromiseKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; 51899868CD9B186A2D3CEDEDEF132D52 /* auth_hmacsha512.c in Sources */ = {isa = PBXBuildFile; fileRef = 57ECEBAD75C1F91D9EE6473FA01EE5A9 /* auth_hmacsha512.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 520277896BDB16DF0820331D1C828728 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7086D0452CB4D5EE4DE2C77047B474AC /* Foundation.framework */; }; - 529F108C99760997CC637A391EAE6D1D /* RIPEMD160+StackOveflow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 871A70C5117D06D547176DD6B8941418 /* RIPEMD160+StackOveflow.swift */; }; 52B580124EECC6A3FCE43AFD40E3A1EA /* crypto_box.c in Sources */ = {isa = PBXBuildFile; fileRef = F5F1F2EFB6E998AF074CEFFC49E176A2 /* crypto_box.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 536A94F5F6D7F6D6BE656AE36DF51A46 /* Dictionary+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 72B9241BE1402124361F02939811C3FD /* Dictionary+Extension.swift */; }; 5387216E723A3C68E851CA15573CDD71 /* Request.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24C3FF472A2964ABE4A10A73F7FB3FF5 /* Request.swift */; }; 539683E1BE43B51D259946D0AF765610 /* core.h in Headers */ = {isa = PBXBuildFile; fileRef = 2303C3EE7EAAA18922D16FC87C103B49 /* core.h */; settings = {ATTRIBUTES = (Public, ); }; }; 539D2EF27CB10B2FE21D7CCF3AE8A797 /* CryptoSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6FEA8826A7748A1528BA2225DDD45C06 /* CryptoSwift.framework */; }; 541F777D2665756E1BA336614087B8B6 /* secp256k1.h in Headers */ = {isa = PBXBuildFile; fileRef = E96D14EDEE6A8FBEF6CD099828C2DA77 /* secp256k1.h */; settings = {ATTRIBUTES = (Public, ); }; }; 55EC487D71B9E26D1114A0DC0B1EC194 /* field_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 893B88B0FDD456EC06D9EA439B533C4E /* field_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; 56FAF62E27B4754D4C80D249CF932846 /* Exponentiation.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA3EFB3D61AE3DB23638C6E7BC6B167E /* Exponentiation.swift */; }; + 570BE2C5BAE922CC1C6B28817EA858D4 /* Web3+Protocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F106BD4B1B591E027C15E7245F21E36 /* Web3+Protocols.swift */; }; 5718A4EA67229BCA48EA7D5F15B8227A /* crypto_onetimeauth.c in Sources */ = {isa = PBXBuildFile; fileRef = 253DFC3A1FEE42CF9611E53A0A978AF5 /* crypto_onetimeauth.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 5774A8386A8B6307802D23BA45C90BE9 /* hang.m in Sources */ = {isa = PBXBuildFile; fileRef = 35EA06E07FC8ECDE0B57C44B119CCC28 /* hang.m */; }; 57A4EE979E8F6DB6E0D7F17D790664FA /* crypto_verify_16.h in Headers */ = {isa = PBXBuildFile; fileRef = E95554E3DB7FDB53487E27DA5572A987 /* crypto_verify_16.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -173,9 +182,7 @@ 5A61ECF02B253714874524C7972BD609 /* chacha20_ref.c in Sources */ = {isa = PBXBuildFile; fileRef = 75275F850CC12EEE514821DF4FBB5D8F /* chacha20_ref.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 5B105AB434D960466B6257072627FCB0 /* crypto_secretbox.h in Headers */ = {isa = PBXBuildFile; fileRef = BCA9CCB8C8D52DA9566F0E46A5708227 /* crypto_secretbox.h */; settings = {ATTRIBUTES = (Public, ); }; }; 5BDFCC5B31798262237C6A3593914806 /* crypto_core_salsa208.h in Headers */ = {isa = PBXBuildFile; fileRef = 0037FE7A33F6F39662F1CBFD0E37A685 /* crypto_core_salsa208.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5C80D7F87C6ED11051688DC08EBCC304 /* BIP32Keystore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40E94DB15AB89258AE71B598FE8E851D /* BIP32Keystore.swift */; }; 5D3F64C40D6B2C451B587D6DB2FD3DDD /* crypto_onetimeauth.h in Headers */ = {isa = PBXBuildFile; fileRef = F2035E6A1FDC602235FDD7F2C4B77EDC /* crypto_onetimeauth.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5DC586F146527B4ED95A993C27551854 /* Web3+HttpProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 371A08CCB2B15A1160CE7180BB4DCB08 /* Web3+HttpProvider.swift */; }; 5E71E387C3DE1CED5F6347D6A46E732A /* stream_xsalsa20.c in Sources */ = {isa = PBXBuildFile; fileRef = 30DE44CC686BF17B92877C414224A03E /* stream_xsalsa20.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 5E77A3F633DBBD4C39776F6744EDC308 /* SecureBytes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53B19575F0B1B4E2DA16DAF895FC06CF /* SecureBytes.swift */; }; 5E7CF6EDF24C8B62B355D3482C6AB11D /* scalarmult_curve25519.c in Sources */ = {isa = PBXBuildFile; fileRef = 7E939F4187B87B886D2945B9635912D9 /* scalarmult_curve25519.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; @@ -184,10 +191,11 @@ 60DD3FDE6F25F9072D0578B0F064AE2E /* Shifts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40FEDA32083F70C4C8C9D11A88748783 /* Shifts.swift */; }; 61200D01A1855D7920CEF835C8BE00B0 /* DispatchQueue+Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2EBEA7563510808B5B8B6A779042B022 /* DispatchQueue+Alamofire.swift */; }; 61EA94703F236B2C232D997C8FB6B2B3 /* stream_salsa20.h in Headers */ = {isa = PBXBuildFile; fileRef = 147EF2389DA38702AD242E58EB58E02A /* stream_salsa20.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 62C030B268F5DBB87440B59FC968BF1B /* AbstractKeystore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D5DE763E64A1D429D58A28C492FEC82 /* AbstractKeystore.swift */; }; 62F65AD8DC4F0F9610F4B8B4738EC094 /* ServerTrustPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42694D02950791C7E7886B066A1A4BE1 /* ServerTrustPolicy.swift */; }; 632BAB3E253AF15428A580B16B78D08F /* randombytes_salsa20_random.c in Sources */ = {isa = PBXBuildFile; fileRef = F409AD8A4F2597D3F3C8A06763DEEA72 /* randombytes_salsa20_random.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 634158DE515E733D732F841BE34E3DC9 /* u8.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BDDB8391D428412098CA52800D8A4B7 /* u8.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 63A7025F1C7522331C685A500341ED46 /* Web3+Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE09C3C480D2F931CA7CFD5BE1D23EDE /* Web3+Utils.swift */; }; + 6476E89A738B7A4B807CE3D87EB202BF /* BIP39+WordLists.swift in Sources */ = {isa = PBXBuildFile; fileRef = AEBB6FBDE3E39C503846ACADDDD5B970 /* BIP39+WordLists.swift */; }; 64B3E42FE371C8E162B7F15107C5BEDC /* ladder_base.h in Headers */ = {isa = PBXBuildFile; fileRef = 0966C6F7A035F2B84A32BAB4C035B782 /* ladder_base.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6500E42B52F51459015367B51B067FF0 /* AwaitKitExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBB29798ED5AD3589F358950F2AB23E6 /* AwaitKitExtension.swift */; }; 6529A77FE32249A5979CBB1BF73FFAE9 /* GlobalState.m in Sources */ = {isa = PBXBuildFile; fileRef = D47E743AFF718134AD5266D55139AB45 /* GlobalState.m */; }; @@ -197,39 +205,47 @@ 66B1FE7F88099D940FB20B51039490A0 /* crypto_generichash.c in Sources */ = {isa = PBXBuildFile; fileRef = 7FE1E530B3E57772AC21598F4C6AD371 /* crypto_generichash.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 67B1A6C5C6B2C627593782E1BA5AFA88 /* argon2.c in Sources */ = {isa = PBXBuildFile; fileRef = 68A01670FAE205501EFBE550CDB03F45 /* argon2.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 67CFE2F1EB96F6B1347E26706B2269EE /* crypto_scrypt-common.c in Sources */ = {isa = PBXBuildFile; fileRef = 473D8D9A0657B5E63DF71A526A7FC8A4 /* crypto_scrypt-common.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 686177AF47D0613149E93B4CC6253784 /* TransactionSigner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B3EC05C97440515B2A0417D8FABC083 /* TransactionSigner.swift */; }; 68A5F24E2DE5618B90B21626CE7CDFA6 /* hash_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = E644730183A1EA125C509684133A002E /* hash_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; 69086E943FDA1EF21D24289B1D5C60D2 /* BlockCipher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F8D5AA4F55366F8D578967B04A495D8 /* BlockCipher.swift */; }; 69E4627B6E2338D2F586FA167CDC6E95 /* Int+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 82B9EBFEC7D7B5D40E1D64C164D63842 /* Int+Extension.swift */; }; + 6A10466D38FAE78DDD32E9AEF4C4BE43 /* Web3+Wallet.swift in Sources */ = {isa = PBXBuildFile; fileRef = D8FC9649BB9CA55D0099D39302F1A72D /* Web3+Wallet.swift */; }; 6B182DBB8160703465DB01BC5594E185 /* curve25519_ref10.h in Headers */ = {isa = PBXBuildFile; fileRef = C851B26FA99F950791F5CFFD38D52317 /* curve25519_ref10.h */; settings = {ATTRIBUTES = (Public, ); }; }; 6BD9CDDE85B469287A3F2C24E731E716 /* lax_der_parsing.h in Headers */ = {isa = PBXBuildFile; fileRef = 4FB957421D5781C216525F0DFC5A61BA /* lax_der_parsing.h */; settings = {ATTRIBUTES = (Private, ); }; }; 6C5202D8D10FE90280A1AF0A2F6FDDBB /* curve25519_sandy2x.h in Headers */ = {isa = PBXBuildFile; fileRef = D04BCB506D78EEE928195AE5D7CB1362 /* curve25519_sandy2x.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6C715228EFC892AD90E07CE6517BC9D4 /* Checksum.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47AADD5986B7E982EE51081A57C2D118 /* Checksum.swift */; }; + 6D031A2392F59FB648AFA4EB11F5A31E /* Base58.swift in Sources */ = {isa = PBXBuildFile; fileRef = F473978EFD6BDBEF0CC2F422107F0F75 /* Base58.swift */; }; 6EB74E98F6A4FEA3044AC51730B96706 /* crypto_secretbox_xsalsa20poly1305.h in Headers */ = {isa = PBXBuildFile; fileRef = 983565A36767EDA95DFD5FF64D389D39 /* crypto_secretbox_xsalsa20poly1305.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6F1B338E3DF84718C1A2C653917F7A9F /* BigInt-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B74E25AF039DF1CDD40C9C8B955E0C5 /* BigInt-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6F1B338E3DF84718C1A2C653917F7A9F /* BigInt-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = FCB477BD2CE0CB17E4E3FA448CA9ED41 /* BigInt-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 6F5501B927A46CCF4F52A4CD7C1E33EC /* SHA3.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA0959E74FC2DACD09EEC2F39CD9717 /* SHA3.swift */; }; 6FFCEB922EC2EBD0FCD2E931ABE38841 /* pwhash_scryptsalsa208sha256_sse.c in Sources */ = {isa = PBXBuildFile; fileRef = BC1356176B657DA71BCF30A03942951D /* pwhash_scryptsalsa208sha256_sse.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 7069495412710E5B345B7AB715051788 /* AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 35773169A2F84F6C06988BD7BF8C9E1C /* AnyPromise.h */; settings = {ATTRIBUTES = (Public, ); }; }; 7073740DBB60483C88302F708F2F0039 /* CBC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67EBFDCBE3312FC92B2F78A679F9FBC5 /* CBC.swift */; }; - 717DFDFDF7ED1CBBA16DE5A030AEF2D1 /* Web3+JSONRPC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 992A279825E9376E15CDCA70C4D813C5 /* Web3+JSONRPC.swift */; }; + 719318481CFED5E44927296E5D091719 /* String+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC8062B7743D29F613022183AAAF6ACF /* String+Extension.swift */; }; 71B49C873D4119601A58A30430BBC2C7 /* UIViewController+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61845092278E54A5E2F6A47259633982 /* UIViewController+Promise.swift */; }; + 723670CA86C746E860EF55C8F6A4B6DA /* Data+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 898ABA8C547AA09133B7F0443ACE6ED9 /* Data+Extension.swift */; }; 72860544DE4C59E2BD5AEE234E45E611 /* stream_xchacha20.c in Sources */ = {isa = PBXBuildFile; fileRef = 27AE7B97212AD1342B177370ACCD89B8 /* stream_xchacha20.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 729CB093A91CD6012940038A7FC5F2A6 /* kdf_blake2b.c in Sources */ = {isa = PBXBuildFile; fileRef = 218A2BD1B4AB7D50624DBA19F3F4620D /* kdf_blake2b.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 72A2181477D505C9BB1F0B11B87AE025 /* argon2-encoding.c in Sources */ = {isa = PBXBuildFile; fileRef = 6A936531DE70CF53F928DC972DB93E13 /* argon2-encoding.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 7317A49CEDD983B2777E580919D0D5BA /* ABIRecordParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03F853B1CAAEC80B8778ACEBAF1D7288 /* ABIRecordParser.swift */; }; 73B9C996AED49ED7CF8EC2A6F1738059 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7086D0452CB4D5EE4DE2C77047B474AC /* Foundation.framework */; }; - 74DE9C0DBED7C14ED409BFAA17158E73 /* CryptoSwift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 227BB984AF2E26E05926F27B42491B13 /* CryptoSwift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 74DE9C0DBED7C14ED409BFAA17158E73 /* CryptoSwift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = ECBE8FD42E69EC23C8997450AB120DA5 /* CryptoSwift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 750B2133C34DE4414885E0EB1FE3611B /* field_5x52_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = D752988451E23900DB153C8436FC9EC3 /* field_5x52_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; 768B7A65EE64BB80AF1734CD06A776CB /* eckey_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 78A6B6D271DFF38E5560D0E203EF227E /* eckey_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; 76A9421246DE3A074980DDD67B46A8CB /* salsa20_xmm6int-avx2.h in Headers */ = {isa = PBXBuildFile; fileRef = 171F190350102AF13702A6CAE9059B85 /* salsa20_xmm6int-avx2.h */; settings = {ATTRIBUTES = (Project, ); }; }; 76F5A91023B39BCA21BCA46799573B55 /* group_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A0070DAB886DB2ECB0D4EAC1E21050E /* group_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 775F6E4E9BA627EEB8D080C0FCE3AC23 /* KeystoreManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4251C5DD349A96633A288035F1C7D237 /* KeystoreManager.swift */; }; 776B419BEDC8BC7698F6A0B88CF6E798 /* crypto_sign_edwards25519sha512batch.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FE69C0DCF3BCBDB24AB17B41576F1D9 /* crypto_sign_edwards25519sha512batch.h */; settings = {ATTRIBUTES = (Public, ); }; }; 779811AAB014C57EAB3A43BB83A42F9E /* Rabbit+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71392CC967E22395C4516B0830FEB077 /* Rabbit+Foundation.swift */; }; - 78BD119AC7F96090F69EC7F1DD35E8A6 /* BIP39+WordLists.swift in Sources */ = {isa = PBXBuildFile; fileRef = 220F58B2D81F2FE9BE125DAC7D1FF708 /* BIP39+WordLists.swift */; }; - 78BEB5D0BC89A216CE64624050A7328F /* SipHash-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 09D9BF28316A968E4C9623999BC79AC2 /* SipHash-dummy.m */; }; + 784F823C880825EBDA93EFC237995D89 /* ABITypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 637FFA0086F252CAE578A40D3E3454EB /* ABITypes.swift */; }; + 78BEB5D0BC89A216CE64624050A7328F /* SipHash-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0AC5D21A297437198F6DF3E0F449AC46 /* SipHash-dummy.m */; }; 790B502A5E39B63AB1CD72638362BDDD /* CTR.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24B2A605F95D87598F739C80BBA51781 /* CTR.swift */; }; 79151BDAEBA3C297356EF8D125879E7F /* argon2.h in Headers */ = {isa = PBXBuildFile; fileRef = D4C0CC761E95F19CB6B8BC26E2A8935C /* argon2.h */; settings = {ATTRIBUTES = (Project, ); }; }; 797920E244D191E2FC53D819FDC3963B /* BigInt.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB104F4098BC8D36CF306A0695EC54F0 /* BigInt.swift */; }; + 7B16394C88D7CBE9F31B1E9FCEA0A909 /* Web3+Instance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46574394F8698B415C697959835DA5D0 /* Web3+Instance.swift */; }; 7B2715167B2EFE7E7E4F15A1E353893A /* hash_sha256.c in Sources */ = {isa = PBXBuildFile; fileRef = E4DBBE54EE2A1A799EECE621090537A7 /* hash_sha256.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 7B5FE28C7EA4122B0598738E54DBEBD8 /* SessionDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = A871058396F025233D334EAAFD03DAEF /* SessionDelegate.swift */; }; + 7B8B890C6D2AC9971DA6383A7A730A76 /* EthereumKeystoreV3.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36D3265CF0B90338C05E12A66D18F762 /* EthereumKeystoreV3.swift */; }; 7B94A2829816E6318BEA7C751ED0A4E4 /* keypair.c in Sources */ = {isa = PBXBuildFile; fileRef = DDAB8BF4FFDC29E234C36708C3685699 /* keypair.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 7BE518B7E49B3BCA8E80C23E9584402D /* String Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 695E1F76355D5D3A04712CF9EDDD5B41 /* String Conversion.swift */; }; 7C4FE99E01C8A635B3CE77F05B74B2DA /* PKCS7.swift in Sources */ = {isa = PBXBuildFile; fileRef = 28572FB2D0CC50AD4DEB070566A1D4CF /* PKCS7.swift */; }; @@ -237,7 +253,7 @@ 7C93878B47BE664097F3A63B89D1A862 /* RandomAccessCryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = C12F3467DFC471E25E86A14439C1BB2D /* RandomAccessCryptor.swift */; }; 7D8CC01E8C9EFFF9F4D65406CDE0AB66 /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCD2891023ADB9EDE410ACBF94D366A6 /* Result.swift */; }; 7DF98DF4ECF09A73ABE5B1092628461F /* PCBC.swift in Sources */ = {isa = PBXBuildFile; fileRef = EDC35F1EB31444B18DDAD1F94E3FAF5C /* PCBC.swift */; }; - 7E38C53CC00067C7A5FA953B9261BF29 /* CryptoSwift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0C286AB92F3AA0BD3C4F0DC12672D9B3 /* CryptoSwift-dummy.m */; }; + 7E38C53CC00067C7A5FA953B9261BF29 /* CryptoSwift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1908A7DD3EF57C1D1CD938AE24C8C630 /* CryptoSwift-dummy.m */; }; 7E88D4D07AD46CFA074E4616C6AC35B9 /* poly1305_donna.h in Headers */ = {isa = PBXBuildFile; fileRef = 95941917130B92356DD2718DA3C3BF88 /* poly1305_donna.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7EC64EA59B4546A621C6910C388218D0 /* Alamofire+Synchronous.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0DA8F41C11E734C33AA118F2E5C00BBD /* Alamofire+Synchronous.swift */; }; 7EF0576BEA057E75678C464360F2FF53 /* sign_ed25519.c in Sources */ = {isa = PBXBuildFile; fileRef = EF4ED220FCEBF6E3E359060FF9FDAD60 /* sign_ed25519.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; @@ -247,12 +263,12 @@ 806F3FF1CA7CDA44033A7C4AFD61CDD5 /* NSNotificationCenter+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AD971776E0DB2FE1B99A2561174B570 /* NSNotificationCenter+AnyPromise.h */; settings = {ATTRIBUTES = (Public, ); }; }; 8075E30AE456E5E30B5EBB37F2099E84 /* afterlife.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2054ED84487D364D6067E3C105978799 /* afterlife.swift */; }; 80763ECA711BA3777C09B81B21E288C8 /* ChaCha20.swift in Sources */ = {isa = PBXBuildFile; fileRef = C6A7A481C2D995D3E6ED8F2D26DFED1D /* ChaCha20.swift */; }; - 80A810BC8207A5DE44E7CFBD4A4F2B04 /* SipHash-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B236A4C3F459984CEE8AD4A1B854B78 /* SipHash-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 80A810BC8207A5DE44E7CFBD4A4F2B04 /* SipHash-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = E639D0DDDE2123200AAF51AF28A3F655 /* SipHash-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 8101EDCBF0515FE2355097B75EACF81B /* Data Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = FB47C1C982CDD7A0F2F60C67833AFF05 /* Data Conversion.swift */; }; 811E0C8A7497C3FFA507A63FF5C1284E /* utils.c in Sources */ = {isa = PBXBuildFile; fileRef = 307C6CDEF0CC27ABE1C7A6B1E47C6880 /* utils.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 8131E626B940699512588EDA2CAEBD34 /* UInt64+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5374FB4890D1D143D5D67DD358E8B0BA /* UInt64+Extension.swift */; }; 822FEF97F186DAE03875D8BC8683AA85 /* scalar_8x32_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 233F477CAF0141C34324F581BD439DA5 /* scalar_8x32_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 83AC0B1406FDCB6740F11DA1E7EB6C02 /* libsodium-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 767DB7815406A6FA2E627A14295B74F2 /* libsodium-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 83AC0B1406FDCB6740F11DA1E7EB6C02 /* libsodium-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 2EB9781FDE9935DA7B536217063D56E8 /* libsodium-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 848B237EB31C02719899A90111FB08DA /* HMAC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45A290F280A562C82146B8EECADAEF41 /* HMAC.swift */; }; 84D122A258D1E6AA7C0EFE87B942E0A4 /* secp256k1_ios.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6B5133A667C42BE850835F330CE1ABE5 /* secp256k1_ios.framework */; }; 8531699A416CD1D208BD055FBD0048E2 /* crypto_auth.h in Headers */ = {isa = PBXBuildFile; fileRef = C7322CC31CA3F7538D03E73600D7C375 /* crypto_auth.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -264,27 +280,29 @@ 87FAA6BD98D8B8712821DB532CDFF447 /* AES.Cryptors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42FF4601E2E74054139A0374840E9EED /* AES.Cryptors.swift */; }; 880BEF301A0F2AD68B7FE2436C9BE851 /* blake2b-compress-sse41.c in Sources */ = {isa = PBXBuildFile; fileRef = A3C08303BE704DBDC7F68650DA146C09 /* blake2b-compress-sse41.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 88359A85A4D14EAC3D0277DD48A16C79 /* core_hsalsa20.c in Sources */ = {isa = PBXBuildFile; fileRef = 4352165E2BDE609A8B418EFC9A703788 /* core_hsalsa20.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 883A837F36EB82109A3B61B385172DB0 /* Alamofire-Synchronous-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B17CAFD5954BB1D285B628A0D8F21CE /* Alamofire-Synchronous-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 883A837F36EB82109A3B61B385172DB0 /* Alamofire-Synchronous-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = CA0F9E7477A1AF23FF18D6C38299B84C /* Alamofire-Synchronous-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 88C29E86D1FAE5C58AC0B281EA370675 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7086D0452CB4D5EE4DE2C77047B474AC /* Foundation.framework */; }; 89576682721D776432E16F3E664DD3C6 /* scalarmult_curve25519.h in Headers */ = {isa = PBXBuildFile; fileRef = F826A5DA305ADE7F626102F8D9639AAE /* scalarmult_curve25519.h */; settings = {ATTRIBUTES = (Project, ); }; }; 89CFF9870692F4AF533A77583BBE8DDC /* ladder.h in Headers */ = {isa = PBXBuildFile; fileRef = C51F27D1103E437539E3B92A84BBA529 /* ladder.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 89E58490CCED5B555A34DAA99D746819 /* EthereumAddress.swift in Sources */ = {isa = PBXBuildFile; fileRef = 149F2AE051375EEA7CB06B9A5151E83D /* EthereumAddress.swift */; }; 8A2CA2AAEBC81A97D3A0CC7C2C81A449 /* Error.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D60816A4884F3513FABF94D8EE82232 /* Error.swift */; }; 8A9F3BD25534A980BD62555DC2E92ABA /* blake2b-compress-sse41.h in Headers */ = {isa = PBXBuildFile; fileRef = 19B8EB0F25553068A1F5283B98BB6415 /* blake2b-compress-sse41.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8B42243A8704ABA44B69E40B0E384382 /* crypto_box_curve25519xsalsa20poly1305.h in Headers */ = {isa = PBXBuildFile; fileRef = 251635AA24663F90C43FEEADED5BB66B /* crypto_box_curve25519xsalsa20poly1305.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8BCA4EADD349B6A9B858EAC855F1D8FC /* PromiseKit-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 342CDC0ABCA2771B17C4547C86604D87 /* PromiseKit-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8BCA4EADD349B6A9B858EAC855F1D8FC /* PromiseKit-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 27A772F87A74E954473027ACB713F5F3 /* PromiseKit-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 8C765416F809CD5996AC3BDEB1586C88 /* crypto_pwhash_argon2i.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C73B75B0FC461BDD3A480FD8F0543B5 /* crypto_pwhash_argon2i.h */; settings = {ATTRIBUTES = (Public, ); }; }; 8D5D2D10952495742D6CD55FD7948FD9 /* wrap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 587515A214B06B64B046C803ED592B6E /* wrap.swift */; }; 8DB37AEC6B7E4E688D670A13A8710B23 /* scalar_low.h in Headers */ = {isa = PBXBuildFile; fileRef = 7719CB9087CB3FC802BD0A42AD9782E6 /* scalar_low.h */; settings = {ATTRIBUTES = (Private, ); }; }; 8DDD3C22B0C822BF5A4976BBD6E7F7EA /* scalar_4x64.h in Headers */ = {isa = PBXBuildFile; fileRef = 648FEBB716E4C7A29B7D6BE017F7DEB8 /* scalar_4x64.h */; settings = {ATTRIBUTES = (Private, ); }; }; 8E4B9B0558704F04DE3CB06B4F08AC9E /* salsa20_ref.h in Headers */ = {isa = PBXBuildFile; fileRef = 8EB0C9BB080362B54B8FCD58E248E2D5 /* salsa20_ref.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8E9D8397BA554CE359B42FBAE1BCBD08 /* SHA2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7291BA62A7BDB59C057922743CE056F4 /* SHA2.swift */; }; - 8ED5B72B66FB99A359A8EBAAAD4C2C12 /* libsodium-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4EDA8B19DFBCB128C6DACC8B21A01A7F /* libsodium-dummy.m */; }; + 8ED5B72B66FB99A359A8EBAAAD4C2C12 /* libsodium-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 04EBF1BE3A127997E9CA4B85B28DE443 /* libsodium-dummy.m */; }; 8F175E58E49A2C412A6F9257E1F237DB /* Square Root.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23D78E8997450343D447490799F42F97 /* Square Root.swift */; }; 908054D56AD36E5BB32382DD09D2F67E /* crypto_aead_chacha20poly1305.h in Headers */ = {isa = PBXBuildFile; fileRef = 124463673B68DF76691C380FD0DEDB3F /* crypto_aead_chacha20poly1305.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9097904ADE8D98667C845572F76971D5 /* EthereumTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B9A9A6287A7CC3E9C1ABE43EA77AB19 /* EthereumTransaction.swift */; }; 91289928E1E36707B9E09E5E6716AC9C /* blake2b-long.h in Headers */ = {isa = PBXBuildFile; fileRef = DA4D751297D0763F368ED4EAC7996555 /* blake2b-long.h */; settings = {ATTRIBUTES = (Project, ); }; }; 91366A249194B4899247055432900843 /* randombytes.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B41393F2F17EE5349B9B778ACD5B057 /* randombytes.h */; settings = {ATTRIBUTES = (Public, ); }; }; 919E4D4FC5CE47800969723DCD6AC02A /* randombytes_nativeclient.c in Sources */ = {isa = PBXBuildFile; fileRef = 17A831420CB8729B4F2562F804B8078C /* randombytes_nativeclient.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 91CA4BC71C911FAC7CAD0D6A98908958 /* KeystoreV3JSONStructure.swift in Sources */ = {isa = PBXBuildFile; fileRef = D235A11F021E91E062ADBEC6DDD2583A /* KeystoreV3JSONStructure.swift */; }; + 9285C6C3CA25E5525BD8D1859573AA4E /* BIP39.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1574A40DF80612B080ADD5A891AB4F6 /* BIP39.swift */; }; 9309BA23AAB854203D0B4945EEB4C187 /* AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = CB19EAA4DC7A2C4F3E785E355A963BF9 /* AnyPromise.m */; }; 934B3EA778B62DB2D5D8F0B02777E3F5 /* BlockModeWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 57F1DF4F1A382223CC2E8DDA0333D2C8 /* BlockModeWorker.swift */; }; 93AC8064A309B0FC7A88168C93E77F93 /* scratch.h in Headers */ = {isa = PBXBuildFile; fileRef = 82847102EAAA24D5B109984C915414C8 /* scratch.h */; settings = {ATTRIBUTES = (Private, ); }; }; @@ -296,17 +314,15 @@ 960978CE23EE23DC0AF7E5954D6CB2A3 /* CFB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D382297D5E7DC31A2E278D4680C9CB6 /* CFB.swift */; }; 9676A00BD95FA0AEDAA22F8FC72C622C /* fe51_namespace.h in Headers */ = {isa = PBXBuildFile; fileRef = CE602E3EBCDF4F98FBAC9DEE02279055 /* fe51_namespace.h */; settings = {ATTRIBUTES = (Project, ); }; }; 96B6DEFB38590AB92CE6DC78B6F9A34C /* chacha20_dolbeau-ssse3.c in Sources */ = {isa = PBXBuildFile; fileRef = 83AED31596AE455F92FC39B6F726C0EB /* chacha20_dolbeau-ssse3.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 96DF20C80740AE9E6F12B0A6C08EE5D5 /* Pods-web3swiftExample-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D9374F939010F3A16553466556950076 /* Pods-web3swiftExample-dummy.m */; }; + 96DF20C80740AE9E6F12B0A6C08EE5D5 /* Pods-web3swiftExample-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7ED86A9CBDB836720BB4CF0BAF693508 /* Pods-web3swiftExample-dummy.m */; }; 97167F000FA1BCF879A118227E375F2B /* chacha20_dolbeau-avx2.h in Headers */ = {isa = PBXBuildFile; fileRef = 13E43880BCB5DEB0C2FF030776F480E4 /* chacha20_dolbeau-avx2.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9737F1D46729D515F3F2CC3C56D103F1 /* PMKFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = D8A498F790976EB940080AB773D3B63D /* PMKFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; }; 974F0D35B94D11DCBCAEF029A85D0895 /* stream_salsa20.c in Sources */ = {isa = PBXBuildFile; fileRef = C141000D4DF92F0B66B2DDE7522A7343 /* stream_salsa20.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 97B2B4AFFA86BA7E0F85F53DC0F0B466 /* Collection+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8337EBAE079605EAF3B93FDCBBE2F79 /* Collection+Extension.swift */; }; 98048FB1277EACAB001EBFBD148F9511 /* blake2b-ref.c in Sources */ = {isa = PBXBuildFile; fileRef = 84DF494334B4A2252D778FB33C425F9D /* blake2b-ref.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 985006663B68A2E48AA8C9E882AAB41A /* KeystoreManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B0E93721ED60B311DE632AF7E5CA387 /* KeystoreManager.swift */; }; 9918A0C7FD602ED3988D5784CFA70782 /* stream_aes128ctr.c in Sources */ = {isa = PBXBuildFile; fileRef = EF4F41A26B2690AB77D21646C7744BDD /* stream_aes128ctr.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 995F331F1AD175699434CBF4A76FABB3 /* poly1305_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = 434E1979E05ADFA3D0D113ED39D8A615 /* poly1305_sse2.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 9AFAB71D972580FF8A1C680954DDF4AB /* Words and Bits.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B52795E380E76C28B9A308424766B56 /* Words and Bits.swift */; }; - 9B2FDC4A91FA867E1EE12DC3015E27DA /* EthereumKeystoreV3.swift in Sources */ = {isa = PBXBuildFile; fileRef = A0A8FFCBF073D8840E283A3223AE42BF /* EthereumKeystoreV3.swift */; }; 9B43BA7CF53FFCF36179C759B8F3C10C /* consts.h in Headers */ = {isa = PBXBuildFile; fileRef = 02653CC651FE985A495D8B2951C96CC2 /* consts.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9B888D8946DF940A9CA34BD1B4F31854 /* common.h in Headers */ = {isa = PBXBuildFile; fileRef = 52476A8624026BBE0EA759F8564C64CA /* common.h */; settings = {ATTRIBUTES = (Public, ); }; }; 9BC7012D56E172ADDEC4296E6FB8DCFC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7086D0452CB4D5EE4DE2C77047B474AC /* Foundation.framework */; }; @@ -322,38 +338,39 @@ 9FB787A8B3AE62C4B2138CE330C15922 /* obsolete.c in Sources */ = {isa = PBXBuildFile; fileRef = D9B18A2E0D6FDCD2E449CFC81FD0CED3 /* obsolete.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; A03E794FE9037A6BDD8BF593E605B4E3 /* Codable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85DE9C9E4D5D19E8E1EB15AA782A844F /* Codable.swift */; }; A08E5E024B753CBA483033FE8B53C5AF /* libsodium.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1B71870E4067BF9EEA6BD00447CCAAEE /* libsodium.framework */; }; - A0F3D2FC3D885C648AD8A503856F9C89 /* Dictionary+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02EFAA4DD141F0E7083B2368A41C17F7 /* Dictionary+Extension.swift */; }; A143DDE978DF66CDADE266F58C532F0E /* poly1305_donna64.h in Headers */ = {isa = PBXBuildFile; fileRef = 025B5305F466991A260A325F35174A1A /* poly1305_donna64.h */; settings = {ATTRIBUTES = (Project, ); }; }; A1DAF32197BC5D216E386115A642F6DF /* blamka-round-ssse3.h in Headers */ = {isa = PBXBuildFile; fileRef = E7B7744E33BE1F8A905C41604799BB89 /* blamka-round-ssse3.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A25F21044DC6A22E7FEB680114E63E04 /* AbstractSigner.swift in Sources */ = {isa = PBXBuildFile; fileRef = EF34FDB15770AAED47330F7BEAF43A20 /* AbstractSigner.swift */; }; A2997A2828E1093719E9DE73D5264E62 /* UIView+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = CBD04E8FB93BD218587E406A530A7DE4 /* UIView+AnyPromise.h */; settings = {ATTRIBUTES = (Public, ); }; }; A2A6F71B727312BD45CC7A4AAD7B0AB7 /* NetworkReachabilityManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46A6E75C8634EFC2F782454D00544D63 /* NetworkReachabilityManager.swift */; }; A300671F55DD95AE86819358B2C6DE32 /* Cryptors.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADAB36CF15B3B17E6243A35A29C81D52 /* Cryptors.swift */; }; - A37D2139B9C1B7E3E650815792C9E272 /* Web3+Contract.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE99C57CB377DABAD854E794542CF238 /* Web3+Contract.swift */; }; A3A355D71BAC02F3F3AD8EBAF2357497 /* secretbox_xchacha20poly1305.c in Sources */ = {isa = PBXBuildFile; fileRef = 2F521C3CD2FD55DAFD1B5979B7FD7BDC /* secretbox_xchacha20poly1305.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; A3FB6F24C037D1DA41DD32384EA4F3DE /* stream_chacha20.c in Sources */ = {isa = PBXBuildFile; fileRef = FB820F73824419220CD42A47AF7AA621 /* stream_chacha20.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; A4259E916DC71A4543E51214268C3ECB /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7086D0452CB4D5EE4DE2C77047B474AC /* Foundation.framework */; }; A526C8E2F2F1F7F33D5D54868BF90EF3 /* shorthash_siphashx24_ref.c in Sources */ = {isa = PBXBuildFile; fileRef = 5CFD3E18B52A69B96D0F58B19A3CC57A /* shorthash_siphashx24_ref.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + A5271C7DA12FA09986142D0FFC18C3E5 /* NSRegularExpressionExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8045331C4402645985132EBF49BEF91C /* NSRegularExpressionExtension.swift */; }; + A5CAE26139016A19E3FE68BBE0DEF4D3 /* KeystoreV3JSONStructure.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2476FC29E2F6F127D1DAEAB24992C10 /* KeystoreV3JSONStructure.swift */; }; A68674DADD967A87F2F8E4AD14752AA4 /* NSURLSession+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = D4C8AD2A25A065BB6ADBDA6C31A1C81C /* NSURLSession+Promise.swift */; }; A6D5FC7F3A79BA39362E85A2D4D1B949 /* crypto_core_salsa2012.h in Headers */ = {isa = PBXBuildFile; fileRef = 9358A8A46D1215EAD0C0DBD5612943D5 /* crypto_core_salsa2012.h */; settings = {ATTRIBUTES = (Public, ); }; }; A71589232624DF9F930BDF1C678C73AB /* crypto_auth.c in Sources */ = {isa = PBXBuildFile; fileRef = FA7A8241434EE9786732CDC76DC662A2 /* crypto_auth.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; A7E4A8B70BC86095B0A77D02EE19A93A /* crypto_hash.c in Sources */ = {isa = PBXBuildFile; fileRef = 693235652C58571A78EE769A3F750C3B /* crypto_hash.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; A7F9E36994D4A2EEF4CF6A14267F1509 /* field_10x26.h in Headers */ = {isa = PBXBuildFile; fileRef = C2B5DB623EBF5640AA3F89136A429C42 /* field_10x26.h */; settings = {ATTRIBUTES = (Private, ); }; }; A85F8A5780775D0632ADC51CAABACF94 /* crypto_hash_sha256.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AC46412ED8A67874B0701AA5AFA88CE /* crypto_hash_sha256.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A9EEEA7477981DEEBC72432DE9990A4B /* Alamofire-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AFEB0DC11DAF830A23CFF736F60CF54 /* Alamofire-dummy.m */; }; + A9EEEA7477981DEEBC72432DE9990A4B /* Alamofire-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0FAC4001D8385117887B622C5C637A42 /* Alamofire-dummy.m */; }; + AA3C03164D2F765FC1941806E696A378 /* AbstractKeystore.swift in Sources */ = {isa = PBXBuildFile; fileRef = ACC6E789154ED08101D28C078464FD2C /* AbstractKeystore.swift */; }; AA5E19698BE419E856D5AF08113144A1 /* ecmult_gen_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 011DD50976B57AF73F401E3955A10F09 /* ecmult_gen_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; AA6B7BB87A9410508F40A0CD912A47A4 /* NSNotificationCenter+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = AFACB0F867C7597F5A258CC8CF6CE80D /* NSNotificationCenter+AnyPromise.m */; }; ABDDF4421E3BEEA21F22577F0B3DD8D7 /* Integer Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B8EFB3F1956492BB1CD1B1DF8052341 /* Integer Conversion.swift */; }; - AC8F0F0813E6A9ED211069B19A76CB37 /* Array+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6B75457C56ECE9B5EFBD24516FACD41F /* Array+Extension.swift */; }; AD47C6C9BB245C328CD942220AC3F961 /* secp256k1_ecdh.h in Headers */ = {isa = PBXBuildFile; fileRef = 221C8A742A20C4264D08514F31CE32B7 /* secp256k1_ecdh.h */; settings = {ATTRIBUTES = (Public, ); }; }; ADA8CE4149AF0319A0BD2E21C2B76267 /* crypto_aead_aes256gcm.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F415D03E35216056CD9AD986A67B2C1 /* crypto_aead_aes256gcm.h */; settings = {ATTRIBUTES = (Public, ); }; }; ADCD43A71973724922E1B1D750C17651 /* core_salsa_ref.c in Sources */ = {isa = PBXBuildFile; fileRef = F6DA4559CF7F9343C59FF35AC0DC6656 /* core_salsa_ref.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; AE1EF48399533730D0066E04B22CA2D6 /* SessionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6967B8AE5E636A1B4EF5DE94DC1A45CD /* SessionManager.swift */; }; AEAE711843C6B302C49E1F868011A302 /* field_5x52_int128_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 704C024805566CD729790C80B68A0B3D /* field_5x52_int128_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; - AFF699344629B51F0966FFC3C4CBB418 /* Pods-web3swiftExample-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F3B2EF3C001ADBF8992D6000C82E1C9F /* Pods-web3swiftExample-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AFF699344629B51F0966FFC3C4CBB418 /* Pods-web3swiftExample-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B472C5B4A2DC91693D586ED875901035 /* Pods-web3swiftExample-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; B05B0F18A36554324D980F43E198A7DA /* ecmult_const_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B93998062FAFA547B53EBB58756B7EF /* ecmult_const_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; B11800ACC2FFBA1790290BA1172BCCFB /* randombytes.c in Sources */ = {isa = PBXBuildFile; fileRef = 1BB798DB07E577E6312642529E3C80CD /* randombytes.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; B2F16B6F4D5D5944929BF9B416772565 /* Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DB7C8CA1BFC474D2F05C472191DCF6B /* Utils.swift */; }; - B3C686B35A7544D05C4057738393EC32 /* AwaitKit-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C070AD6B4B082F0B8C93C03FA18F118 /* AwaitKit-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B3C686B35A7544D05C4057738393EC32 /* AwaitKit-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F15503707D27B37F2B99B97C18E32AD /* AwaitKit-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; B451097C5BB2BA8D7B45CAC5B69F2459 /* crypto_generichash_blake2b.h in Headers */ = {isa = PBXBuildFile; fileRef = A4FBC01FC70DDEB589F5729C04560FCC /* crypto_generichash_blake2b.h */; settings = {ATTRIBUTES = (Public, ); }; }; B472F83C4B7B0343ED9028975A84EC89 /* lax_der_parsing.c in Sources */ = {isa = PBXBuildFile; fileRef = 1ADA9DEF18F5279ECB76868A1771908A /* lax_der_parsing.c */; }; B4A899A69FE05A6BB6D7CB39935975E1 /* blake2b-load-sse41.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D813E43087878E3215B3C368F16A26D /* blake2b-load-sse41.h */; settings = {ATTRIBUTES = (Project, ); }; }; @@ -363,10 +380,8 @@ B6E68043251E50D7FB8FB967BAB22CD0 /* Process+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EE42243A951876055DC9A4D8EEE0753 /* Process+Promise.swift */; }; B707C76C10238F00B5C7B92E7773B28F /* eckey.h in Headers */ = {isa = PBXBuildFile; fileRef = C532999B9B44AFC2336775915A559794 /* eckey.h */; settings = {ATTRIBUTES = (Private, ); }; }; B720E820753C02585B13AEFA3E05E315 /* crypto_stream.h in Headers */ = {isa = PBXBuildFile; fileRef = 58C5ED66450F763E67C945B2E3ECF439 /* crypto_stream.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B7B3DEF588D0F02A83BF1B9205AB0A97 /* Data+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1995CAECE526C4AE476F0166D223412 /* Data+Extension.swift */; }; B81CDE4E17BD882B639A529859EA7232 /* blake2b-compress-ssse3.h in Headers */ = {isa = PBXBuildFile; fileRef = A8819022CE495D16DD8AD35860927895 /* blake2b-compress-ssse3.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B83CCB3CD8A1B0F2B4CD298ED721D71A /* AwaitKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 478A05A7EBC85EB4E7E0E4EB9BB28FAE /* AwaitKit-dummy.m */; }; - B847D24BD91E7CA4E4EE07622C5B6144 /* Contract.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78ACB7AE9E266C32AD7A2EC4ECCC7912 /* Contract.swift */; }; + B83CCB3CD8A1B0F2B4CD298ED721D71A /* AwaitKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 98B5731A84A40DA7DC679486C52C8BFD /* AwaitKit-dummy.m */; }; B856B5034004C190E8B2B8A2F038527D /* UInt32+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65C48F07C9554E6D77405D7509B7991C /* UInt32+Extension.swift */; }; B860CBC16C94EA0E1D3A8920567940B9 /* Bitwise Ops.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A05C54735B8D2DC8558CC0810A4D232 /* Bitwise Ops.swift */; }; B8A194AE3F08EA7E57496C3B4FB08B6E /* xor_afternm_aes128ctr.c in Sources */ = {isa = PBXBuildFile; fileRef = 9439296BAB27817E0E8C1F023584B984 /* xor_afternm_aes128ctr.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; @@ -380,6 +395,7 @@ B95A2B8FA25CAC50E9734F1CB8C5BEB0 /* crypto_pwhash.h in Headers */ = {isa = PBXBuildFile; fileRef = 880901527E506DD818BB4AC5ACD0F194 /* crypto_pwhash.h */; settings = {ATTRIBUTES = (Public, ); }; }; B96F30B5BC04D76D9369D724E97190F4 /* secp256k1_ios.h in Headers */ = {isa = PBXBuildFile; fileRef = D4957A314DB834BADDFEC599AB8EEAAB /* secp256k1_ios.h */; settings = {ATTRIBUTES = (Private, ); }; }; BA0D7CC3B07F02BF085E5CACAFFF57F9 /* ecmult_gen.h in Headers */ = {isa = PBXBuildFile; fileRef = 1855FD520F2DBCA9435B19E02853CFBC /* ecmult_gen.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BA3FDEBC88E9B3CB536211E355DCF342 /* Web3+Eth.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22975962B73A95743B76D1CD431D50CB /* Web3+Eth.swift */; }; BA4483921D788A82AD3C644680BD617D /* basic-config.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B179274DD8754B7E8F2EF29361D5C81 /* basic-config.h */; settings = {ATTRIBUTES = (Private, ); }; }; BA5D0812B52994415A498B3606373582 /* u1.h in Headers */ = {isa = PBXBuildFile; fileRef = 362B24BAAC664348D3160638A4355B1C /* u1.h */; settings = {ATTRIBUTES = (Project, ); }; }; BBEFE2F9CEB73DC7BD97FFA66A0D9D4F /* Validation.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0191CC0407058C104E8513DBB41AC43 /* Validation.swift */; }; @@ -387,10 +403,10 @@ BCD9678279F51EEBFBDD9CAC99CC943A /* ecmult_static_context.h in Headers */ = {isa = PBXBuildFile; fileRef = AD087D17D800CED071CD3F52AE99C5B5 /* ecmult_static_context.h */; settings = {ATTRIBUTES = (Private, ); }; }; BD55173B7A37CDC519B0F34761FF4419 /* secretbox_xsalsa20poly1305.c in Sources */ = {isa = PBXBuildFile; fileRef = 2EFF27DD5CA1111D549D03635B329007 /* secretbox_xsalsa20poly1305.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; BD7F3C923AC47D15F51AD07D359BBDA4 /* Array+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = B80E951F93EF4A4FC6703C08C33796F6 /* Array+Extension.swift */; }; + BE457C67E3CDB3FDE1CB79A27BC17CC4 /* Web3+HttpProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59C35828F9F9F253A5A0CE878AA04499 /* Web3+HttpProvider.swift */; }; BE5C67A07E289FE1F9BE27335B159997 /* ParameterEncoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = A935F75CD8AD442F9C0B48D0BBAA178C /* ParameterEncoding.swift */; }; BE9A022C0D93DB3E10116EF512B408D7 /* crypto_verify_64.h in Headers */ = {isa = PBXBuildFile; fileRef = 676F8633CA6ABA5EF03B6B44A94BFCE2 /* crypto_verify_64.h */; settings = {ATTRIBUTES = (Public, ); }; }; BF68453E0A6C85F7A6ED90159629FB40 /* ed25519_ref10.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AE22CCD8AE04DB0EE42AFF19F679A93 /* ed25519_ref10.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C0409BF207EDC06D3FDF88EF8BAD2A4E /* Web3.swift in Sources */ = {isa = PBXBuildFile; fileRef = 39EA1D951B36DA2E01C1C660ECFA1958 /* Web3.swift */; }; C106C9D0D84773B90D1350E884BC8C0B /* crypto_box_curve25519xchacha20poly1305.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D2B31B7C7DB36DC4810C7715CF9A5D5 /* crypto_box_curve25519xchacha20poly1305.h */; settings = {ATTRIBUTES = (Public, ); }; }; C13CC2A11A4EAE37A097665914030518 /* SipHasher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 69B937732822BE36210DAC86489CF250 /* SipHasher.swift */; }; C14502EA132126EEA32E9FB3C1B7DE7F /* crypto_pwhash.c in Sources */ = {isa = PBXBuildFile; fileRef = 0C84202565E092EAC142208DBEC82C3D /* crypto_pwhash.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; @@ -414,6 +430,7 @@ C858774035B92D95ADA3CCFD3C37E90F /* fe51.h in Headers */ = {isa = PBXBuildFile; fileRef = 15F0FFD14869C1AD1986707FD741DBF4 /* fe51.h */; settings = {ATTRIBUTES = (Project, ); }; }; C91B8EFA1B0B2110848841893335BEB9 /* randombytes_salsa20_random.h in Headers */ = {isa = PBXBuildFile; fileRef = 2592188E989B10EBB443FB1B538E1A3F /* randombytes_salsa20_random.h */; settings = {ATTRIBUTES = (Public, ); }; }; C953641D50BEADDEC1E341FE87247AF8 /* HMAC+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = A70D7DD76B3A3C68F69D67A9C3841B38 /* HMAC+Foundation.swift */; }; + CA410284104AA4CFF12EC3F428FF36E3 /* Array+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC0B55B8A15BB6D4D3D7785F982A573D /* Array+Extension.swift */; }; CA44F79721F689C434DEFA89D31ECD53 /* Blowfish+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9627595EB14628F575BD0F16998456A9 /* Blowfish+Foundation.swift */; }; CAA3F0F3507AB5798B490B49D95E3809 /* DigestType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6792326506BB353111AD07F88161B2FE /* DigestType.swift */; }; CAE7440942DBFA11A01268B40AC51952 /* main_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = E6119871B7567B1F45D699176EBD219F /* main_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; @@ -421,16 +438,13 @@ CB6D60925223897FFA2662667DF83E8A /* Response.swift in Sources */ = {isa = PBXBuildFile; fileRef = A570D5C4EC34CF0BF2C161E2BF3D5655 /* Response.swift */; }; CBBE1B5655CD83A70E2856B7D33D3103 /* PBKDF1.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65D86D292A393EFC79914CC1FBD0B7CC /* PBKDF1.swift */; }; CD11E1CA4EC90EB672AB603B3BD82EAE /* ZeroPadding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95F84F0832E11E6C3FF3ABD20F5F15BE /* ZeroPadding.swift */; }; - CDDF2379BA6ABE42FD8A77C49DFB8FD0 /* Web3Swift+AbstractSigner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6089F3E0B434CBA9013A5CB6A501F7BD /* Web3Swift+AbstractSigner.swift */; }; CDEC4EEFBFF1D666750F5F84B86B9FD5 /* crypto_kx.h in Headers */ = {isa = PBXBuildFile; fileRef = B06062D796FDC117CDDAE9075FCF2521 /* crypto_kx.h */; settings = {ATTRIBUTES = (Public, ); }; }; D05DA78C0B928B624B3F2031FDB16C0A /* randombytes_sysrandom.h in Headers */ = {isa = PBXBuildFile; fileRef = C755C75762465E411A1B09DBB662760E /* randombytes_sysrandom.h */; settings = {ATTRIBUTES = (Public, ); }; }; D0AE2B051E26CC5B262406ECDE6C3C55 /* open.c in Sources */ = {isa = PBXBuildFile; fileRef = FDC1EC95EAD1359B926BC45957AA839B /* open.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; D0CC6EF77721FDC29F558F2B6ACEEDCF /* Data+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D187DC321DF97DB1D2D177E948762D9 /* Data+Extension.swift */; }; - D223723FF17A186A478908E4BD07010E /* ABIDecoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C7CFBD3BE32A61177AFB18517D5F768 /* ABIDecoder.swift */; }; + D139BC9469872F0A4248BAF366A59542 /* LibSecp256k1Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = F23E4CB3819BBAB7A4C42E0F2E718783 /* LibSecp256k1Extension.swift */; }; D4015B4A445FD523E518B202BA91B5EA /* SipHash.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 208542E80AC03AA50D4C409803861A46 /* SipHash.framework */; }; D5453909DD216F4AFF596850A3DE4FCF /* poly1305_donna.c in Sources */ = {isa = PBXBuildFile; fileRef = 3641941FC1E6A99753D268CB974F5162 /* poly1305_donna.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - D55641F1FE0F6EBBC0526BC17E283D6F /* EthereumTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 400027F5D6E91FB31EBC691425536C66 /* EthereumTransaction.swift */; }; - D5D4A458619A6F516BE6C72F5F26DF24 /* Web3+Structures.swift in Sources */ = {isa = PBXBuildFile; fileRef = 079347A759F0CCDAE9D88D7BD66F0D43 /* Web3+Structures.swift */; }; D68EBBD4056AE13BE83F9BAB86F3B1BA /* SipHash.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 208542E80AC03AA50D4C409803861A46 /* SipHash.framework */; }; D724AFC608929E4DCFA567F0F927224F /* ecmult.h in Headers */ = {isa = PBXBuildFile; fileRef = EAA41C9BA4806A5E176009C2CC8E4A2E /* ecmult.h */; settings = {ATTRIBUTES = (Private, ); }; }; D7CA1999F4D69F97C9042949C5E02286 /* Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = F633E6319C5157EE2178F9C60D78A4AD /* Operators.swift */; }; @@ -438,23 +452,21 @@ D8C0D8B8F2272C497D78E490B1F333F7 /* GCD.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9D566F1E5145FC5681FFFF942382A41 /* GCD.swift */; }; D8C95AC92204950B7EE6DFBDC716D797 /* crypto_core_salsa20.h in Headers */ = {isa = PBXBuildFile; fileRef = 2068D14223249B14696EE3DE9AA9802B /* crypto_core_salsa20.h */; settings = {ATTRIBUTES = (Public, ); }; }; D9D312D1F0B2F996729D9A44BE168A18 /* Promise+AnyPromise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 542F37440847F5D5A08DE16A884B39A9 /* Promise+AnyPromise.swift */; }; - D9FA3C770E916D8458682C8BD3490444 /* web3swift.h in Headers */ = {isa = PBXBuildFile; fileRef = 91BEB75B70021D0C633974371ED0B1F9 /* web3swift.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D9FA3C770E916D8458682C8BD3490444 /* web3swift.h in Headers */ = {isa = PBXBuildFile; fileRef = 14D20032B3C3BE2C2941BA4C4A1A8D80 /* web3swift.h */; settings = {ATTRIBUTES = (Public, ); }; }; DA7BC5F55C30B04142B7029667FE88F5 /* crypto_pwhash_scryptsalsa208sha256.h in Headers */ = {isa = PBXBuildFile; fileRef = A4D18CA5852C77FE5182692A8547B222 /* crypto_pwhash_scryptsalsa208sha256.h */; settings = {ATTRIBUTES = (Public, ); }; }; DADB149520BA9B4E1C6DE4998629D224 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7086D0452CB4D5EE4DE2C77047B474AC /* Foundation.framework */; }; DB0FAEEB5CE1CD69EA18E4F8F852E759 /* curve25519_sandy2x.c in Sources */ = {isa = PBXBuildFile; fileRef = CC61FFD72A7A164C3496418F9C3F6539 /* curve25519_sandy2x.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - DB3E8F75E175388226264A8C8A0B60DD /* ABIRecordParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9433E8B33481FD162428EC795D2A16DA /* ABIRecordParser.swift */; }; DB54BEF7C1F0F5A2E29E6479DB4392D5 /* crypto_sign_ed25519.h in Headers */ = {isa = PBXBuildFile; fileRef = EF6BAD72C8D470CC9786C4E8E8D45269 /* crypto_sign_ed25519.h */; settings = {ATTRIBUTES = (Public, ); }; }; DB68E9CB4DC5D1F39CE22F213486AC9F /* scalar.h in Headers */ = {isa = PBXBuildFile; fileRef = 08BEF9CEF67B265ED14F441DF1597BC4 /* scalar.h */; settings = {ATTRIBUTES = (Private, ); }; }; DBBC0B3E2A77C465F817B4CB91C7CA6E /* RandomBytesSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27BAF77E406B83E5C2250AAD2B914AAB /* RandomBytesSequence.swift */; }; DCBE7AF3E2813C2E370F0554CE7DD314 /* runtime.c in Sources */ = {isa = PBXBuildFile; fileRef = 2F13D3594A3F34E8131DD5D490015D00 /* runtime.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; DD1D7C5267E8779B7755F0119DB3E7B4 /* BigInt.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 15CDF4E3F0AA952FB24FDB4D36C913A4 /* BigInt.framework */; }; DD66654526350CBBDD49E0FEA6C00060 /* crypto_hash.h in Headers */ = {isa = PBXBuildFile; fileRef = B47319309A5B468740A9FD324B40A669 /* crypto_hash.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DD679AC7BD83623D67342ABEC72ED0B4 /* String+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ED0F867FB383680FCDA13A664BA56C7 /* String+Extension.swift */; }; - DDD7ED17D79B0C3C1048056A234CE807 /* Web3+Infura.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A766F1E8A7AE0D6D45EA202E49E4844 /* Web3+Infura.swift */; }; DE7CC4778BA0CFB736CAA934A41CA0A3 /* Division.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC9B10B8F75CCE90CE94962B4490122F /* Division.swift */; }; DEE92ADE806FD6B6C15041FE4E259CE5 /* after.m in Sources */ = {isa = PBXBuildFile; fileRef = 9EEF8C5B9F423B5487661CE5471EC954 /* after.m */; }; DEFFFFB119948B6B135DB49AAAA7BA0D /* PMKQuartzCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F411DF29BFD064E10742EC17367B558 /* PMKQuartzCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; DF5D609D3CD9D07B42493E87380DFA25 /* int128.h in Headers */ = {isa = PBXBuildFile; fileRef = 67F67A38B2975BCEC597C9BDF0B4BC82 /* int128.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DFCF48FD4CDCBCB4F99A4F625AB50BE7 /* Web3+JSONRPC.swift in Sources */ = {isa = PBXBuildFile; fileRef = D619BA62E98DD11243E4F24E46304C34 /* Web3+JSONRPC.swift */; }; E013D3ABAE744071FE759A793C86E071 /* crypto_scalarmult.c in Sources */ = {isa = PBXBuildFile; fileRef = F1A0364ACB2857B89549D1681F5471F6 /* crypto_scalarmult.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; E039B801D197986FE25FD3011D2A324D /* PBKDF2.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEB315042084F2A3F107DBAB97F99E72 /* PBKDF2.swift */; }; E178D9DCC7569C338DA21578B1F10A33 /* u0.h in Headers */ = {isa = PBXBuildFile; fileRef = F1883ECD3D8BFE6B4880B36667C40544 /* u0.h */; settings = {ATTRIBUTES = (Project, ); }; }; @@ -464,7 +476,6 @@ E1C0AFB4B7630882B0536FCCCC5531CD /* blake2b-compress-ref.c in Sources */ = {isa = PBXBuildFile; fileRef = 607BC90E20E391CF7C61E22E08F2A84C /* blake2b-compress-ref.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; E1E86AB524D0C06D485B5C7C42C91032 /* crypto_shorthash.c in Sources */ = {isa = PBXBuildFile; fileRef = FB2F9FB561FDB137B32316BD73DD8634 /* crypto_shorthash.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; E2071A2A8238D96EC73F6F11854A7FB2 /* pbkdf2-sha256.c in Sources */ = {isa = PBXBuildFile; fileRef = 58A95B23C5BB76448D32752AE1FA7169 /* pbkdf2-sha256.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - E24771367371EF996B91FBCA34609968 /* Web3+Eth.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BB4B5494DBCFC56724336508794DAA0 /* Web3+Eth.swift */; }; E2AFD0BBA9BB944F7A97B1A5E1002962 /* crypto_stream_aes128ctr.h in Headers */ = {isa = PBXBuildFile; fileRef = 44279FE08036827611632F83946C8B14 /* crypto_stream_aes128ctr.h */; settings = {ATTRIBUTES = (Public, ); }; }; E30025F5450B8E0830B5962A0610BA92 /* stream_chacha20.h in Headers */ = {isa = PBXBuildFile; fileRef = 6354F4280CE748D9D44D23320994E2E0 /* stream_chacha20.h */; settings = {ATTRIBUTES = (Project, ); }; }; E31A136C29015728FEB2820E4D84E7F9 /* salsa20_xmm6int-avx2.c in Sources */ = {isa = PBXBuildFile; fileRef = 399511EE9DBB557526D85CFC58FD65CE /* salsa20_xmm6int-avx2.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; @@ -474,11 +485,12 @@ E4BAF279D1F6554F4BAFAE705A116914 /* stream_salsa208.c in Sources */ = {isa = PBXBuildFile; fileRef = A0ABE4181D34E6ABF045A1EADE759F6A /* stream_salsa208.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; E5D5704EE881AC70CA28ED058E516F80 /* sign.c in Sources */ = {isa = PBXBuildFile; fileRef = FA4A5414D375030EDC528296B2843F2D /* sign.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; E6980F35195B65B7783788E628E25C7B /* shorthash_siphash_ref.h in Headers */ = {isa = PBXBuildFile; fileRef = 618D12F0410ED6A5A68BAAE7C5D15682 /* shorthash_siphash_ref.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E69EDD024658AD4715DEB4DB137A1874 /* RIPEMD160+StackOveflow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04980EBB43657A4FA0DF27AE1830F5DD /* RIPEMD160+StackOveflow.swift */; }; E780BDD3E588068FF869701FDC2D6BBE /* OFB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32F1E6592482A2208F5FF896E032A959 /* OFB.swift */; }; E7B0E98D43A96D653D762EC25BA5A1BF /* u8.h in Headers */ = {isa = PBXBuildFile; fileRef = 191793AFD61B63BFBAD6D2340794B67F /* u8.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E7B4746743089F80E99F7427B8B127D5 /* CryptoExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B12E534033E0B776A55C52A3C1C4108A /* CryptoExtensions.swift */; }; E80B6D5289729FEDE6A90C54FDE3C965 /* crypto_box_easy.c in Sources */ = {isa = PBXBuildFile; fileRef = E1D4DF93AC9334A98C6E197E12F82C9C /* crypto_box_easy.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; E83D47295E102F3737DBDA40C423DAD6 /* fe_frombytes_sandy2x.c in Sources */ = {isa = PBXBuildFile; fileRef = 5AC5ED1A05BBF391045278B5E3F1C9E4 /* fe_frombytes_sandy2x.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + E8DE78BFCFBF040D7DDD6A4D6CC187D2 /* Web3+Methods.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F89464E9CA231472DFA07CC61F6CA8A /* Web3+Methods.swift */; }; E99E9C0D8889E1ABED1BB66EA5E26F6B /* AES.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9971DA2791BDECC91D70700CC35F165 /* AES.swift */; }; E9A41CA4897A3F853E54180CF22FA4A9 /* URLDataPromise.swift in Sources */ = {isa = PBXBuildFile; fileRef = F165F30CA5157444DFE14360EF3AC592 /* URLDataPromise.swift */; }; E9DDCBC12D0C48E9072371632E2EE354 /* BlockModeOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7D1EEB1A1308BD797E0C3D369F8726A3 /* BlockModeOptions.swift */; }; @@ -487,44 +499,39 @@ EB0241469E7CF1F695B26073D63E7E9D /* crypto_stream_xsalsa20.h in Headers */ = {isa = PBXBuildFile; fileRef = 36E02DE948CAC84AF4D545DC7D1B732D /* crypto_stream_xsalsa20.h */; settings = {ATTRIBUTES = (Public, ); }; }; EB24C61D0745EC256B743CCC62E38680 /* crypto_shorthash.h in Headers */ = {isa = PBXBuildFile; fileRef = 5EB3D8044EE1B129176D10A0E06E3EEC /* crypto_shorthash.h */; settings = {ATTRIBUTES = (Public, ); }; }; EB4F107EBC595E01B1EFE04F92AFF4A0 /* version.h in Headers */ = {isa = PBXBuildFile; fileRef = D2B17FA4896EF28949566EE11BB5ACE9 /* version.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EBD71D794F0B21F62EEF43C913A94751 /* EthereumAddress.swift in Sources */ = {isa = PBXBuildFile; fileRef = 839FA12031C6C7201C6E34953AB7644F /* EthereumAddress.swift */; }; EC44355442C7E895D8BDD437C8FC1A50 /* String+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 636AD2F4AD2B523E224B5BAF1F4CAA22 /* String+Extension.swift */; }; ED16FDB13AE33391871CF6AE3CE2BBE9 /* scalar_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = E0535E72A79B4D401256844FF2EFB388 /* scalar_impl.h */; settings = {ATTRIBUTES = (Private, ); }; }; ED396217C1F01CD19B0FE87C3E1414B0 /* hash_sha512.c in Sources */ = {isa = PBXBuildFile; fileRef = 8B335EC490D220A3F3AC4D5F45A3E4EF /* hash_sha512.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; EDA8D8A5D4397FC2080F3EFF8B25EA7B /* Alamofire.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A6F0F0A41CF53305711665AC605808CB /* Alamofire.framework */; }; - EDBD0D3BA8650BEFC50478F5B5C2B50C /* DictionaryLiteralJSONSerializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = A4FDCE0D0CD36077F18D435DCE2D2E53 /* DictionaryLiteralJSONSerializer.swift */; }; - EDEBE3DCF2B9983EA696924AC2A7F18B /* NSRegularExpressionExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 525C54A44224FF07D0A6E21A357A6062 /* NSRegularExpressionExtension.swift */; }; EDF75CB56E38689C860609B918D121F8 /* crypto_auth_hmacsha512256.h in Headers */ = {isa = PBXBuildFile; fileRef = 2606DEDE23F9C00EB56B97F26952B9C8 /* crypto_auth_hmacsha512256.h */; settings = {ATTRIBUTES = (Public, ); }; }; EEBE924BD06D6681AAA6003C3A6DBB33 /* MD5.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7959DDA1ACF5428A7058AF0329BCA03F /* MD5.swift */; }; EEC95E134BF6663B52A72D8B53375C00 /* PKCS7Padding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8ECAE25798E81E59CA4D006633BA25E8 /* PKCS7Padding.swift */; }; EFA025B72A5751B648D0E89F4F027C9B /* core.c in Sources */ = {isa = PBXBuildFile; fileRef = 143E74EE641F3E3F1F7CD22B1AD7F4D1 /* core.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + EFA23FA6CE7E37B53311C58DC0E43564 /* RLP.swift in Sources */ = {isa = PBXBuildFile; fileRef = EF80779D6B0B13581491EBCF062A61A9 /* RLP.swift */; }; EFD264FC408EBF3BA2528E70B08DDD94 /* Notifications.swift in Sources */ = {isa = PBXBuildFile; fileRef = 295E6DBD8E47A9F281672ECD78BBC720 /* Notifications.swift */; }; F03712B3C30398F54C1A108901DFC8D2 /* crypto_scalarmult.h in Headers */ = {isa = PBXBuildFile; fileRef = C58A03B5033A4A0C85CC2E60039F52F7 /* crypto_scalarmult.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F05082BBA75296AD1742E2A20C313872 /* secp256k1_ios-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A5CDBB8EBD6F53AB55FB2F8FC459912 /* secp256k1_ios-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F05082BBA75296AD1742E2A20C313872 /* secp256k1_ios-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 17CD3829F2814CA8487A128D58A672F5 /* secp256k1_ios-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; F1A3F8EE8A18A3DBF6857882D870D883 /* num_gmp.h in Headers */ = {isa = PBXBuildFile; fileRef = 8189DC7A2948BBC16579AC1A73C1807B /* num_gmp.h */; settings = {ATTRIBUTES = (Private, ); }; }; - F20CF7118A57F5924A5B60E7C0824D39 /* Alamofire-Synchronous-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 78CF790C97329ED18EF9528E51873631 /* Alamofire-Synchronous-dummy.m */; }; + F20CF7118A57F5924A5B60E7C0824D39 /* Alamofire-Synchronous-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B273E0C11FCFFCBD6328A2B99BA64E32 /* Alamofire-Synchronous-dummy.m */; }; F3A86739199B1A6197C5CAFB2AD7814C /* shorthash_siphashx24.c in Sources */ = {isa = PBXBuildFile; fileRef = 47744E45F2A0DA60D21201C4D40704A1 /* shorthash_siphashx24.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; F4581CC7EDB39A800954D136A413FEA2 /* DispatchQueue+Await.swift in Sources */ = {isa = PBXBuildFile; fileRef = D269964E854AA1AE7A14F4D6035B74DA /* DispatchQueue+Await.swift */; }; F52FBBE1450344F40E192F427525FA87 /* u0.h in Headers */ = {isa = PBXBuildFile; fileRef = 9433F5CDC1BC878642A083AB4A05D0F5 /* u0.h */; settings = {ATTRIBUTES = (Project, ); }; }; F578FC76C3270DE1F4F505C9472FB0D2 /* blake2b-load-sse2.h in Headers */ = {isa = PBXBuildFile; fileRef = A55FE86BAEB815309E939A4F6A05899B /* blake2b-load-sse2.h */; settings = {ATTRIBUTES = (Project, ); }; }; F6BECD98B97CBFEBE2C96F0E9E72A6C0 /* ResponseSerialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F6968DA7F86896391E2ECFDD6C43BB0 /* ResponseSerialization.swift */; }; F7901730F0B0CBE0714E71F81F209ED6 /* crypto_generichash.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B9060419ADEED5E433D63699D61A8A9 /* crypto_generichash.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F8390615AB2812405D72CCE420E8141B /* web3swift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 82740FAACFE6E8102720B0CF8FEB637F /* web3swift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F8390615AB2812405D72CCE420E8141B /* web3swift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 26877592C79FB490F0D8185255D0EAB5 /* web3swift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; F8B3D3092ED0417E8CDF32033F6122F5 /* Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6ED2A7AC76D2EC71B4AC38BCA17B12F /* Alamofire.swift */; }; - F92541B941753B300F6EA476AFF69C7D /* BIP32KeystoreJSONStructure.swift in Sources */ = {isa = PBXBuildFile; fileRef = 522AB582984497423F37801A3E3B5C5B /* BIP32KeystoreJSONStructure.swift */; }; F93564D8808D12B8B3718C19F22B2BB9 /* generichash_blake2.c in Sources */ = {isa = PBXBuildFile; fileRef = 4F3D351FB31F8863F74D2E0E4AFEACAE /* generichash_blake2.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; F96F6F322FFED7EC2C671EA09971ACB5 /* join.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5BBA80E1DCF8E9EC730A2EB9793CE85 /* join.swift */; }; F97FF05A4C1F8DAC1259149CE5A5A160 /* salsa20_xmm6int-sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = B18BAAF98DF82DF10A18AD492CF964A4 /* salsa20_xmm6int-sse2.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; F9C5E9613B783F15B8280AA2570E91FF /* core_hchacha20.c in Sources */ = {isa = PBXBuildFile; fileRef = E4C7DD1E0B53DB5870DF6C5F724F1628 /* core_hchacha20.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; FA495176BAAC3B017C44475B4B089570 /* secp256k1_recovery.h in Headers */ = {isa = PBXBuildFile; fileRef = F45C0BD9782E28331B5B1EB9282B9D64 /* secp256k1_recovery.h */; settings = {ATTRIBUTES = (Public, ); }; }; FAED7A3626B67D803A7136DEDA1474B2 /* when.m in Sources */ = {isa = PBXBuildFile; fileRef = E04A88DBAC00077182EED78B01C0C61E /* when.m */; }; - FB0BAB91D503764F1B5C5759A2264D08 /* ABIManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA359E2BD0B0F8717FAD8AAAF6D3BAB3 /* ABIManager.swift */; }; FB7F6EFD06295E38CE1BE33E77AB6F8D /* argon2-fill-block-ref.c in Sources */ = {isa = PBXBuildFile; fileRef = 1A4BD08D2A13B0E3BEE20ED45B4E98DE /* argon2-fill-block-ref.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; FC69BD1F489A662458CBC74BBAD9F295 /* scrypt_platform.c in Sources */ = {isa = PBXBuildFile; fileRef = EDC314C5C9FC173FB4CAC0F18C053578 /* scrypt_platform.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; FD722BD7816859583DA6C8EF6BD5EDC5 /* Zalgo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55318E639AFA1A22005AFBFBA13A20F9 /* Zalgo.swift */; }; - FE24486EBAA3A98B31DC7AF6F0F7D960 /* LibSecp256k1Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA44460922E23D13F3AA3CB97FEAC20 /* LibSecp256k1Extension.swift */; }; FF3688F374CC98BF52093BD77872F96B /* box_curve25519xchacha20poly1305.c in Sources */ = {isa = PBXBuildFile; fileRef = 1F0494BF7B419DE1F6DC9AFA028ABD88 /* box_curve25519xchacha20poly1305.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - FFB174C546B4030441F46BB3E8D76318 /* BigInt-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = AB3E8694FB4DBE03DA798ECE62B6C4C9 /* BigInt-dummy.m */; }; + FFB174C546B4030441F46BB3E8D76318 /* BigInt-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = A6E36C342459481E954ACBBE2BB0B629 /* BigInt-dummy.m */; }; FFEFA357A2ECFD2C8696A7D9B6559CAC /* Cipher.swift in Sources */ = {isa = PBXBuildFile; fileRef = F43B1D69C5746C1252944156E7D3346A /* Cipher.swift */; }; /* End PBXBuildFile section */ @@ -672,384 +679,375 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 001DE8CD345DF918901D6CFDC1145E8B /* BigInt.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = BigInt.modulemap; sourceTree = ""; }; 0037FE7A33F6F39662F1CBFD0E37A685 /* crypto_core_salsa208.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_core_salsa208.h; path = src/libsodium/include/sodium/crypto_core_salsa208.h; sourceTree = ""; }; - 010E51C041097BECC979E95334A701D5 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 011DD50976B57AF73F401E3955A10F09 /* ecmult_gen_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_gen_impl.h; path = secp256k1_ios/src/ecmult_gen_impl.h; sourceTree = ""; }; 012013FBEB754E4ACFD9A745C6E71B3D /* u4.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = u4.h; path = src/libsodium/crypto_stream/salsa20/xmm6int/u4.h; sourceTree = ""; }; 014C297ADB116FF2F86C7E9F853C7F4E /* CALayer+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "CALayer+AnyPromise.m"; path = "Extensions/QuartzCore/Sources/CALayer+AnyPromise.m"; sourceTree = ""; }; 0252D5C3FE74EBC8325EAB23BFBC3BAC /* crypto_auth_hmacsha512.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_auth_hmacsha512.h; path = src/libsodium/include/sodium/crypto_auth_hmacsha512.h; sourceTree = ""; }; 025B5305F466991A260A325F35174A1A /* poly1305_donna64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = poly1305_donna64.h; path = src/libsodium/crypto_onetimeauth/poly1305/donna/poly1305_donna64.h; sourceTree = ""; }; 02653CC651FE985A495D8B2951C96CC2 /* consts.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = consts.h; path = src/libsodium/crypto_stream/aes128ctr/nacl/consts.h; sourceTree = ""; }; - 02EFAA4DD141F0E7083B2368A41C17F7 /* Dictionary+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Dictionary+Extension.swift"; sourceTree = ""; }; - 03B0F6E8C12479117286D5497BA86EEF /* blake2b-compress-avx2.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = "blake2b-compress-avx2.c"; path = "src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-avx2.c"; sourceTree = ""; }; + 03B0F6E8C12479117286D5497BA86EEF /* blake2b-compress-avx2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = "blake2b-compress-avx2.c"; path = "src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-avx2.c"; sourceTree = ""; }; + 03F853B1CAAEC80B8778ACEBAF1D7288 /* ABIRecordParser.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ABIRecordParser.swift; sourceTree = ""; }; + 04980EBB43657A4FA0DF27AE1830F5DD /* RIPEMD160+StackOveflow.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RIPEMD160+StackOveflow.swift"; sourceTree = ""; }; 04E2A210D89CCFC9D6FCCAEF770FA796 /* hash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = hash.h; path = secp256k1_ios/src/hash.h; sourceTree = ""; }; + 04EBF1BE3A127997E9CA4B85B28DE443 /* libsodium-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "libsodium-dummy.m"; sourceTree = ""; }; 061572E018995FF7871DCA43D8DB3623 /* ecdsa_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecdsa_impl.h; path = secp256k1_ios/src/ecdsa_impl.h; sourceTree = ""; }; - 061CE4FB44899606E1475D58BF2A4003 /* pwhash_scryptsalsa208sha256_nosse.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = pwhash_scryptsalsa208sha256_nosse.c; path = src/libsodium/crypto_pwhash/scryptsalsa208sha256/nosse/pwhash_scryptsalsa208sha256_nosse.c; sourceTree = ""; }; + 061CE4FB44899606E1475D58BF2A4003 /* pwhash_scryptsalsa208sha256_nosse.c */ = {isa = PBXFileReference; includeInIndex = 1; name = pwhash_scryptsalsa208sha256_nosse.c; path = src/libsodium/crypto_pwhash/scryptsalsa208sha256/nosse/pwhash_scryptsalsa208sha256_nosse.c; sourceTree = ""; }; 068F03FD17F48998DA462CF39ADC653B /* lax_der_privatekey_parsing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lax_der_privatekey_parsing.h; path = secp256k1_ios/contrib/lax_der_privatekey_parsing.h; sourceTree = ""; }; 075338B0E671573E96E67C63EBB50536 /* consts_namespace.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = consts_namespace.h; path = src/libsodium/crypto_scalarmult/curve25519/sandy2x/consts_namespace.h; sourceTree = ""; }; - 079347A759F0CCDAE9D88D7BD66F0D43 /* Web3+Structures.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Web3+Structures.swift"; sourceTree = ""; }; 08A78C6A4BDBB66AD6F09F5DC8A998EB /* ladder_base_namespace.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ladder_base_namespace.h; path = src/libsodium/crypto_scalarmult/curve25519/sandy2x/ladder_base_namespace.h; sourceTree = ""; }; 08BEF9CEF67B265ED14F441DF1597BC4 /* scalar.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar.h; path = secp256k1_ios/src/scalar.h; sourceTree = ""; }; - 08E92AB17DB92770C9EB534A6E3B8B95 /* crypto_stream.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = crypto_stream.c; path = src/libsodium/crypto_stream/crypto_stream.c; sourceTree = ""; }; + 08E92AB17DB92770C9EB534A6E3B8B95 /* crypto_stream.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_stream.c; path = src/libsodium/crypto_stream/crypto_stream.c; sourceTree = ""; }; 093A965E4F6017A4D45E33AB48BB8391 /* BatchedCollection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BatchedCollection.swift; path = Sources/CryptoSwift/BatchedCollection.swift; sourceTree = ""; }; 0966C6F7A035F2B84A32BAB4C035B782 /* ladder_base.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ladder_base.h; path = src/libsodium/crypto_scalarmult/curve25519/sandy2x/ladder_base.h; sourceTree = ""; }; - 09D9BF28316A968E4C9623999BC79AC2 /* SipHash-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SipHash-dummy.m"; sourceTree = ""; }; - 0BE4D89E5D5DF5D799251BE91A0C5289 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 0C286AB92F3AA0BD3C4F0DC12672D9B3 /* CryptoSwift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "CryptoSwift-dummy.m"; sourceTree = ""; }; - 0C84202565E092EAC142208DBEC82C3D /* crypto_pwhash.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = crypto_pwhash.c; path = src/libsodium/crypto_pwhash/crypto_pwhash.c; sourceTree = ""; }; + 0AC5D21A297437198F6DF3E0F449AC46 /* SipHash-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SipHash-dummy.m"; sourceTree = ""; }; + 0B82875020813BB6E58D6DAD9CEC0FAB /* DictionaryLiteralJSONSerializer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DictionaryLiteralJSONSerializer.swift; sourceTree = ""; }; + 0C84202565E092EAC142208DBEC82C3D /* crypto_pwhash.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_pwhash.c; path = src/libsodium/crypto_pwhash/crypto_pwhash.c; sourceTree = ""; }; + 0CFD2EB8F3BAD66231A27253A21EA578 /* PromiseKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PromiseKit-prefix.pch"; sourceTree = ""; }; 0D2B31B7C7DB36DC4810C7715CF9A5D5 /* crypto_box_curve25519xchacha20poly1305.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_box_curve25519xchacha20poly1305.h; path = src/libsodium/include/sodium/crypto_box_curve25519xchacha20poly1305.h; sourceTree = ""; }; - 0D7EAE0ED8E17D51510B637FA7B91881 /* stream_aes128ctr_nacl.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = stream_aes128ctr_nacl.c; path = src/libsodium/crypto_stream/aes128ctr/nacl/stream_aes128ctr_nacl.c; sourceTree = ""; }; + 0D7EAE0ED8E17D51510B637FA7B91881 /* stream_aes128ctr_nacl.c */ = {isa = PBXFileReference; includeInIndex = 1; name = stream_aes128ctr_nacl.c; path = src/libsodium/crypto_stream/aes128ctr/nacl/stream_aes128ctr_nacl.c; sourceTree = ""; }; 0DA8F41C11E734C33AA118F2E5C00BBD /* Alamofire+Synchronous.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Alamofire+Synchronous.swift"; path = "Source/Alamofire+Synchronous.swift"; sourceTree = ""; }; 0E25BFABAEC90C0DA50D5EB08622AC38 /* num_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = num_impl.h; path = secp256k1_ios/src/num_impl.h; sourceTree = ""; }; - 0E72913E826C612CACEAC09505917AD9 /* salsa20_ref.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = salsa20_ref.c; path = src/libsodium/crypto_stream/salsa20/ref/salsa20_ref.c; sourceTree = ""; }; - 0ED0F867FB383680FCDA13A664BA56C7 /* String+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "String+Extension.swift"; sourceTree = ""; }; + 0E72913E826C612CACEAC09505917AD9 /* salsa20_ref.c */ = {isa = PBXFileReference; includeInIndex = 1; name = salsa20_ref.c; path = src/libsodium/crypto_stream/salsa20/ref/salsa20_ref.c; sourceTree = ""; }; 0F1F04C4888A94D10E48819933C7E3E9 /* UIViewController+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+AnyPromise.m"; path = "Extensions/UIKit/Sources/UIViewController+AnyPromise.m"; sourceTree = ""; }; - 0FB8DFE682077C323E7D2C151B326402 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 0FAC4001D8385117887B622C5C637A42 /* Alamofire-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Alamofire-dummy.m"; sourceTree = ""; }; 0FE6B9706EEE5557555042232742A5BD /* after.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = after.swift; path = Sources/after.swift; sourceTree = ""; }; - 100E9AAC7191CDEFC6BCE1EC1C00211E /* secp256k1_ios-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "secp256k1_ios-dummy.m"; sourceTree = ""; }; 10924BB7789865C89DCF2567826499B6 /* common.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = common.h; path = src/libsodium/crypto_stream/aes128ctr/nacl/common.h; sourceTree = ""; }; - 109E03D140257436F27F7E3144F38DB1 /* RLP.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RLP.swift; sourceTree = ""; }; 10B8939E6CEAF88BBFF97622E4BECCBB /* Array+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Array+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Array+Foundation.swift"; sourceTree = ""; }; - 10C46390C608FFF2DC5F6149A9EBCF53 /* auth_hmacsha256.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = auth_hmacsha256.c; path = src/libsodium/crypto_auth/hmacsha256/auth_hmacsha256.c; sourceTree = ""; }; + 10C46390C608FFF2DC5F6149A9EBCF53 /* auth_hmacsha256.c */ = {isa = PBXFileReference; includeInIndex = 1; name = auth_hmacsha256.c; path = src/libsodium/crypto_auth/hmacsha256/auth_hmacsha256.c; sourceTree = ""; }; 1138223686EAD4B9BFA5AA76E756D3C6 /* u1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = u1.h; path = src/libsodium/crypto_stream/salsa20/xmm6int/u1.h; sourceTree = ""; }; + 113E4E3046BBB1DCCB7333A400D767E3 /* Alamofire-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-prefix.pch"; sourceTree = ""; }; 124463673B68DF76691C380FD0DEDB3F /* crypto_aead_chacha20poly1305.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_aead_chacha20poly1305.h; path = src/libsodium/include/sodium/crypto_aead_chacha20poly1305.h; sourceTree = ""; }; - 131E70277AF91A9ADD6ACE4903C79281 /* Alamofire-Synchronous.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Alamofire-Synchronous.xcconfig"; sourceTree = ""; }; 13AFB75046B76CCD523CBC2589ECDD81 /* crypto_aead_xchacha20poly1305.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_aead_xchacha20poly1305.h; path = src/libsodium/include/sodium/crypto_aead_xchacha20poly1305.h; sourceTree = ""; }; 13E43880BCB5DEB0C2FF030776F480E4 /* chacha20_dolbeau-avx2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "chacha20_dolbeau-avx2.h"; path = "src/libsodium/crypto_stream/chacha20/dolbeau/chacha20_dolbeau-avx2.h"; sourceTree = ""; }; - 143E74EE641F3E3F1F7CD22B1AD7F4D1 /* core.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = core.c; path = src/libsodium/sodium/core.c; sourceTree = ""; }; + 143E74EE641F3E3F1F7CD22B1AD7F4D1 /* core.c */ = {isa = PBXFileReference; includeInIndex = 1; name = core.c; path = src/libsodium/sodium/core.c; sourceTree = ""; }; 147EF2389DA38702AD242E58EB58E02A /* stream_salsa20.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = stream_salsa20.h; path = src/libsodium/crypto_stream/salsa20/stream_salsa20.h; sourceTree = ""; }; + 149F2AE051375EEA7CB06B9A5151E83D /* EthereumAddress.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EthereumAddress.swift; sourceTree = ""; }; + 14D20032B3C3BE2C2941BA4C4A1A8D80 /* web3swift.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = web3swift.h; path = web3swift/web3swift.h; sourceTree = ""; }; 15CDF4E3F0AA952FB24FDB4D36C913A4 /* BigInt.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = BigInt.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 15F0FFD14869C1AD1986707FD741DBF4 /* fe51.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = fe51.h; path = src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51.h; sourceTree = ""; }; 171F190350102AF13702A6CAE9059B85 /* salsa20_xmm6int-avx2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "salsa20_xmm6int-avx2.h"; path = "src/libsodium/crypto_stream/salsa20/xmm6int/salsa20_xmm6int-avx2.h"; sourceTree = ""; }; 179F0870947C360A8BA2A904FCD427EB /* blake2b-compress-avx2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "blake2b-compress-avx2.h"; path = "src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-avx2.h"; sourceTree = ""; }; - 17A831420CB8729B4F2562F804B8078C /* randombytes_nativeclient.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = randombytes_nativeclient.c; path = src/libsodium/randombytes/nativeclient/randombytes_nativeclient.c; sourceTree = ""; }; + 17A831420CB8729B4F2562F804B8078C /* randombytes_nativeclient.c */ = {isa = PBXFileReference; includeInIndex = 1; name = randombytes_nativeclient.c; path = src/libsodium/randombytes/nativeclient/randombytes_nativeclient.c; sourceTree = ""; }; + 17AF41F6667ACE32AB1F5ABDAB718A36 /* Pods-web3swiftExample-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-web3swiftExample-resources.sh"; sourceTree = ""; }; + 17CD3829F2814CA8487A128D58A672F5 /* secp256k1_ios-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "secp256k1_ios-umbrella.h"; sourceTree = ""; }; + 17D0CBABF6C26C0888829B2D972CAFD8 /* ABIManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ABIManager.swift; sourceTree = ""; }; 1855FD520F2DBCA9435B19E02853CFBC /* ecmult_gen.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_gen.h; path = secp256k1_ios/src/ecmult_gen.h; sourceTree = ""; }; - 18C4F064BA06CAA168498F0279373C45 /* pwhash_scryptsalsa208sha256.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = pwhash_scryptsalsa208sha256.c; path = src/libsodium/crypto_pwhash/scryptsalsa208sha256/pwhash_scryptsalsa208sha256.c; sourceTree = ""; }; - 18FA5313A600FD90956CC0F6F278685F /* libsodium.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = libsodium.xcconfig; sourceTree = ""; }; + 18C4F064BA06CAA168498F0279373C45 /* pwhash_scryptsalsa208sha256.c */ = {isa = PBXFileReference; includeInIndex = 1; name = pwhash_scryptsalsa208sha256.c; path = src/libsodium/crypto_pwhash/scryptsalsa208sha256/pwhash_scryptsalsa208sha256.c; sourceTree = ""; }; + 1908A7DD3EF57C1D1CD938AE24C8C630 /* CryptoSwift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "CryptoSwift-dummy.m"; sourceTree = ""; }; 191793AFD61B63BFBAD6D2340794B67F /* u8.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = u8.h; path = src/libsodium/crypto_stream/chacha20/dolbeau/u8.h; sourceTree = ""; }; 19B8EB0F25553068A1F5283B98BB6415 /* blake2b-compress-sse41.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "blake2b-compress-sse41.h"; path = "src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-sse41.h"; sourceTree = ""; }; - 1A3E2E3E9841B503424724AFBFE1D993 /* argon2-core.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = "argon2-core.c"; path = "src/libsodium/crypto_pwhash/argon2/argon2-core.c"; sourceTree = ""; }; - 1A4BD08D2A13B0E3BEE20ED45B4E98DE /* argon2-fill-block-ref.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = "argon2-fill-block-ref.c"; path = "src/libsodium/crypto_pwhash/argon2/argon2-fill-block-ref.c"; sourceTree = ""; }; - 1ADA9DEF18F5279ECB76868A1771908A /* lax_der_parsing.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = lax_der_parsing.c; path = secp256k1_ios/contrib/lax_der_parsing.c; sourceTree = ""; }; - 1B0E93721ED60B311DE632AF7E5CA387 /* KeystoreManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = KeystoreManager.swift; sourceTree = ""; }; + 1A3E2E3E9841B503424724AFBFE1D993 /* argon2-core.c */ = {isa = PBXFileReference; includeInIndex = 1; name = "argon2-core.c"; path = "src/libsodium/crypto_pwhash/argon2/argon2-core.c"; sourceTree = ""; }; + 1A4BD08D2A13B0E3BEE20ED45B4E98DE /* argon2-fill-block-ref.c */ = {isa = PBXFileReference; includeInIndex = 1; name = "argon2-fill-block-ref.c"; path = "src/libsodium/crypto_pwhash/argon2/argon2-fill-block-ref.c"; sourceTree = ""; }; + 1ADA9DEF18F5279ECB76868A1771908A /* lax_der_parsing.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lax_der_parsing.c; path = secp256k1_ios/contrib/lax_der_parsing.c; sourceTree = ""; }; 1B71870E4067BF9EEA6BD00447CCAAEE /* libsodium.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = libsodium.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 1B942EC2375CABF35DF0EBB9623F3E3B /* Padding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Padding.swift; path = Sources/CryptoSwift/Padding.swift; sourceTree = ""; }; - 1BB798DB07E577E6312642529E3C80CD /* randombytes.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = randombytes.c; path = src/libsodium/randombytes/randombytes.c; sourceTree = ""; }; - 1C7CFBD3BE32A61177AFB18517D5F768 /* ABIDecoder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ABIDecoder.swift; sourceTree = ""; }; + 1BB798DB07E577E6312642529E3C80CD /* randombytes.c */ = {isa = PBXFileReference; includeInIndex = 1; name = randombytes.c; path = src/libsodium/randombytes/randombytes.c; sourceTree = ""; }; 1C7FB038C0AE552D7215406D4EFEF9B4 /* mutex.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = mutex.h; path = src/libsodium/include/sodium/private/mutex.h; sourceTree = ""; }; 1D21ACD46637104DECAC5FEC1A0ABF90 /* crypto_kdf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_kdf.h; path = src/libsodium/include/sodium/crypto_kdf.h; sourceTree = ""; }; - 1F0494BF7B419DE1F6DC9AFA028ABD88 /* box_curve25519xchacha20poly1305.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = box_curve25519xchacha20poly1305.c; path = src/libsodium/crypto_box/curve25519xchacha20poly1305/box_curve25519xchacha20poly1305.c; sourceTree = ""; }; + 1F0494BF7B419DE1F6DC9AFA028ABD88 /* box_curve25519xchacha20poly1305.c */ = {isa = PBXFileReference; includeInIndex = 1; name = box_curve25519xchacha20poly1305.c; path = src/libsodium/crypto_box/curve25519xchacha20poly1305/box_curve25519xchacha20poly1305.c; sourceTree = ""; }; 1F411DF29BFD064E10742EC17367B558 /* PMKQuartzCore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PMKQuartzCore.h; path = Extensions/QuartzCore/Sources/PMKQuartzCore.h; sourceTree = ""; }; 2020719FD0FA3526D68176B62CF47984 /* scalar_8x32.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_8x32.h; path = secp256k1_ios/src/scalar_8x32.h; sourceTree = ""; }; 2054ED84487D364D6067E3C105978799 /* afterlife.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = afterlife.swift; path = Extensions/Foundation/Sources/afterlife.swift; sourceTree = ""; }; 2068D14223249B14696EE3DE9AA9802B /* crypto_core_salsa20.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_core_salsa20.h; path = src/libsodium/include/sodium/crypto_core_salsa20.h; sourceTree = ""; }; 208542E80AC03AA50D4C409803861A46 /* SipHash.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SipHash.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 218A2BD1B4AB7D50624DBA19F3F4620D /* kdf_blake2b.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = kdf_blake2b.c; path = src/libsodium/crypto_kdf/blake2b/kdf_blake2b.c; sourceTree = ""; }; - 220F58B2D81F2FE9BE125DAC7D1FF708 /* BIP39+WordLists.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "BIP39+WordLists.swift"; sourceTree = ""; }; + 218A2BD1B4AB7D50624DBA19F3F4620D /* kdf_blake2b.c */ = {isa = PBXFileReference; includeInIndex = 1; name = kdf_blake2b.c; path = src/libsodium/crypto_kdf/blake2b/kdf_blake2b.c; sourceTree = ""; }; + 21D3F59DBE4683AA51EC20E102FDD588 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 221509961AE93648AD44198F7C7B70EB /* Web3+Contract.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Web3+Contract.swift"; sourceTree = ""; }; 221C8A742A20C4264D08514F31CE32B7 /* secp256k1_ecdh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = secp256k1_ecdh.h; path = secp256k1_ios/include/secp256k1_ecdh.h; sourceTree = ""; }; - 226014ACBE2C6434C3BAE6B9AD7F772F /* CryptoSwift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CryptoSwift-prefix.pch"; sourceTree = ""; }; - 227BB984AF2E26E05926F27B42491B13 /* CryptoSwift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CryptoSwift-umbrella.h"; sourceTree = ""; }; - 22D44C0D06C5F14B692B0283B51FA025 /* x25519_ref10.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = x25519_ref10.c; path = src/libsodium/crypto_scalarmult/curve25519/ref10/x25519_ref10.c; sourceTree = ""; }; + 22975962B73A95743B76D1CD431D50CB /* Web3+Eth.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Web3+Eth.swift"; sourceTree = ""; }; + 22D44C0D06C5F14B692B0283B51FA025 /* x25519_ref10.c */ = {isa = PBXFileReference; includeInIndex = 1; name = x25519_ref10.c; path = src/libsodium/crypto_scalarmult/curve25519/ref10/x25519_ref10.c; sourceTree = ""; }; 2303C3EE7EAAA18922D16FC87C103B49 /* core.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = core.h; path = src/libsodium/include/sodium/core.h; sourceTree = ""; }; 233F477CAF0141C34324F581BD439DA5 /* scalar_8x32_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_8x32_impl.h; path = secp256k1_ios/src/scalar_8x32_impl.h; sourceTree = ""; }; 23D78E8997450343D447490799F42F97 /* Square Root.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Square Root.swift"; path = "sources/Square Root.swift"; sourceTree = ""; }; - 23DBCD101D149E4598A2CF48D816CF57 /* PromiseKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = PromiseKit.xcconfig; sourceTree = ""; }; 24B2A605F95D87598F739C80BBA51781 /* CTR.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CTR.swift; path = Sources/CryptoSwift/BlockMode/CTR.swift; sourceTree = ""; }; 24C3FF472A2964ABE4A10A73F7FB3FF5 /* Request.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Request.swift; path = Source/Request.swift; sourceTree = ""; }; 24FCDC105D535F9A6D9EB8A9BD3E46C1 /* main_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = main_impl.h; path = secp256k1_ios/src/modules/ecdh/main_impl.h; sourceTree = ""; }; 251635AA24663F90C43FEEADED5BB66B /* crypto_box_curve25519xsalsa20poly1305.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_box_curve25519xsalsa20poly1305.h; path = src/libsodium/include/sodium/crypto_box_curve25519xsalsa20poly1305.h; sourceTree = ""; }; - 253DFC3A1FEE42CF9611E53A0A978AF5 /* crypto_onetimeauth.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = crypto_onetimeauth.c; path = src/libsodium/crypto_onetimeauth/crypto_onetimeauth.c; sourceTree = ""; }; + 253DFC3A1FEE42CF9611E53A0A978AF5 /* crypto_onetimeauth.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_onetimeauth.c; path = src/libsodium/crypto_onetimeauth/crypto_onetimeauth.c; sourceTree = ""; }; 2568DF6667C7669AAD99C36904D6A243 /* Strideable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Strideable.swift; path = sources/Strideable.swift; sourceTree = ""; }; 2592188E989B10EBB443FB1B538E1A3F /* randombytes_salsa20_random.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = randombytes_salsa20_random.h; path = src/libsodium/include/sodium/randombytes_salsa20_random.h; sourceTree = ""; }; 2606DEDE23F9C00EB56B97F26952B9C8 /* crypto_auth_hmacsha512256.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_auth_hmacsha512256.h; path = src/libsodium/include/sodium/crypto_auth_hmacsha512256.h; sourceTree = ""; }; 264CAF9B6B4B414E2FDCD12A9866ECB1 /* ecmult_const.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_const.h; path = secp256k1_ios/src/ecmult_const.h; sourceTree = ""; }; - 27AE7B97212AD1342B177370ACCD89B8 /* stream_xchacha20.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = stream_xchacha20.c; path = src/libsodium/crypto_stream/xchacha20/stream_xchacha20.c; sourceTree = ""; }; + 26877592C79FB490F0D8185255D0EAB5 /* web3swift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "web3swift-umbrella.h"; sourceTree = ""; }; + 27A772F87A74E954473027ACB713F5F3 /* PromiseKit-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PromiseKit-umbrella.h"; sourceTree = ""; }; + 27AE7B97212AD1342B177370ACCD89B8 /* stream_xchacha20.c */ = {isa = PBXFileReference; includeInIndex = 1; name = stream_xchacha20.c; path = src/libsodium/crypto_stream/xchacha20/stream_xchacha20.c; sourceTree = ""; }; 27BAF77E406B83E5C2250AAD2B914AAB /* RandomBytesSequence.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RandomBytesSequence.swift; path = Sources/CryptoSwift/RandomBytesSequence.swift; sourceTree = ""; }; 28572FB2D0CC50AD4DEB070566A1D4CF /* PKCS7.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKCS7.swift; path = Sources/CryptoSwift/PKCS/PKCS7.swift; sourceTree = ""; }; 295E6DBD8E47A9F281672ECD78BBC720 /* Notifications.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Notifications.swift; path = Source/Notifications.swift; sourceTree = ""; }; 29AAF2336E6E11709224F0101DC64B0C /* BigUInt.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BigUInt.swift; path = sources/BigUInt.swift; sourceTree = ""; }; - 29BDA69E969EE18D556E2099D4E71179 /* libsodium.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = libsodium.modulemap; sourceTree = ""; }; - 2A3F99276C578C8452AA85B568CB3940 /* PromiseKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PromiseKit-prefix.pch"; sourceTree = ""; }; + 29DA473F0766AE3EE863E84457BD455E /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 2A8020F5A52E685FC5A49297F5770615 /* BigInt.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = BigInt.xcconfig; sourceTree = ""; }; + 2AD440B7F6647E9CB2D56554AC81B088 /* Web3+Infura.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Web3+Infura.swift"; sourceTree = ""; }; 2AD971776E0DB2FE1B99A2561174B570 /* NSNotificationCenter+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSNotificationCenter+AnyPromise.h"; path = "Extensions/Foundation/Sources/NSNotificationCenter+AnyPromise.h"; sourceTree = ""; }; 2B3E08E154CF8F973C42F70C65D8C269 /* PKCS5.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKCS5.swift; path = Sources/CryptoSwift/PKCS/PKCS5.swift; sourceTree = ""; }; 2B662960FCEC82FB71DFB83E3C24562A /* sse2_64_32.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = sse2_64_32.h; path = src/libsodium/include/sodium/private/sse2_64_32.h; sourceTree = ""; }; 2B8EFB3F1956492BB1CD1B1DF8052341 /* Integer Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Integer Conversion.swift"; path = "sources/Integer Conversion.swift"; sourceTree = ""; }; - 2D8E9D10250642131005B28F689E84D9 /* Pods-web3swiftExample-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-web3swiftExample-acknowledgements.markdown"; sourceTree = ""; }; + 2B9A9A6287A7CC3E9C1ABE43EA77AB19 /* EthereumTransaction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EthereumTransaction.swift; sourceTree = ""; }; + 2D9E91BCDAF96205ACF5F3F87CE6A817 /* Alamofire-Synchronous.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Alamofire-Synchronous.modulemap"; sourceTree = ""; }; + 2E35A4ED0213D89F1FBF56CA8C7F9189 /* libsodium.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = libsodium.xcconfig; sourceTree = ""; }; + 2EB9781FDE9935DA7B536217063D56E8 /* libsodium-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "libsodium-umbrella.h"; sourceTree = ""; }; 2EBEA7563510808B5B8B6A779042B022 /* DispatchQueue+Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DispatchQueue+Alamofire.swift"; path = "Source/DispatchQueue+Alamofire.swift"; sourceTree = ""; }; - 2EFF27DD5CA1111D549D03635B329007 /* secretbox_xsalsa20poly1305.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = secretbox_xsalsa20poly1305.c; path = src/libsodium/crypto_secretbox/xsalsa20poly1305/secretbox_xsalsa20poly1305.c; sourceTree = ""; }; - 2F13D3594A3F34E8131DD5D490015D00 /* runtime.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = runtime.c; path = src/libsodium/sodium/runtime.c; sourceTree = ""; }; + 2EFF27DD5CA1111D549D03635B329007 /* secretbox_xsalsa20poly1305.c */ = {isa = PBXFileReference; includeInIndex = 1; name = secretbox_xsalsa20poly1305.c; path = src/libsodium/crypto_secretbox/xsalsa20poly1305/secretbox_xsalsa20poly1305.c; sourceTree = ""; }; + 2F13D3594A3F34E8131DD5D490015D00 /* runtime.c */ = {isa = PBXFileReference; includeInIndex = 1; name = runtime.c; path = src/libsodium/sodium/runtime.c; sourceTree = ""; }; 2F4A520B7AD2EA71F063828D854813E4 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; - 2F521C3CD2FD55DAFD1B5979B7FD7BDC /* secretbox_xchacha20poly1305.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = secretbox_xchacha20poly1305.c; path = src/libsodium/crypto_secretbox/xchacha20poly1305/secretbox_xchacha20poly1305.c; sourceTree = ""; }; - 307C6CDEF0CC27ABE1C7A6B1E47C6880 /* utils.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = utils.c; path = src/libsodium/sodium/utils.c; sourceTree = ""; }; - 30DE44CC686BF17B92877C414224A03E /* stream_xsalsa20.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = stream_xsalsa20.c; path = src/libsodium/crypto_stream/xsalsa20/stream_xsalsa20.c; sourceTree = ""; }; - 310C5BD83986808FCA3A4C0E288F8825 /* crypto_secretbox_easy.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = crypto_secretbox_easy.c; path = src/libsodium/crypto_secretbox/crypto_secretbox_easy.c; sourceTree = ""; }; - 312A6534DF79BCD6F5BB4102934381F8 /* libsodium.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = libsodium.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 2F521C3CD2FD55DAFD1B5979B7FD7BDC /* secretbox_xchacha20poly1305.c */ = {isa = PBXFileReference; includeInIndex = 1; name = secretbox_xchacha20poly1305.c; path = src/libsodium/crypto_secretbox/xchacha20poly1305/secretbox_xchacha20poly1305.c; sourceTree = ""; }; + 307C6CDEF0CC27ABE1C7A6B1E47C6880 /* utils.c */ = {isa = PBXFileReference; includeInIndex = 1; name = utils.c; path = src/libsodium/sodium/utils.c; sourceTree = ""; }; + 30DE44CC686BF17B92877C414224A03E /* stream_xsalsa20.c */ = {isa = PBXFileReference; includeInIndex = 1; name = stream_xsalsa20.c; path = src/libsodium/crypto_stream/xsalsa20/stream_xsalsa20.c; sourceTree = ""; }; + 310C5BD83986808FCA3A4C0E288F8825 /* crypto_secretbox_easy.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_secretbox_easy.c; path = src/libsodium/crypto_secretbox/crypto_secretbox_easy.c; sourceTree = ""; }; + 312A6534DF79BCD6F5BB4102934381F8 /* libsodium.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = libsodium.framework; path = libsodium.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 318F4674DB25A77EAA5EF0BEEF57AD63 /* AwaitKit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AwaitKit.swift; path = Sources/AwaitKit.swift; sourceTree = ""; }; - 31FEBBDBC5EC3BFE29ACE43AC4352E8C /* Pods-web3swiftExample-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-web3swiftExample-frameworks.sh"; sourceTree = ""; }; 32F1E6592482A2208F5FF896E032A959 /* OFB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = OFB.swift; path = Sources/CryptoSwift/BlockMode/OFB.swift; sourceTree = ""; }; - 3396B084F850E4EC592BD9E912A363B2 /* ABITypes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ABITypes.swift; sourceTree = ""; }; 33FAECB95A3168DF26BCDDC32479DF7C /* PMKUIKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PMKUIKit.h; path = Extensions/UIKit/Sources/PMKUIKit.h; sourceTree = ""; }; - 342CDC0ABCA2771B17C4547C86604D87 /* PromiseKit-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PromiseKit-umbrella.h"; sourceTree = ""; }; + 3500BFBD1E798806BD6C502ABC00C112 /* Alamofire-Synchronous-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-Synchronous-prefix.pch"; sourceTree = ""; }; 35773169A2F84F6C06988BD7BF8C9E1C /* AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AnyPromise.h; path = Sources/AnyPromise.h; sourceTree = ""; }; 35D1503917C3A2E11B523DCAE793F3D1 /* blake2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = blake2.h; path = src/libsodium/crypto_generichash/blake2b/ref/blake2.h; sourceTree = ""; }; 35EA06E07FC8ECDE0B57C44B119CCC28 /* hang.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = hang.m; path = Sources/hang.m; sourceTree = ""; }; 362B24BAAC664348D3160638A4355B1C /* u1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = u1.h; path = src/libsodium/crypto_stream/chacha20/dolbeau/u1.h; sourceTree = ""; }; - 3641941FC1E6A99753D268CB974F5162 /* poly1305_donna.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = poly1305_donna.c; path = src/libsodium/crypto_onetimeauth/poly1305/donna/poly1305_donna.c; sourceTree = ""; }; + 3641941FC1E6A99753D268CB974F5162 /* poly1305_donna.c */ = {isa = PBXFileReference; includeInIndex = 1; name = poly1305_donna.c; path = src/libsodium/crypto_onetimeauth/poly1305/donna/poly1305_donna.c; sourceTree = ""; }; 36B1AA6D60A3AC7BE02C7B58081CBDD8 /* crypto_secretbox_xchacha20poly1305.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_secretbox_xchacha20poly1305.h; path = src/libsodium/include/sodium/crypto_secretbox_xchacha20poly1305.h; sourceTree = ""; }; + 36D3265CF0B90338C05E12A66D18F762 /* EthereumKeystoreV3.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EthereumKeystoreV3.swift; sourceTree = ""; }; 36E02DE948CAC84AF4D545DC7D1B732D /* crypto_stream_xsalsa20.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_stream_xsalsa20.h; path = src/libsodium/include/sodium/crypto_stream_xsalsa20.h; sourceTree = ""; }; - 371A08CCB2B15A1160CE7180BB4DCB08 /* Web3+HttpProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Web3+HttpProvider.swift"; sourceTree = ""; }; - 37757183D0DED2DF5F73E640141E2F1C /* web3swift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "web3swift-prefix.pch"; sourceTree = ""; }; - 3840AEA7DB8647349A4853556F0BFBCD /* Pods-web3swiftExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-web3swiftExample.release.xcconfig"; sourceTree = ""; }; - 3872D3525E6B5E87EBF550AC9B2B1652 /* BIP32HDNode.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BIP32HDNode.swift; sourceTree = ""; }; 3901041503563C569D277831FB4F7BB5 /* fe.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = fe.h; path = src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe.h; sourceTree = ""; }; - 399511EE9DBB557526D85CFC58FD65CE /* salsa20_xmm6int-avx2.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = "salsa20_xmm6int-avx2.c"; path = "src/libsodium/crypto_stream/salsa20/xmm6int/salsa20_xmm6int-avx2.c"; sourceTree = ""; }; - 39EA1D951B36DA2E01C1C660ECFA1958 /* Web3.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Web3.swift; sourceTree = ""; }; - 39EA64BB8438444C52A92C676F34D201 /* secp256k1_ios.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = secp256k1_ios.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 399511EE9DBB557526D85CFC58FD65CE /* salsa20_xmm6int-avx2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = "salsa20_xmm6int-avx2.c"; path = "src/libsodium/crypto_stream/salsa20/xmm6int/salsa20_xmm6int-avx2.c"; sourceTree = ""; }; + 39EA64BB8438444C52A92C676F34D201 /* secp256k1_ios.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = secp256k1_ios.framework; path = secp256k1_ios.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 39EDF7E5110DA8CED315A8E626A9D474 /* crypto_onetimeauth_poly1305.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_onetimeauth_poly1305.h; path = src/libsodium/include/sodium/crypto_onetimeauth_poly1305.h; sourceTree = ""; }; 3A05C54735B8D2DC8558CC0810A4D232 /* Bitwise Ops.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Bitwise Ops.swift"; path = "sources/Bitwise Ops.swift"; sourceTree = ""; }; + 3A49A571A990F4CFA028AB216F6188A5 /* Web3+TransactionIntermediate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Web3+TransactionIntermediate.swift"; sourceTree = ""; }; 3AC46412ED8A67874B0701AA5AFA88CE /* crypto_hash_sha256.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_hash_sha256.h; path = src/libsodium/include/sodium/crypto_hash_sha256.h; sourceTree = ""; }; 3ACB091AA2B39E1E8EA17B896C15B641 /* scratch_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scratch_impl.h; path = secp256k1_ios/src/scratch_impl.h; sourceTree = ""; }; 3ADA8A3D575A220758ABD0D10042E421 /* UIViewController+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+AnyPromise.h"; path = "Extensions/UIKit/Sources/UIViewController+AnyPromise.h"; sourceTree = ""; }; 3B03EB27359BCD13C9E13E7C6C8FC4DD /* State.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = State.swift; path = Sources/State.swift; sourceTree = ""; }; 3B179274DD8754B7E8F2EF29361D5C81 /* basic-config.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "basic-config.h"; path = "secp256k1_ios/src/basic-config.h"; sourceTree = ""; }; - 3B17CAFD5954BB1D285B628A0D8F21CE /* Alamofire-Synchronous-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-Synchronous-umbrella.h"; sourceTree = ""; }; - 3B41A90CF0D8520DD7A8B9B9EAF4E29F /* libsodium-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "libsodium-prefix.pch"; sourceTree = ""; }; - 3B74E25AF039DF1CDD40C9C8B955E0C5 /* BigInt-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "BigInt-umbrella.h"; sourceTree = ""; }; 3BDDB8391D428412098CA52800D8A4B7 /* u8.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = u8.h; path = src/libsodium/crypto_stream/salsa20/xmm6int/u8.h; sourceTree = ""; }; - 3C070AD6B4B082F0B8C93C03FA18F118 /* AwaitKit-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AwaitKit-umbrella.h"; sourceTree = ""; }; - 3C1E6DA9B849B0764B5C14658A2FFAEB /* secp256k1_ios.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = secp256k1_ios.xcconfig; sourceTree = ""; }; - 3C6A3CAFBE8A840BF5E3AC58EE83CACF /* Alamofire_Synchronous.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Alamofire_Synchronous.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 3EE4F76AEECAA6929425CDCADA97EBE8 /* Base58.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Base58.swift; sourceTree = ""; }; + 3C6A3CAFBE8A840BF5E3AC58EE83CACF /* Alamofire_Synchronous.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Alamofire_Synchronous.framework; path = "Alamofire-Synchronous.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; 3F7D453B92C771E287F7857C1A3FD38E /* argon2-core.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "argon2-core.h"; path = "src/libsodium/crypto_pwhash/argon2/argon2-core.h"; sourceTree = ""; }; + 3F9403C126A65CEDFCAB5123F6649D67 /* BIP32Keystore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BIP32Keystore.swift; sourceTree = ""; }; 3FE69C0DCF3BCBDB24AB17B41576F1D9 /* crypto_sign_edwards25519sha512batch.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_sign_edwards25519sha512batch.h; path = src/libsodium/include/sodium/crypto_sign_edwards25519sha512batch.h; sourceTree = ""; }; - 400027F5D6E91FB31EBC691425536C66 /* EthereumTransaction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EthereumTransaction.swift; sourceTree = ""; }; - 40E94DB15AB89258AE71B598FE8E851D /* BIP32Keystore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BIP32Keystore.swift; sourceTree = ""; }; + 3FF38D18EB0EC35CC2A70B85CD62E729 /* Contract.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Contract.swift; sourceTree = ""; }; + 40D2B492827097064532006BA330AC84 /* CryptoSwift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = CryptoSwift.modulemap; sourceTree = ""; }; 40FEDA32083F70C4C8C9D11A88748783 /* Shifts.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Shifts.swift; path = sources/Shifts.swift; sourceTree = ""; }; - 41A3ACAEC7A956D49AAF96DA60D17C24 /* PromiseKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "PromiseKit-dummy.m"; sourceTree = ""; }; 41DB5FDDDEF383C3AC6537ADE069C662 /* onetimeauth_poly1305.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = onetimeauth_poly1305.h; path = src/libsodium/crypto_onetimeauth/poly1305/onetimeauth_poly1305.h; sourceTree = ""; }; + 4251C5DD349A96633A288035F1C7D237 /* KeystoreManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = KeystoreManager.swift; sourceTree = ""; }; 42694D02950791C7E7886B066A1A4BE1 /* ServerTrustPolicy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ServerTrustPolicy.swift; path = Source/ServerTrustPolicy.swift; sourceTree = ""; }; 42FF4601E2E74054139A0374840E9EED /* AES.Cryptors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AES.Cryptors.swift; path = Sources/CryptoSwift/AES.Cryptors.swift; sourceTree = ""; }; - 434E1979E05ADFA3D0D113ED39D8A615 /* poly1305_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = poly1305_sse2.c; path = src/libsodium/crypto_onetimeauth/poly1305/sse2/poly1305_sse2.c; sourceTree = ""; }; - 4352165E2BDE609A8B418EFC9A703788 /* core_hsalsa20.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = core_hsalsa20.c; path = src/libsodium/crypto_core/hsalsa20/core_hsalsa20.c; sourceTree = ""; }; + 434E1979E05ADFA3D0D113ED39D8A615 /* poly1305_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = poly1305_sse2.c; path = src/libsodium/crypto_onetimeauth/poly1305/sse2/poly1305_sse2.c; sourceTree = ""; }; + 4352165E2BDE609A8B418EFC9A703788 /* core_hsalsa20.c */ = {isa = PBXFileReference; includeInIndex = 1; name = core_hsalsa20.c; path = src/libsodium/crypto_core/hsalsa20/core_hsalsa20.c; sourceTree = ""; }; 44279FE08036827611632F83946C8B14 /* crypto_stream_aes128ctr.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_stream_aes128ctr.h; path = src/libsodium/include/sodium/crypto_stream_aes128ctr.h; sourceTree = ""; }; - 45338D1E3D427CC35C4BE47A478B9CCD /* Alamofire.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = Alamofire.modulemap; sourceTree = ""; }; + 445B160819FA00D783EDD09133FA4D83 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 45786D02BDFA50B5B75E10F34E597669 /* NSTask+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSTask+AnyPromise.h"; path = "Extensions/Foundation/Sources/NSTask+AnyPromise.h"; sourceTree = ""; }; 45A290F280A562C82146B8EECADAEF41 /* HMAC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HMAC.swift; path = Sources/CryptoSwift/HMAC.swift; sourceTree = ""; }; - 45E03C9141BF3E68A238FF59D63EA867 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 4638A0433A437145B3536C7E13C1B9A0 /* fe51_invert.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = fe51_invert.c; path = src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_invert.c; sourceTree = ""; }; + 4638A0433A437145B3536C7E13C1B9A0 /* fe51_invert.c */ = {isa = PBXFileReference; includeInIndex = 1; name = fe51_invert.c; path = src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_invert.c; sourceTree = ""; }; + 46574394F8698B415C697959835DA5D0 /* Web3+Instance.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Web3+Instance.swift"; sourceTree = ""; }; 46A6E75C8634EFC2F782454D00544D63 /* NetworkReachabilityManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkReachabilityManager.swift; path = Source/NetworkReachabilityManager.swift; sourceTree = ""; }; - 46F9BB8074898040DE45EBEA159BCC6C /* SipHash.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = SipHash.modulemap; sourceTree = ""; }; - 473D8D9A0657B5E63DF71A526A7FC8A4 /* crypto_scrypt-common.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = "crypto_scrypt-common.c"; path = "src/libsodium/crypto_pwhash/scryptsalsa208sha256/crypto_scrypt-common.c"; sourceTree = ""; }; - 47744E45F2A0DA60D21201C4D40704A1 /* shorthash_siphashx24.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = shorthash_siphashx24.c; path = src/libsodium/crypto_shorthash/siphash24/shorthash_siphashx24.c; sourceTree = ""; }; - 478A05A7EBC85EB4E7E0E4EB9BB28FAE /* AwaitKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "AwaitKit-dummy.m"; sourceTree = ""; }; + 473D8D9A0657B5E63DF71A526A7FC8A4 /* crypto_scrypt-common.c */ = {isa = PBXFileReference; includeInIndex = 1; name = "crypto_scrypt-common.c"; path = "src/libsodium/crypto_pwhash/scryptsalsa208sha256/crypto_scrypt-common.c"; sourceTree = ""; }; + 47744E45F2A0DA60D21201C4D40704A1 /* shorthash_siphashx24.c */ = {isa = PBXFileReference; includeInIndex = 1; name = shorthash_siphashx24.c; path = src/libsodium/crypto_shorthash/siphash24/shorthash_siphashx24.c; sourceTree = ""; }; 47AADD5986B7E982EE51081A57C2D118 /* Checksum.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Checksum.swift; path = Sources/CryptoSwift/Checksum.swift; sourceTree = ""; }; 49DF6E74BCA19C9032FA109C03F6307B /* crypto_auth_hmacsha256.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_auth_hmacsha256.h; path = src/libsodium/include/sodium/crypto_auth_hmacsha256.h; sourceTree = ""; }; 4A07350207F5EBFE5AF9E8944B064957 /* crypto_kdf_blake2b.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_kdf_blake2b.h; path = src/libsodium/include/sodium/crypto_kdf_blake2b.h; sourceTree = ""; }; 4A8867FBA2B22D0E25D5B376A4A4568C /* num_gmp_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = num_gmp_impl.h; path = secp256k1_ios/src/num_gmp_impl.h; sourceTree = ""; }; 4A963770041F9F3AABBC21B94401D1A4 /* PMKAlertController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PMKAlertController.swift; path = Extensions/UIKit/Sources/PMKAlertController.swift; sourceTree = ""; }; 4B41393F2F17EE5349B9B778ACD5B057 /* randombytes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = randombytes.h; path = src/libsodium/include/sodium/randombytes.h; sourceTree = ""; }; - 4C094226ECD37FEE51B36EA145165C05 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 4BC7A989B9644918816D8FD5AD8C3BE1 /* Pods-web3swiftExample-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-web3swiftExample-acknowledgements.markdown"; sourceTree = ""; }; + 4C1B5E8B0EEFBEA5A4604B80D3AB9793 /* web3swift.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; path = web3swift.podspec; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 4CA12281B5A71ACEB3C4F1B773AFC0E2 /* scalar_4x64_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_4x64_impl.h; path = secp256k1_ios/src/scalar_4x64_impl.h; sourceTree = ""; }; 4D382297D5E7DC31A2E278D4680C9CB6 /* CFB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CFB.swift; path = Sources/CryptoSwift/BlockMode/CFB.swift; sourceTree = ""; }; 4D813E43087878E3215B3C368F16A26D /* blake2b-load-sse41.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "blake2b-load-sse41.h"; path = "src/libsodium/crypto_generichash/blake2b/ref/blake2b-load-sse41.h"; sourceTree = ""; }; 4DD3BA5987929E8BC9A3D98C98D8FBDB /* AES+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "AES+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/AES+Foundation.swift"; sourceTree = ""; }; - 4EA8B91D9B9EA1915FEA8068AECE900E /* web3swift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = web3swift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 4EDA8B19DFBCB128C6DACC8B21A01A7F /* libsodium-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "libsodium-dummy.m"; sourceTree = ""; }; - 4F3D351FB31F8863F74D2E0E4AFEACAE /* generichash_blake2.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = generichash_blake2.c; path = src/libsodium/crypto_generichash/blake2b/generichash_blake2.c; sourceTree = ""; }; + 4E658939717252825783B1B956BBA40C /* Alamofire-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-umbrella.h"; sourceTree = ""; }; + 4EA8B91D9B9EA1915FEA8068AECE900E /* web3swift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = web3swift.framework; path = web3swift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 4F106BD4B1B591E027C15E7245F21E36 /* Web3+Protocols.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Web3+Protocols.swift"; sourceTree = ""; }; + 4F3D351FB31F8863F74D2E0E4AFEACAE /* generichash_blake2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = generichash_blake2.c; path = src/libsodium/crypto_generichash/blake2b/generichash_blake2.c; sourceTree = ""; }; 4F6968DA7F86896391E2ECFDD6C43BB0 /* ResponseSerialization.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ResponseSerialization.swift; path = Source/ResponseSerialization.swift; sourceTree = ""; }; + 4F89464E9CA231472DFA07CC61F6CA8A /* Web3+Methods.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Web3+Methods.swift"; sourceTree = ""; }; 4FB957421D5781C216525F0DFC5A61BA /* lax_der_parsing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lax_der_parsing.h; path = secp256k1_ios/contrib/lax_der_parsing.h; sourceTree = ""; }; - 51A469B18EC5D1506E4E96E2A8E218EF /* Alamofire.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Alamofire.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 522AB582984497423F37801A3E3B5C5B /* BIP32KeystoreJSONStructure.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BIP32KeystoreJSONStructure.swift; sourceTree = ""; }; + 4FC870E78BED4594079BDDD605386458 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 51A469B18EC5D1506E4E96E2A8E218EF /* Alamofire.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Alamofire.framework; path = Alamofire.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 52476A8624026BBE0EA759F8564C64CA /* common.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = common.h; path = src/libsodium/include/sodium/private/common.h; sourceTree = ""; }; - 525C54A44224FF07D0A6E21A357A6062 /* NSRegularExpressionExtension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = NSRegularExpressionExtension.swift; sourceTree = ""; }; - 52F9FDC16BB88BF03FA1431DB3114F02 /* BigInt-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "BigInt-prefix.pch"; sourceTree = ""; }; 532684B963743543BF6F25B475D9632C /* UIView+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+Promise.swift"; path = "Extensions/UIKit/Sources/UIView+Promise.swift"; sourceTree = ""; }; 5374FB4890D1D143D5D67DD358E8B0BA /* UInt64+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt64+Extension.swift"; path = "Sources/CryptoSwift/UInt64+Extension.swift"; sourceTree = ""; }; 53B19575F0B1B4E2DA16DAF895FC06CF /* SecureBytes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SecureBytes.swift; path = Sources/CryptoSwift/SecureBytes.swift; sourceTree = ""; }; 53D6EFD3179583F31C3AEBDF4ACDD4E8 /* field.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field.h; path = secp256k1_ios/src/field.h; sourceTree = ""; }; 542F37440847F5D5A08DE16A884B39A9 /* Promise+AnyPromise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Promise+AnyPromise.swift"; path = "Sources/Promise+AnyPromise.swift"; sourceTree = ""; }; 55318E639AFA1A22005AFBFBA13A20F9 /* Zalgo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Zalgo.swift; path = Sources/Zalgo.swift; sourceTree = ""; }; - 57ECEBAD75C1F91D9EE6473FA01EE5A9 /* auth_hmacsha512.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = auth_hmacsha512.c; path = src/libsodium/crypto_auth/hmacsha512/auth_hmacsha512.c; sourceTree = ""; }; + 57ECEBAD75C1F91D9EE6473FA01EE5A9 /* auth_hmacsha512.c */ = {isa = PBXFileReference; includeInIndex = 1; name = auth_hmacsha512.c; path = src/libsodium/crypto_auth/hmacsha512/auth_hmacsha512.c; sourceTree = ""; }; 57F1DF4F1A382223CC2E8DDA0333D2C8 /* BlockModeWorker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockModeWorker.swift; path = Sources/CryptoSwift/BlockMode/BlockModeWorker.swift; sourceTree = ""; }; 587515A214B06B64B046C803ED592B6E /* wrap.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = wrap.swift; path = Sources/wrap.swift; sourceTree = ""; }; - 58A95B23C5BB76448D32752AE1FA7169 /* pbkdf2-sha256.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = "pbkdf2-sha256.c"; path = "src/libsodium/crypto_pwhash/scryptsalsa208sha256/pbkdf2-sha256.c"; sourceTree = ""; }; + 58A95B23C5BB76448D32752AE1FA7169 /* pbkdf2-sha256.c */ = {isa = PBXFileReference; includeInIndex = 1; name = "pbkdf2-sha256.c"; path = "src/libsodium/crypto_pwhash/scryptsalsa208sha256/pbkdf2-sha256.c"; sourceTree = ""; }; 58C5ED66450F763E67C945B2E3ECF439 /* crypto_stream.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_stream.h; path = src/libsodium/include/sodium/crypto_stream.h; sourceTree = ""; }; - 58F3E581C0F8D2542CB8E54A4269DA03 /* onetimeauth_poly1305.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = onetimeauth_poly1305.c; path = src/libsodium/crypto_onetimeauth/poly1305/onetimeauth_poly1305.c; sourceTree = ""; }; - 5A5CDBB8EBD6F53AB55FB2F8FC459912 /* secp256k1_ios-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "secp256k1_ios-umbrella.h"; sourceTree = ""; }; - 5A7551417836719723B42EA029E81B5E /* BigInt.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = BigInt.modulemap; sourceTree = ""; }; - 5A7DAF0F5DAA2CD75B3B449EFA4CB041 /* SipHash-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SipHash-prefix.pch"; sourceTree = ""; }; - 5AC5ED1A05BBF391045278B5E3F1C9E4 /* fe_frombytes_sandy2x.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = fe_frombytes_sandy2x.c; path = src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe_frombytes_sandy2x.c; sourceTree = ""; }; + 58F3E581C0F8D2542CB8E54A4269DA03 /* onetimeauth_poly1305.c */ = {isa = PBXFileReference; includeInIndex = 1; name = onetimeauth_poly1305.c; path = src/libsodium/crypto_onetimeauth/poly1305/onetimeauth_poly1305.c; sourceTree = ""; }; + 59C35828F9F9F253A5A0CE878AA04499 /* Web3+HttpProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Web3+HttpProvider.swift"; sourceTree = ""; }; + 5AC5ED1A05BBF391045278B5E3F1C9E4 /* fe_frombytes_sandy2x.c */ = {isa = PBXFileReference; includeInIndex = 1; name = fe_frombytes_sandy2x.c; path = src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe_frombytes_sandy2x.c; sourceTree = ""; }; + 5B3EC05C97440515B2A0417D8FABC083 /* TransactionSigner.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TransactionSigner.swift; sourceTree = ""; }; 5B9060419ADEED5E433D63699D61A8A9 /* crypto_generichash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_generichash.h; path = src/libsodium/include/sodium/crypto_generichash.h; sourceTree = ""; }; 5B93998062FAFA547B53EBB58756B7EF /* ecmult_const_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_const_impl.h; path = secp256k1_ios/src/ecmult_const_impl.h; sourceTree = ""; }; - 5BB0511A55DEBA1FD49259D38C883385 /* blake2b-compress-ssse3.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = "blake2b-compress-ssse3.c"; path = "src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-ssse3.c"; sourceTree = ""; }; - 5BB4B5494DBCFC56724336508794DAA0 /* Web3+Eth.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Web3+Eth.swift"; sourceTree = ""; }; - 5C038401F0462CB6E1549BAC9B709192 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 5BB0511A55DEBA1FD49259D38C883385 /* blake2b-compress-ssse3.c */ = {isa = PBXFileReference; includeInIndex = 1; name = "blake2b-compress-ssse3.c"; path = "src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-ssse3.c"; sourceTree = ""; }; 5C3832E296CABF9B2297C23DCDE57842 /* base2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = base2.h; path = src/libsodium/crypto_core/curve25519/ref10/base2.h; sourceTree = ""; }; 5CA62546EB003E6CBC5E6D0B547202D2 /* Prime Test.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Prime Test.swift"; path = "sources/Prime Test.swift"; sourceTree = ""; }; - 5CFD3E18B52A69B96D0F58B19A3CC57A /* shorthash_siphashx24_ref.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = shorthash_siphashx24_ref.c; path = src/libsodium/crypto_shorthash/siphash24/ref/shorthash_siphashx24_ref.c; sourceTree = ""; }; + 5CFD3E18B52A69B96D0F58B19A3CC57A /* shorthash_siphashx24_ref.c */ = {isa = PBXFileReference; includeInIndex = 1; name = shorthash_siphashx24_ref.c; path = src/libsodium/crypto_shorthash/siphash24/ref/shorthash_siphashx24_ref.c; sourceTree = ""; }; + 5D767CBDF5CC58B163F9BDD88987B79B /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; + 5DF7B5A63F2115DE4A16A2A7184A8F35 /* SipHash.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SipHash.modulemap; sourceTree = ""; }; 5EB3D8044EE1B129176D10A0E06E3EEC /* crypto_shorthash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_shorthash.h; path = src/libsodium/include/sodium/crypto_shorthash.h; sourceTree = ""; }; 5EB4A9C789A7CD99C2965879F6BA1371 /* curve25519_donna_c64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = curve25519_donna_c64.h; path = src/libsodium/crypto_scalarmult/curve25519/donna_c64/curve25519_donna_c64.h; sourceTree = ""; }; + 5F15503707D27B37F2B99B97C18E32AD /* AwaitKit-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AwaitKit-umbrella.h"; sourceTree = ""; }; 5F6A0FF58EC297B8BB9D20A1E410FB25 /* pbkdf2-sha256.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "pbkdf2-sha256.h"; path = "src/libsodium/crypto_pwhash/scryptsalsa208sha256/pbkdf2-sha256.h"; sourceTree = ""; }; - 607BC90E20E391CF7C61E22E08F2A84C /* blake2b-compress-ref.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = "blake2b-compress-ref.c"; path = "src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-ref.c"; sourceTree = ""; }; - 6089F3E0B434CBA9013A5CB6A501F7BD /* Web3Swift+AbstractSigner.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Web3Swift+AbstractSigner.swift"; sourceTree = ""; }; + 607BC90E20E391CF7C61E22E08F2A84C /* blake2b-compress-ref.c */ = {isa = PBXFileReference; includeInIndex = 1; name = "blake2b-compress-ref.c"; path = "src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-ref.c"; sourceTree = ""; }; 61845092278E54A5E2F6A47259633982 /* UIViewController+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIViewController+Promise.swift"; path = "Extensions/UIKit/Sources/UIViewController+Promise.swift"; sourceTree = ""; }; 618D12F0410ED6A5A68BAAE7C5D15682 /* shorthash_siphash_ref.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = shorthash_siphash_ref.h; path = src/libsodium/crypto_shorthash/siphash24/ref/shorthash_siphash_ref.h; sourceTree = ""; }; 6239BB700E746160EF00B2A69EDBB3BA /* Utils+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Utils+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Utils+Foundation.swift"; sourceTree = ""; }; - 62B523B0A39166961F10B894652BD993 /* stream_salsa2012_ref.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = stream_salsa2012_ref.c; path = src/libsodium/crypto_stream/salsa2012/ref/stream_salsa2012_ref.c; sourceTree = ""; }; + 62B523B0A39166961F10B894652BD993 /* stream_salsa2012_ref.c */ = {isa = PBXFileReference; includeInIndex = 1; name = stream_salsa2012_ref.c; path = src/libsodium/crypto_stream/salsa2012/ref/stream_salsa2012_ref.c; sourceTree = ""; }; 6354F4280CE748D9D44D23320994E2E0 /* stream_chacha20.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = stream_chacha20.h; path = src/libsodium/crypto_stream/chacha20/stream_chacha20.h; sourceTree = ""; }; 636AD2F4AD2B523E224B5BAF1F4CAA22 /* String+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+Extension.swift"; path = "Sources/CryptoSwift/String+Extension.swift"; sourceTree = ""; }; + 637FFA0086F252CAE578A40D3E3454EB /* ABITypes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ABITypes.swift; sourceTree = ""; }; 648FEBB716E4C7A29B7D6BE017F7DEB8 /* scalar_4x64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_4x64.h; path = secp256k1_ios/src/scalar_4x64.h; sourceTree = ""; }; 65C48F07C9554E6D77405D7509B7991C /* UInt32+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt32+Extension.swift"; path = "Sources/CryptoSwift/UInt32+Extension.swift"; sourceTree = ""; }; 65D86D292A393EFC79914CC1FBD0B7CC /* PBKDF1.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PBKDF1.swift; path = Sources/CryptoSwift/PKCS/PBKDF1.swift; sourceTree = ""; }; - 6694907FA1B0AAB5D62498F9F09454BB /* curve25519_ref10.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = curve25519_ref10.c; path = src/libsodium/crypto_core/curve25519/ref10/curve25519_ref10.c; sourceTree = ""; }; + 65E257CA9926B12FA56E8D0B1F987D6E /* Pods-web3swiftExample-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-web3swiftExample-frameworks.sh"; sourceTree = ""; }; + 6694907FA1B0AAB5D62498F9F09454BB /* curve25519_ref10.c */ = {isa = PBXFileReference; includeInIndex = 1; name = curve25519_ref10.c; path = src/libsodium/crypto_core/curve25519/ref10/curve25519_ref10.c; sourceTree = ""; }; 676F8633CA6ABA5EF03B6B44A94BFCE2 /* crypto_verify_64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_verify_64.h; path = src/libsodium/include/sodium/crypto_verify_64.h; sourceTree = ""; }; 6792326506BB353111AD07F88161B2FE /* DigestType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DigestType.swift; path = Sources/CryptoSwift/DigestType.swift; sourceTree = ""; }; + 67A41557FE2F61C175AFB783862F61F6 /* BIP32KeystoreJSONStructure.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BIP32KeystoreJSONStructure.swift; sourceTree = ""; }; 67EBFDCBE3312FC92B2F78A679F9FBC5 /* CBC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CBC.swift; path = Sources/CryptoSwift/BlockMode/CBC.swift; sourceTree = ""; }; 67F67A38B2975BCEC597C9BDF0B4BC82 /* int128.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = int128.h; path = src/libsodium/crypto_stream/aes128ctr/nacl/int128.h; sourceTree = ""; }; - 68A01670FAE205501EFBE550CDB03F45 /* argon2.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = argon2.c; path = src/libsodium/crypto_pwhash/argon2/argon2.c; sourceTree = ""; }; - 693235652C58571A78EE769A3F750C3B /* crypto_hash.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = crypto_hash.c; path = src/libsodium/crypto_hash/crypto_hash.c; sourceTree = ""; }; + 68A01670FAE205501EFBE550CDB03F45 /* argon2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = argon2.c; path = src/libsodium/crypto_pwhash/argon2/argon2.c; sourceTree = ""; }; + 693235652C58571A78EE769A3F750C3B /* crypto_hash.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_hash.c; path = src/libsodium/crypto_hash/crypto_hash.c; sourceTree = ""; }; 695E1F76355D5D3A04712CF9EDDD5B41 /* String Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String Conversion.swift"; path = "sources/String Conversion.swift"; sourceTree = ""; }; 6967B8AE5E636A1B4EF5DE94DC1A45CD /* SessionManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionManager.swift; path = Source/SessionManager.swift; sourceTree = ""; }; 69B937732822BE36210DAC86489CF250 /* SipHasher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SipHasher.swift; path = SipHash/SipHasher.swift; sourceTree = ""; }; - 6A0F73A3F9A05D9232E2F9D989B597B8 /* web3swift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "web3swift-dummy.m"; sourceTree = ""; }; 6A4ECB88D154A4CBAF4DDD89AB708E35 /* crypto_scalarmult_curve25519.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_scalarmult_curve25519.h; path = src/libsodium/include/sodium/crypto_scalarmult_curve25519.h; sourceTree = ""; }; - 6A936531DE70CF53F928DC972DB93E13 /* argon2-encoding.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = "argon2-encoding.c"; path = "src/libsodium/crypto_pwhash/argon2/argon2-encoding.c"; sourceTree = ""; }; - 6B236A4C3F459984CEE8AD4A1B854B78 /* SipHash-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SipHash-umbrella.h"; sourceTree = ""; }; + 6A936531DE70CF53F928DC972DB93E13 /* argon2-encoding.c */ = {isa = PBXFileReference; includeInIndex = 1; name = "argon2-encoding.c"; path = "src/libsodium/crypto_pwhash/argon2/argon2-encoding.c"; sourceTree = ""; }; + 6AD37CB1727826E35D3268049124768D /* secp256k1_ios.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = secp256k1_ios.xcconfig; sourceTree = ""; }; 6B5133A667C42BE850835F330CE1ABE5 /* secp256k1_ios.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = secp256k1_ios.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 6B75457C56ECE9B5EFBD24516FACD41F /* Array+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Array+Extension.swift"; sourceTree = ""; }; - 6BD04C5335593D7AC9EE55BF0C10004E /* curve25519_donna_c64.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = curve25519_donna_c64.c; path = src/libsodium/crypto_scalarmult/curve25519/donna_c64/curve25519_donna_c64.c; sourceTree = ""; }; + 6BD04C5335593D7AC9EE55BF0C10004E /* curve25519_donna_c64.c */ = {isa = PBXFileReference; includeInIndex = 1; name = curve25519_donna_c64.c; path = src/libsodium/crypto_scalarmult/curve25519/donna_c64/curve25519_donna_c64.c; sourceTree = ""; }; 6C9DDDA62E4687FF75B12ADD70389C25 /* crypto_stream_salsa20.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_stream_salsa20.h; path = src/libsodium/include/sodium/crypto_stream_salsa20.h; sourceTree = ""; }; 6D60816A4884F3513FABF94D8EE82232 /* Error.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Error.swift; path = Sources/Error.swift; sourceTree = ""; }; - 6EB0CC2FAEF57AE316BE4E97096252AF /* ABIEncoder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ABIEncoder.swift; sourceTree = ""; }; + 6F0CA3FB358CB7B184EBD5888E7C7B44 /* CryptoExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CryptoExtensions.swift; sourceTree = ""; }; 6F44300D2C7F2C770A4FA890CAF4234D /* Array+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Array+Extensions.swift"; path = "Sources/CryptoSwift/Array+Extensions.swift"; sourceTree = ""; }; 6FEA8826A7748A1528BA2225DDD45C06 /* CryptoSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CryptoSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 704C024805566CD729790C80B68A0B3D /* field_5x52_int128_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_5x52_int128_impl.h; path = secp256k1_ios/src/field_5x52_int128_impl.h; sourceTree = ""; }; 7086D0452CB4D5EE4DE2C77047B474AC /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - 709D4ECC76BBF45F6F88E318C8D22C0D /* AwaitKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AwaitKit-prefix.pch"; sourceTree = ""; }; + 70C91B2489B60F37CA0C7821DA227461 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 71392CC967E22395C4516B0830FEB077 /* Rabbit+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Rabbit+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Rabbit+Foundation.swift"; sourceTree = ""; }; 71708EF919E0C9D9B9D71E4DFE3F79C0 /* crypto_shorthash_siphash24.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_shorthash_siphash24.h; path = src/libsodium/include/sodium/crypto_shorthash_siphash24.h; sourceTree = ""; }; - 727BED74901CF5F21980F0F85DD0C767 /* aead_xchacha20poly1305.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = aead_xchacha20poly1305.c; path = src/libsodium/crypto_aead/xchacha20poly1305/sodium/aead_xchacha20poly1305.c; sourceTree = ""; }; + 71F8D9712CCF3C50FABA4EA1342C752F /* CryptoSwift.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = CryptoSwift.xcconfig; sourceTree = ""; }; + 727BED74901CF5F21980F0F85DD0C767 /* aead_xchacha20poly1305.c */ = {isa = PBXFileReference; includeInIndex = 1; name = aead_xchacha20poly1305.c; path = src/libsodium/crypto_aead/xchacha20poly1305/sodium/aead_xchacha20poly1305.c; sourceTree = ""; }; 7291BA62A7BDB59C057922743CE056F4 /* SHA2.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SHA2.swift; path = Sources/CryptoSwift/SHA2.swift; sourceTree = ""; }; + 72B9241BE1402124361F02939811C3FD /* Dictionary+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Dictionary+Extension.swift"; sourceTree = ""; }; 72DCF70AF87EDE0979B2FAECBFCA6328 /* salsa20_xmm6int-sse2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "salsa20_xmm6int-sse2.h"; path = "src/libsodium/crypto_stream/salsa20/xmm6int/salsa20_xmm6int-sse2.h"; sourceTree = ""; }; 72E3A75D7B035E424DBAEEDB5AAB2C6F /* Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Promise.swift; path = Sources/Promise.swift; sourceTree = ""; }; 7384C46CB5B89984DB6825E02DBD517B /* poly1305_donna32.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = poly1305_donna32.h; path = src/libsodium/crypto_onetimeauth/poly1305/donna/poly1305_donna32.h; sourceTree = ""; }; - 75275F850CC12EEE514821DF4FBB5D8F /* chacha20_ref.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = chacha20_ref.c; path = src/libsodium/crypto_stream/chacha20/ref/chacha20_ref.c; sourceTree = ""; }; - 767DB7815406A6FA2E627A14295B74F2 /* libsodium-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "libsodium-umbrella.h"; sourceTree = ""; }; + 74DAEF661D967E1C43CBDF88353DCD58 /* BigInt-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "BigInt-prefix.pch"; sourceTree = ""; }; + 75275F850CC12EEE514821DF4FBB5D8F /* chacha20_ref.c */ = {isa = PBXFileReference; includeInIndex = 1; name = chacha20_ref.c; path = src/libsodium/crypto_stream/chacha20/ref/chacha20_ref.c; sourceTree = ""; }; + 7599E67F8D1CAEE9C39D25B4B252FA04 /* web3swift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "web3swift-prefix.pch"; sourceTree = ""; }; 768B5C0BA451E678A8AF31AAF4E5CFED /* join.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = join.m; path = Sources/join.m; sourceTree = ""; }; 76ED848CDA4F4208FFF8B2219407512F /* UInt16+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt16+Extension.swift"; path = "Sources/CryptoSwift/UInt16+Extension.swift"; sourceTree = ""; }; 7719CB9087CB3FC802BD0A42AD9782E6 /* scalar_low.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_low.h; path = secp256k1_ios/src/scalar_low.h; sourceTree = ""; }; 776244C1A0697A48ABC4A88B9AC76B62 /* Addition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Addition.swift; path = sources/Addition.swift; sourceTree = ""; }; 789D853CF2D2ED366B97791424F4F29E /* crypto_stream_chacha20.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_stream_chacha20.h; path = src/libsodium/include/sodium/crypto_stream_chacha20.h; sourceTree = ""; }; 78A6B6D271DFF38E5560D0E203EF227E /* eckey_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = eckey_impl.h; path = secp256k1_ios/src/eckey_impl.h; sourceTree = ""; }; - 78ACB7AE9E266C32AD7A2EC4ECCC7912 /* Contract.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Contract.swift; sourceTree = ""; }; - 78CF790C97329ED18EF9528E51873631 /* Alamofire-Synchronous-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Alamofire-Synchronous-dummy.m"; sourceTree = ""; }; - 78F120FF958D787715622B3CA75DD5E1 /* crypto_sign.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = crypto_sign.c; path = src/libsodium/crypto_sign/crypto_sign.c; sourceTree = ""; }; + 78F120FF958D787715622B3CA75DD5E1 /* crypto_sign.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_sign.c; path = src/libsodium/crypto_sign/crypto_sign.c; sourceTree = ""; }; 78F7A08585A2451F1C1489A8F65463BD /* Rabbit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Rabbit.swift; path = Sources/CryptoSwift/Rabbit.swift; sourceTree = ""; }; - 791DA52F8CD627F34E33674604EE858B /* Pods-web3swiftExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-web3swiftExample.debug.xcconfig"; sourceTree = ""; }; 79434EDF9BCE1588E4651EB1142BF45F /* crypto_stream_salsa2012.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_stream_salsa2012.h; path = src/libsodium/include/sodium/crypto_stream_salsa2012.h; sourceTree = ""; }; 7959DDA1ACF5428A7058AF0329BCA03F /* MD5.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MD5.swift; path = Sources/CryptoSwift/MD5.swift; sourceTree = ""; }; - 7A766F1E8A7AE0D6D45EA202E49E4844 /* Web3+Infura.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Web3+Infura.swift"; sourceTree = ""; }; 7AE0DAAF7C68B4912D03CB0FEBA29581 /* NSNotificationCenter+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSNotificationCenter+Promise.swift"; path = "Extensions/Foundation/Sources/NSNotificationCenter+Promise.swift"; sourceTree = ""; }; 7AE22CCD8AE04DB0EE42AFF19F679A93 /* ed25519_ref10.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ed25519_ref10.h; path = src/libsodium/crypto_sign/ed25519/ref10/ed25519_ref10.h; sourceTree = ""; }; - 7B3118129A4387B6EA8C997F86A84194 /* Alamofire-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-umbrella.h"; sourceTree = ""; }; 7B52795E380E76C28B9A308424766B56 /* Words and Bits.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Words and Bits.swift"; path = "sources/Words and Bits.swift"; sourceTree = ""; }; 7D1EEB1A1308BD797E0C3D369F8726A3 /* BlockModeOptions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockModeOptions.swift; path = Sources/CryptoSwift/BlockMode/BlockModeOptions.swift; sourceTree = ""; }; - 7D350C7D7E9664C4DF13BDCCC0CB060B /* pwhash_argon2i.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = pwhash_argon2i.c; path = src/libsodium/crypto_pwhash/argon2/pwhash_argon2i.c; sourceTree = ""; }; + 7D350C7D7E9664C4DF13BDCCC0CB060B /* pwhash_argon2i.c */ = {isa = PBXFileReference; includeInIndex = 1; name = pwhash_argon2i.c; path = src/libsodium/crypto_pwhash/argon2/pwhash_argon2i.c; sourceTree = ""; }; 7DA4296963BDD85F117BCB19BECB1CD3 /* TaskDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TaskDelegate.swift; path = Source/TaskDelegate.swift; sourceTree = ""; }; - 7E939F4187B87B886D2945B9635912D9 /* scalarmult_curve25519.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = scalarmult_curve25519.c; path = src/libsodium/crypto_scalarmult/curve25519/scalarmult_curve25519.c; sourceTree = ""; }; + 7DD88E282724B7FE7D493B80D32C576F /* CryptoSwift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CryptoSwift-prefix.pch"; sourceTree = ""; }; + 7E939F4187B87B886D2945B9635912D9 /* scalarmult_curve25519.c */ = {isa = PBXFileReference; includeInIndex = 1; name = scalarmult_curve25519.c; path = src/libsodium/crypto_scalarmult/curve25519/scalarmult_curve25519.c; sourceTree = ""; }; + 7ED86A9CBDB836720BB4CF0BAF693508 /* Pods-web3swiftExample-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-web3swiftExample-dummy.m"; sourceTree = ""; }; 7EDF7D0149923C16F010FC1614F65E9B /* Blowfish.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Blowfish.swift; path = Sources/CryptoSwift/Blowfish.swift; sourceTree = ""; }; 7F704B07EAA87233A842C14AC92683D4 /* poly1305_sse2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = poly1305_sse2.h; path = src/libsodium/crypto_onetimeauth/poly1305/sse2/poly1305_sse2.h; sourceTree = ""; }; 7FAD8F02B6E0425FD24D3DE6C8699CE6 /* chacha20_dolbeau-ssse3.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "chacha20_dolbeau-ssse3.h"; path = "src/libsodium/crypto_stream/chacha20/dolbeau/chacha20_dolbeau-ssse3.h"; sourceTree = ""; }; - 7FE1E530B3E57772AC21598F4C6AD371 /* crypto_generichash.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = crypto_generichash.c; path = src/libsodium/crypto_generichash/crypto_generichash.c; sourceTree = ""; }; + 7FE1E530B3E57772AC21598F4C6AD371 /* crypto_generichash.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_generichash.c; path = src/libsodium/crypto_generichash/crypto_generichash.c; sourceTree = ""; }; + 8045331C4402645985132EBF49BEF91C /* NSRegularExpressionExtension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = NSRegularExpressionExtension.swift; sourceTree = ""; }; + 804CD46C26745212AF84412C41FF3CAC /* AwaitKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AwaitKit-prefix.pch"; sourceTree = ""; }; 806411786CC469989E42BAFFBD0279A3 /* RandomAccessBlockModeWorker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RandomAccessBlockModeWorker.swift; path = Sources/CryptoSwift/BlockMode/RandomAccessBlockModeWorker.swift; sourceTree = ""; }; 8189DC7A2948BBC16579AC1A73C1807B /* num_gmp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = num_gmp.h; path = secp256k1_ios/src/num_gmp.h; sourceTree = ""; }; - 819454A984273E29F6463AB7B0BA5C9E /* Alamofire-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-prefix.pch"; sourceTree = ""; }; 81E4F6AE526CCB05828DCB45B329E5C2 /* fwd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = fwd.h; path = Sources/fwd.h; sourceTree = ""; }; - 82740FAACFE6E8102720B0CF8FEB637F /* web3swift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "web3swift-umbrella.h"; sourceTree = ""; }; 82847102EAAA24D5B109984C915414C8 /* scratch.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scratch.h; path = secp256k1_ios/src/scratch.h; sourceTree = ""; }; 829BF8BA495AF23C38E2E0A5DC6AD068 /* CALayer+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CALayer+AnyPromise.h"; path = "Extensions/QuartzCore/Sources/CALayer+AnyPromise.h"; sourceTree = ""; }; 82B9EBFEC7D7B5D40E1D64C164D63842 /* Int+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Int+Extension.swift"; path = "Sources/CryptoSwift/Int+Extension.swift"; sourceTree = ""; }; - 839FA12031C6C7201C6E34953AB7644F /* EthereumAddress.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EthereumAddress.swift; sourceTree = ""; }; - 83AED31596AE455F92FC39B6F726C0EB /* chacha20_dolbeau-ssse3.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = "chacha20_dolbeau-ssse3.c"; path = "src/libsodium/crypto_stream/chacha20/dolbeau/chacha20_dolbeau-ssse3.c"; sourceTree = ""; }; - 83C76C60BCE6AFBEB824A9C64E3EDEBF /* salsa20_xmm6.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = salsa20_xmm6.c; path = src/libsodium/crypto_stream/salsa20/xmm6/salsa20_xmm6.c; sourceTree = ""; }; + 83AED31596AE455F92FC39B6F726C0EB /* chacha20_dolbeau-ssse3.c */ = {isa = PBXFileReference; includeInIndex = 1; name = "chacha20_dolbeau-ssse3.c"; path = "src/libsodium/crypto_stream/chacha20/dolbeau/chacha20_dolbeau-ssse3.c"; sourceTree = ""; }; + 83C76C60BCE6AFBEB824A9C64E3EDEBF /* salsa20_xmm6.c */ = {isa = PBXFileReference; includeInIndex = 1; name = salsa20_xmm6.c; path = src/libsodium/crypto_stream/salsa20/xmm6/salsa20_xmm6.c; sourceTree = ""; }; 8465C7D9DDD5875D26CDD99ECD0E9F26 /* DispatchQueue+Async.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DispatchQueue+Async.swift"; path = "Sources/DispatchQueue+Async.swift"; sourceTree = ""; }; - 84DF494334B4A2252D778FB33C425F9D /* blake2b-ref.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = "blake2b-ref.c"; path = "src/libsodium/crypto_generichash/blake2b/ref/blake2b-ref.c"; sourceTree = ""; }; - 8543219ADD9FA29C48F0060B5599D832 /* afternm_aes128ctr.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = afternm_aes128ctr.c; path = src/libsodium/crypto_stream/aes128ctr/nacl/afternm_aes128ctr.c; sourceTree = ""; }; + 84DF494334B4A2252D778FB33C425F9D /* blake2b-ref.c */ = {isa = PBXFileReference; includeInIndex = 1; name = "blake2b-ref.c"; path = "src/libsodium/crypto_generichash/blake2b/ref/blake2b-ref.c"; sourceTree = ""; }; + 8543219ADD9FA29C48F0060B5599D832 /* afternm_aes128ctr.c */ = {isa = PBXFileReference; includeInIndex = 1; name = afternm_aes128ctr.c; path = src/libsodium/crypto_stream/aes128ctr/nacl/afternm_aes128ctr.c; sourceTree = ""; }; 85DE9C9E4D5D19E8E1EB15AA782A844F /* Codable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Codable.swift; path = sources/Codable.swift; sourceTree = ""; }; - 85E77C6CADA07FBC7C601B5D8B67F0D3 /* generichash_blake2b.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = generichash_blake2b.c; path = src/libsodium/crypto_generichash/blake2b/ref/generichash_blake2b.c; sourceTree = ""; }; - 860710FEC75D881C4DA79921FEB71EA1 /* web3swift.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = web3swift.xcconfig; sourceTree = ""; }; + 85E77C6CADA07FBC7C601B5D8B67F0D3 /* generichash_blake2b.c */ = {isa = PBXFileReference; includeInIndex = 1; name = generichash_blake2b.c; path = src/libsodium/crypto_generichash/blake2b/ref/generichash_blake2b.c; sourceTree = ""; }; + 86323F7D7148A07EDA5C88B5DC76C6AE /* PromiseKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "PromiseKit-dummy.m"; sourceTree = ""; }; 86BAD4CAFA1D89DEC22B5182FCA98468 /* field_5x52.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_5x52.h; path = secp256k1_ios/src/field_5x52.h; sourceTree = ""; }; - 871A70C5117D06D547176DD6B8941418 /* RIPEMD160+StackOveflow.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RIPEMD160+StackOveflow.swift"; sourceTree = ""; }; - 87F94F47EC670FDCC64EFD3D195468B9 /* int128_aes128ctr.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = int128_aes128ctr.c; path = src/libsodium/crypto_stream/aes128ctr/nacl/int128_aes128ctr.c; sourceTree = ""; }; + 87F94F47EC670FDCC64EFD3D195468B9 /* int128_aes128ctr.c */ = {isa = PBXFileReference; includeInIndex = 1; name = int128_aes128ctr.c; path = src/libsodium/crypto_stream/aes128ctr/nacl/int128_aes128ctr.c; sourceTree = ""; }; 880901527E506DD818BB4AC5ACD0F194 /* crypto_pwhash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_pwhash.h; path = src/libsodium/include/sodium/crypto_pwhash.h; sourceTree = ""; }; - 882D4051417C1D050E2FE6BF057B0A5E /* Pods-web3swiftExample-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-web3swiftExample-resources.sh"; sourceTree = ""; }; - 886F1A8A74778E12FBB334F39886B392 /* aead_chacha20poly1305.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = aead_chacha20poly1305.c; path = src/libsodium/crypto_aead/chacha20poly1305/sodium/aead_chacha20poly1305.c; sourceTree = ""; }; + 886F1A8A74778E12FBB334F39886B392 /* aead_chacha20poly1305.c */ = {isa = PBXFileReference; includeInIndex = 1; name = aead_chacha20poly1305.c; path = src/libsodium/crypto_aead/chacha20poly1305/sodium/aead_chacha20poly1305.c; sourceTree = ""; }; 88AED21B5224D03D613F729DD7045E7C /* Primitive Types.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Primitive Types.swift"; path = "SipHash/Primitive Types.swift"; sourceTree = ""; }; - 8922A8B7A7F2AD1377DC16A11AC34F77 /* argon2-fill-block-ssse3.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = "argon2-fill-block-ssse3.c"; path = "src/libsodium/crypto_pwhash/argon2/argon2-fill-block-ssse3.c"; sourceTree = ""; }; + 8922A8B7A7F2AD1377DC16A11AC34F77 /* argon2-fill-block-ssse3.c */ = {isa = PBXFileReference; includeInIndex = 1; name = "argon2-fill-block-ssse3.c"; path = "src/libsodium/crypto_pwhash/argon2/argon2-fill-block-ssse3.c"; sourceTree = ""; }; 893B88B0FDD456EC06D9EA439B533C4E /* field_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_impl.h; path = secp256k1_ios/src/field_impl.h; sourceTree = ""; }; - 894D15974F4239FC5E6AEB121E7ED1FC /* chacha20_dolbeau-avx2.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = "chacha20_dolbeau-avx2.c"; path = "src/libsodium/crypto_stream/chacha20/dolbeau/chacha20_dolbeau-avx2.c"; sourceTree = ""; }; + 894D15974F4239FC5E6AEB121E7ED1FC /* chacha20_dolbeau-avx2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = "chacha20_dolbeau-avx2.c"; path = "src/libsodium/crypto_stream/chacha20/dolbeau/chacha20_dolbeau-avx2.c"; sourceTree = ""; }; 89516F5076E6DD9C07A6BB655509240D /* group.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = group.h; path = secp256k1_ios/src/group.h; sourceTree = ""; }; + 898ABA8C547AA09133B7F0443ACE6ED9 /* Data+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Data+Extension.swift"; sourceTree = ""; }; 89E792BDA15806C673E76B4B7600BEAE /* NSTask+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSTask+AnyPromise.m"; path = "Extensions/Foundation/Sources/NSTask+AnyPromise.m"; sourceTree = ""; }; - 8AFEB0DC11DAF830A23CFF736F60CF54 /* Alamofire-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Alamofire-dummy.m"; sourceTree = ""; }; - 8B335EC490D220A3F3AC4D5F45A3E4EF /* hash_sha512.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = hash_sha512.c; path = src/libsodium/crypto_hash/sha512/hash_sha512.c; sourceTree = ""; }; - 8BB9CD5F0CF1B1A74BD5A05AF4BB13D7 /* stream_salsa2012.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = stream_salsa2012.c; path = src/libsodium/crypto_stream/salsa2012/stream_salsa2012.c; sourceTree = ""; }; + 8B335EC490D220A3F3AC4D5F45A3E4EF /* hash_sha512.c */ = {isa = PBXFileReference; includeInIndex = 1; name = hash_sha512.c; path = src/libsodium/crypto_hash/sha512/hash_sha512.c; sourceTree = ""; }; + 8BB9CD5F0CF1B1A74BD5A05AF4BB13D7 /* stream_salsa2012.c */ = {isa = PBXFileReference; includeInIndex = 1; name = stream_salsa2012.c; path = src/libsodium/crypto_stream/salsa2012/stream_salsa2012.c; sourceTree = ""; }; 8D187DC321DF97DB1D2D177E948762D9 /* Data+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data+Extension.swift"; path = "Sources/CryptoSwift/Foundation/Data+Extension.swift"; sourceTree = ""; }; - 8D6B4DD7FE5634E4623F65F355F5606E /* secp256k1_ios-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "secp256k1_ios-prefix.pch"; sourceTree = ""; }; 8D6E5BAD8FFB4B8AC90BA34890210443 /* crypto_hash_sha512.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_hash_sha512.h; path = src/libsodium/include/sodium/crypto_hash_sha512.h; sourceTree = ""; }; 8DB7C8CA1BFC474D2F05C472191DCF6B /* Utils.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Utils.swift; path = Sources/CryptoSwift/Utils.swift; sourceTree = ""; }; - 8E016512CDB00960A8B72873AB41B8EE /* consts_aes128ctr.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = consts_aes128ctr.c; path = src/libsodium/crypto_stream/aes128ctr/nacl/consts_aes128ctr.c; sourceTree = ""; }; + 8E016512CDB00960A8B72873AB41B8EE /* consts_aes128ctr.c */ = {isa = PBXFileReference; includeInIndex = 1; name = consts_aes128ctr.c; path = src/libsodium/crypto_stream/aes128ctr/nacl/consts_aes128ctr.c; sourceTree = ""; }; 8E7572C6A3FAAF502CC5EE7BFF210D4E /* crypto_stream_salsa208.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_stream_salsa208.h; path = src/libsodium/include/sodium/crypto_stream_salsa208.h; sourceTree = ""; }; 8EB0C9BB080362B54B8FCD58E248E2D5 /* salsa20_ref.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = salsa20_ref.h; path = src/libsodium/crypto_stream/salsa20/ref/salsa20_ref.h; sourceTree = ""; }; 8ECAE25798E81E59CA4D006633BA25E8 /* PKCS7Padding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKCS7Padding.swift; path = Sources/CryptoSwift/PKCS/PKCS7Padding.swift; sourceTree = ""; }; 8EE42243A951876055DC9A4D8EEE0753 /* Process+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Process+Promise.swift"; path = "Extensions/Foundation/Sources/Process+Promise.swift"; sourceTree = ""; }; 906A225050C6255ADB8831C28F5CCCFB /* BlockMode.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockMode.swift; path = Sources/CryptoSwift/BlockMode/BlockMode.swift; sourceTree = ""; }; - 90F2D0A93AD7398D4919CE6C2DAAFE90 /* core_hsalsa20_ref2.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = core_hsalsa20_ref2.c; path = src/libsodium/crypto_core/hsalsa20/ref2/core_hsalsa20_ref2.c; sourceTree = ""; }; - 91BEB75B70021D0C633974371ED0B1F9 /* web3swift.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = web3swift.h; path = web3swift/web3swift.h; sourceTree = ""; }; + 90F2D0A93AD7398D4919CE6C2DAAFE90 /* core_hsalsa20_ref2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = core_hsalsa20_ref2.c; path = src/libsodium/crypto_core/hsalsa20/ref2/core_hsalsa20_ref2.c; sourceTree = ""; }; 9298B8214B1234BF8ED41F1C4B0D10BA /* PromiseKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PromiseKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 932E5775328FCB1A272D2C6A8291CADB /* DispatchQueue+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DispatchQueue+Promise.swift"; path = "Sources/DispatchQueue+Promise.swift"; sourceTree = ""; }; 933A516C95B96631AA76FC2480E83402 /* SipHashable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SipHashable.swift; path = SipHash/SipHashable.swift; sourceTree = ""; }; 9358A8A46D1215EAD0C0DBD5612943D5 /* crypto_core_salsa2012.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_core_salsa2012.h; path = src/libsodium/include/sodium/crypto_core_salsa2012.h; sourceTree = ""; }; - 937146C615D2590707ACDEDC825CA276 /* secp256k1.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = secp256k1.c; path = secp256k1_ios/src/secp256k1.c; sourceTree = ""; }; - 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 9433E8B33481FD162428EC795D2A16DA /* ABIRecordParser.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ABIRecordParser.swift; sourceTree = ""; }; + 937146C615D2590707ACDEDC825CA276 /* secp256k1.c */ = {isa = PBXFileReference; includeInIndex = 1; name = secp256k1.c; path = secp256k1_ios/src/secp256k1.c; sourceTree = ""; }; + 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 9433F5CDC1BC878642A083AB4A05D0F5 /* u0.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = u0.h; path = src/libsodium/crypto_stream/salsa20/xmm6int/u0.h; sourceTree = ""; }; - 9439296BAB27817E0E8C1F023584B984 /* xor_afternm_aes128ctr.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = xor_afternm_aes128ctr.c; path = src/libsodium/crypto_stream/aes128ctr/nacl/xor_afternm_aes128ctr.c; sourceTree = ""; }; + 9439296BAB27817E0E8C1F023584B984 /* xor_afternm_aes128ctr.c */ = {isa = PBXFileReference; includeInIndex = 1; name = xor_afternm_aes128ctr.c; path = src/libsodium/crypto_stream/aes128ctr/nacl/xor_afternm_aes128ctr.c; sourceTree = ""; }; + 95553BF967F8393CC0E15377C588E57E /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 95941917130B92356DD2718DA3C3BF88 /* poly1305_donna.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = poly1305_donna.h; path = src/libsodium/crypto_onetimeauth/poly1305/donna/poly1305_donna.h; sourceTree = ""; }; 95A270CD2E6C3C27B38B1741F9ADE4B2 /* ECB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ECB.swift; path = Sources/CryptoSwift/BlockMode/ECB.swift; sourceTree = ""; }; 95F84F0832E11E6C3FF3ABD20F5F15BE /* ZeroPadding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ZeroPadding.swift; path = Sources/CryptoSwift/ZeroPadding.swift; sourceTree = ""; }; + 95FFC9B5F34AFDE5F3C5B23614FD8BA6 /* libsodium.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = libsodium.modulemap; sourceTree = ""; }; 9627595EB14628F575BD0F16998456A9 /* Blowfish+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Blowfish+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Blowfish+Foundation.swift"; sourceTree = ""; }; 983565A36767EDA95DFD5FF64D389D39 /* crypto_secretbox_xsalsa20poly1305.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_secretbox_xsalsa20poly1305.h; path = src/libsodium/include/sodium/crypto_secretbox_xsalsa20poly1305.h; sourceTree = ""; }; 983B373349A62590F2C0E2373D943788 /* NoPadding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NoPadding.swift; path = Sources/CryptoSwift/NoPadding.swift; sourceTree = ""; }; + 98B5731A84A40DA7DC679486C52C8BFD /* AwaitKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "AwaitKit-dummy.m"; sourceTree = ""; }; 98B6FF3FCE267ECE40F21951F522B439 /* Subtraction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Subtraction.swift; path = sources/Subtraction.swift; sourceTree = ""; }; - 990F0CD347E4BAA21D9B693A3014CCFE /* BigInt.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = BigInt.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 992A279825E9376E15CDCA70C4D813C5 /* Web3+JSONRPC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Web3+JSONRPC.swift"; sourceTree = ""; }; + 990F0CD347E4BAA21D9B693A3014CCFE /* BigInt.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = BigInt.framework; path = BigInt.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 9A0070DAB886DB2ECB0D4EAC1E21050E /* group_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = group_impl.h; path = secp256k1_ios/src/group_impl.h; sourceTree = ""; }; 9A4BCE7D41D3FA9A32198891BAE87461 /* blamka-round-ref.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "blamka-round-ref.h"; path = "src/libsodium/crypto_pwhash/argon2/blamka-round-ref.h"; sourceTree = ""; }; + 9A8C4BE37B72D1560929038B38F79405 /* Web3.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Web3.swift; sourceTree = ""; }; 9AE4C107CB4B4244D32E21E0D97105C7 /* Promise+Properties.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Promise+Properties.swift"; path = "Sources/Promise+Properties.swift"; sourceTree = ""; }; + 9B2EA1870C7A871C0890A7D4044BBFD3 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 9C73B75B0FC461BDD3A480FD8F0543B5 /* crypto_pwhash_argon2i.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_pwhash_argon2i.h; path = src/libsodium/include/sodium/crypto_pwhash_argon2i.h; sourceTree = ""; }; - 9D5DE763E64A1D429D58A28C492FEC82 /* AbstractKeystore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AbstractKeystore.swift; sourceTree = ""; }; 9EEF8C5B9F423B5487661CE5471EC954 /* after.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = after.m; path = Sources/after.m; sourceTree = ""; }; 9F415D03E35216056CD9AD986A67B2C1 /* crypto_aead_aes256gcm.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_aead_aes256gcm.h; path = src/libsodium/include/sodium/crypto_aead_aes256gcm.h; sourceTree = ""; }; 9F8D5AA4F55366F8D578967B04A495D8 /* BlockCipher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockCipher.swift; path = Sources/CryptoSwift/BlockCipher.swift; sourceTree = ""; }; - A0A859A6EA1C4EA7E2AD073AC8636B26 /* Pods-web3swiftExample-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-web3swiftExample-acknowledgements.plist"; sourceTree = ""; }; - A0A8FFCBF073D8840E283A3223AE42BF /* EthereumKeystoreV3.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EthereumKeystoreV3.swift; sourceTree = ""; }; - A0ABE4181D34E6ABF045A1EADE759F6A /* stream_salsa208.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = stream_salsa208.c; path = src/libsodium/crypto_stream/salsa208/stream_salsa208.c; sourceTree = ""; }; - A2DD3DB7B033D23E656A7DF6613696EE /* stream_salsa208_ref.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = stream_salsa208_ref.c; path = src/libsodium/crypto_stream/salsa208/ref/stream_salsa208_ref.c; sourceTree = ""; }; - A323614C65FEAA037088EBE01DA2B4C8 /* crypto_kdf.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = crypto_kdf.c; path = src/libsodium/crypto_kdf/crypto_kdf.c; sourceTree = ""; }; + A0ABE4181D34E6ABF045A1EADE759F6A /* stream_salsa208.c */ = {isa = PBXFileReference; includeInIndex = 1; name = stream_salsa208.c; path = src/libsodium/crypto_stream/salsa208/stream_salsa208.c; sourceTree = ""; }; + A2476FC29E2F6F127D1DAEAB24992C10 /* KeystoreV3JSONStructure.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = KeystoreV3JSONStructure.swift; sourceTree = ""; }; + A2DD3DB7B033D23E656A7DF6613696EE /* stream_salsa208_ref.c */ = {isa = PBXFileReference; includeInIndex = 1; name = stream_salsa208_ref.c; path = src/libsodium/crypto_stream/salsa208/ref/stream_salsa208_ref.c; sourceTree = ""; }; + A323614C65FEAA037088EBE01DA2B4C8 /* crypto_kdf.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_kdf.c; path = src/libsodium/crypto_kdf/crypto_kdf.c; sourceTree = ""; }; A37E4BBD829F3194E2D25EC52E87608F /* when.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = when.swift; path = Sources/when.swift; sourceTree = ""; }; - A3C08303BE704DBDC7F68650DA146C09 /* blake2b-compress-sse41.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = "blake2b-compress-sse41.c"; path = "src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-sse41.c"; sourceTree = ""; }; + A3C08303BE704DBDC7F68650DA146C09 /* blake2b-compress-sse41.c */ = {isa = PBXFileReference; includeInIndex = 1; name = "blake2b-compress-sse41.c"; path = "src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-sse41.c"; sourceTree = ""; }; A48760E0DAE176F907DCA3C3C950EB22 /* AFError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AFError.swift; path = Source/AFError.swift; sourceTree = ""; }; - A48B301EFE219EE0C1D658E51C07C68A /* CryptoSwift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = CryptoSwift.modulemap; sourceTree = ""; }; A4D18CA5852C77FE5182692A8547B222 /* crypto_pwhash_scryptsalsa208sha256.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_pwhash_scryptsalsa208sha256.h; path = src/libsodium/include/sodium/crypto_pwhash_scryptsalsa208sha256.h; sourceTree = ""; }; - A4E0FB1D0CCCE77A3AF7782C32C9E4C3 /* Web3+Instance.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Web3+Instance.swift"; sourceTree = ""; }; A4FBC01FC70DDEB589F5729C04560FCC /* crypto_generichash_blake2b.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_generichash_blake2b.h; path = src/libsodium/include/sodium/crypto_generichash_blake2b.h; sourceTree = ""; }; - A4FDCE0D0CD36077F18D435DCE2D2E53 /* DictionaryLiteralJSONSerializer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DictionaryLiteralJSONSerializer.swift; sourceTree = ""; }; + A516823007F1A671A6FBB4A94A897349 /* SipHash.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SipHash.xcconfig; sourceTree = ""; }; A549372C115488412704294C32CFB9CF /* crypto_core_hsalsa20.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_core_hsalsa20.h; path = src/libsodium/include/sodium/crypto_core_hsalsa20.h; sourceTree = ""; }; A55FE86BAEB815309E939A4F6A05899B /* blake2b-load-sse2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "blake2b-load-sse2.h"; path = "src/libsodium/crypto_generichash/blake2b/ref/blake2b-load-sse2.h"; sourceTree = ""; }; A570D5C4EC34CF0BF2C161E2BF3D5655 /* Response.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Response.swift; path = Source/Response.swift; sourceTree = ""; }; A592A51F9D5584870316D13BA94D530F /* crypto_scrypt.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_scrypt.h; path = src/libsodium/crypto_pwhash/scryptsalsa208sha256/crypto_scrypt.h; sourceTree = ""; }; - A6EA165FEDB622970B449DCF5ED10D00 /* PromiseKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PromiseKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A6E36C342459481E954ACBBE2BB0B629 /* BigInt-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "BigInt-dummy.m"; sourceTree = ""; }; + A6EA165FEDB622970B449DCF5ED10D00 /* PromiseKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = PromiseKit.framework; path = PromiseKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; A6ED2A7AC76D2EC71B4AC38BCA17B12F /* Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Alamofire.swift; path = Source/Alamofire.swift; sourceTree = ""; }; + A6F058430C52087F14564874D58CD2FD /* secp256k1_ios.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = secp256k1_ios.modulemap; sourceTree = ""; }; A6F0F0A41CF53305711665AC605808CB /* Alamofire.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Alamofire.framework; sourceTree = BUILT_PRODUCTS_DIR; }; A70D7DD76B3A3C68F69D67A9C3841B38 /* HMAC+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "HMAC+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/HMAC+Foundation.swift"; sourceTree = ""; }; A771682B6012D3A90F3A34DF38988F02 /* Poly1305.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Poly1305.swift; path = Sources/CryptoSwift/Poly1305.swift; sourceTree = ""; }; @@ -1057,62 +1055,69 @@ A871058396F025233D334EAAFD03DAEF /* SessionDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionDelegate.swift; path = Source/SessionDelegate.swift; sourceTree = ""; }; A8819022CE495D16DD8AD35860927895 /* blake2b-compress-ssse3.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "blake2b-compress-ssse3.h"; path = "src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-ssse3.h"; sourceTree = ""; }; A935F75CD8AD442F9C0B48D0BBAA178C /* ParameterEncoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ParameterEncoding.swift; path = Source/ParameterEncoding.swift; sourceTree = ""; }; + A96A1D67A71A84310A8B3E600523DFAB /* BIP32HDNode.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BIP32HDNode.swift; sourceTree = ""; }; + A9DBA430A24B89626C4ACCDBEAEE6D27 /* PromiseKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = PromiseKit.modulemap; sourceTree = ""; }; AA264780A1D8EBAA169327F83589351D /* utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = utils.h; path = src/libsodium/include/sodium/utils.h; sourceTree = ""; }; - AB3E8694FB4DBE03DA798ECE62B6C4C9 /* BigInt-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "BigInt-dummy.m"; sourceTree = ""; }; - AB6B00CFCB776BEA781D70873FDC6E8E /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; ABF003B94C47DFD992A9687A0617EEED /* randombytes_nativeclient.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = randombytes_nativeclient.h; path = src/libsodium/include/sodium/randombytes_nativeclient.h; sourceTree = ""; }; + AC67EF5B20E9EE217F16AED183E1CDEC /* Alamofire.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Alamofire.xcconfig; sourceTree = ""; }; + AC8062B7743D29F613022183AAAF6ACF /* String+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "String+Extension.swift"; sourceTree = ""; }; + ACC6E789154ED08101D28C078464FD2C /* AbstractKeystore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AbstractKeystore.swift; sourceTree = ""; }; + ACD3C9B4451895879AC6901955B43D5C /* Alamofire.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Alamofire.modulemap; sourceTree = ""; }; AD087D17D800CED071CD3F52AE99C5B5 /* ecmult_static_context.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_static_context.h; path = secp256k1_ios/src/ecmult_static_context.h; sourceTree = ""; }; - AD4BA9071D66D607B44DD792300049CC /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; ADAB36CF15B3B17E6243A35A29C81D52 /* Cryptors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cryptors.swift; path = Sources/CryptoSwift/Cryptors.swift; sourceTree = ""; }; - AF9971EDA1B7F200AFC4616629D98446 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + AEBB6FBDE3E39C503846ACADDDD5B970 /* BIP39+WordLists.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "BIP39+WordLists.swift"; sourceTree = ""; }; AFACB0F867C7597F5A258CC8CF6CE80D /* NSNotificationCenter+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSNotificationCenter+AnyPromise.m"; path = "Extensions/Foundation/Sources/NSNotificationCenter+AnyPromise.m"; sourceTree = ""; }; AFAEC0682C9D63A89230A3FA37DF5F2C /* export.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = export.h; path = src/libsodium/include/sodium/export.h; sourceTree = ""; }; + AFAF102DD507082EAFA7857A1FF4C60F /* AwaitKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AwaitKit.xcconfig; sourceTree = ""; }; B06062D796FDC117CDDAE9075FCF2521 /* crypto_kx.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_kx.h; path = src/libsodium/include/sodium/crypto_kx.h; sourceTree = ""; }; - B12E534033E0B776A55C52A3C1C4108A /* CryptoExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CryptoExtensions.swift; sourceTree = ""; }; - B18BAAF98DF82DF10A18AD492CF964A4 /* salsa20_xmm6int-sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = "salsa20_xmm6int-sse2.c"; path = "src/libsodium/crypto_stream/salsa20/xmm6int/salsa20_xmm6int-sse2.c"; sourceTree = ""; }; - B1D0D248D219723BFD029B30B7EE8C15 /* hash_sha512_cp.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = hash_sha512_cp.c; path = src/libsodium/crypto_hash/sha512/cp/hash_sha512_cp.c; sourceTree = ""; }; - B300D20020E36A2EB804DD4B6E466B23 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B18BAAF98DF82DF10A18AD492CF964A4 /* salsa20_xmm6int-sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = "salsa20_xmm6int-sse2.c"; path = "src/libsodium/crypto_stream/salsa20/xmm6int/salsa20_xmm6int-sse2.c"; sourceTree = ""; }; + B1D0D248D219723BFD029B30B7EE8C15 /* hash_sha512_cp.c */ = {isa = PBXFileReference; includeInIndex = 1; name = hash_sha512_cp.c; path = src/libsodium/crypto_hash/sha512/cp/hash_sha512_cp.c; sourceTree = ""; }; + B273E0C11FCFFCBD6328A2B99BA64E32 /* Alamofire-Synchronous-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Alamofire-Synchronous-dummy.m"; sourceTree = ""; }; + B34711F0BA11B00796FA492532D73A76 /* SipHash-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SipHash-prefix.pch"; sourceTree = ""; }; B36829E3E37699F888C7190502605755 /* Comparable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Comparable.swift; path = sources/Comparable.swift; sourceTree = ""; }; + B3A1ACE5001C305E7DFF9B20D3E83C40 /* secp256k1_ios-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "secp256k1_ios-dummy.m"; sourceTree = ""; }; B3D45F0F333A212CF73C9954EFE5A917 /* crypto_core_hchacha20.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_core_hchacha20.h; path = src/libsodium/include/sodium/crypto_core_hchacha20.h; sourceTree = ""; }; + B403F9AEE3BAC4FCE70097C6E0EB230A /* Pods-web3swiftExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-web3swiftExample.release.xcconfig"; sourceTree = ""; }; + B4516B013C2D85F5799546528393B511 /* libsodium-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "libsodium-prefix.pch"; sourceTree = ""; }; + B472C5B4A2DC91693D586ED875901035 /* Pods-web3swiftExample-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-web3swiftExample-umbrella.h"; sourceTree = ""; }; B47319309A5B468740A9FD324B40A669 /* crypto_hash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_hash.h; path = src/libsodium/include/sodium/crypto_hash.h; sourceTree = ""; }; - B4B4F1B802A293DB693A5DF8AB59DDBA /* beforenm_aes128ctr.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = beforenm_aes128ctr.c; path = src/libsodium/crypto_stream/aes128ctr/nacl/beforenm_aes128ctr.c; sourceTree = ""; }; + B4A2C2704D2CBD5772441321D87BC9CB /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B4B4F1B802A293DB693A5DF8AB59DDBA /* beforenm_aes128ctr.c */ = {isa = PBXFileReference; includeInIndex = 1; name = beforenm_aes128ctr.c; path = src/libsodium/crypto_stream/aes128ctr/nacl/beforenm_aes128ctr.c; sourceTree = ""; }; B5AB7EAD9D2357A786D724309792E339 /* NSObject+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSObject+Promise.swift"; path = "Extensions/Foundation/Sources/NSObject+Promise.swift"; sourceTree = ""; }; - B5BAA8FD072C8ED786C0A84FF896DEFB /* version.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = version.c; path = src/libsodium/sodium/version.c; sourceTree = ""; }; + B5BAA8FD072C8ED786C0A84FF896DEFB /* version.c */ = {isa = PBXFileReference; includeInIndex = 1; name = version.c; path = src/libsodium/sodium/version.c; sourceTree = ""; }; B6659207D9563B903FE7C16B3A130B60 /* crypto_sign.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_sign.h; path = src/libsodium/include/sodium/crypto_sign.h; sourceTree = ""; }; B80E951F93EF4A4FC6703C08C33796F6 /* Array+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Array+Extension.swift"; path = "Sources/CryptoSwift/Array+Extension.swift"; sourceTree = ""; }; + B8AA725BF1CEDB39AF870F96104567BC /* Web3+AbstractSigner.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Web3+AbstractSigner.swift"; sourceTree = ""; }; + B953C763D44068EC932EE15925D86DB0 /* AwaitKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = AwaitKit.modulemap; sourceTree = ""; }; B9A3A4E029E6506D4F8A2082AB3CB75C /* dispatch_promise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = dispatch_promise.m; path = Sources/dispatch_promise.m; sourceTree = ""; }; - BA359E2BD0B0F8717FAD8AAAF6D3BAB3 /* ABIManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ABIManager.swift; sourceTree = ""; }; - BA42165CB51E6CBDCEE5D79CC5D3DAE3 /* hash_sha256_cp.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = hash_sha256_cp.c; path = src/libsodium/crypto_hash/sha256/cp/hash_sha256_cp.c; sourceTree = ""; }; - BA9ECE18EC0F448527432D94D32EE625 /* web3swift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = web3swift.modulemap; sourceTree = ""; }; + BA42165CB51E6CBDCEE5D79CC5D3DAE3 /* hash_sha256_cp.c */ = {isa = PBXFileReference; includeInIndex = 1; name = hash_sha256_cp.c; path = src/libsodium/crypto_hash/sha256/cp/hash_sha256_cp.c; sourceTree = ""; }; BAA0959E74FC2DACD09EEC2F39CD9717 /* SHA3.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SHA3.swift; path = Sources/CryptoSwift/SHA3.swift; sourceTree = ""; }; - BAA44460922E23D13F3AA3CB97FEAC20 /* LibSecp256k1Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = LibSecp256k1Extension.swift; sourceTree = ""; }; BAC97315A7DFA3432DBE0F4D840523CA /* u4.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = u4.h; path = src/libsodium/crypto_stream/chacha20/dolbeau/u4.h; sourceTree = ""; }; BACD9A5C86EB7D6ECBA928F3C07C493D /* Digest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Digest.swift; path = Sources/CryptoSwift/Digest.swift; sourceTree = ""; }; BB104F4098BC8D36CF306A0695EC54F0 /* BigInt.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BigInt.swift; path = sources/BigInt.swift; sourceTree = ""; }; BB1DDE6B4D04F5912CD9B8947B8FCE35 /* runtime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = runtime.h; path = src/libsodium/include/sodium/runtime.h; sourceTree = ""; }; - BB43FA47E238CE92F53329215F51E5B3 /* SipHash.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SipHash.xcconfig; sourceTree = ""; }; - BB473DE71AD3C03EF420915EA940AAB8 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + BB44DCE3061CB0E0C37F91EBB0420ADB /* ABIEncoder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ABIEncoder.swift; sourceTree = ""; }; BBA609FD5D7A83DD108F78010CF51DE6 /* SHA1.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SHA1.swift; path = Sources/CryptoSwift/SHA1.swift; sourceTree = ""; }; - BC1356176B657DA71BCF30A03942951D /* pwhash_scryptsalsa208sha256_sse.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = pwhash_scryptsalsa208sha256_sse.c; path = src/libsodium/crypto_pwhash/scryptsalsa208sha256/sse/pwhash_scryptsalsa208sha256_sse.c; sourceTree = ""; }; + BC0B55B8A15BB6D4D3D7785F982A573D /* Array+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Array+Extension.swift"; sourceTree = ""; }; + BC1356176B657DA71BCF30A03942951D /* pwhash_scryptsalsa208sha256_sse.c */ = {isa = PBXFileReference; includeInIndex = 1; name = pwhash_scryptsalsa208sha256_sse.c; path = src/libsodium/crypto_pwhash/scryptsalsa208sha256/sse/pwhash_scryptsalsa208sha256_sse.c; sourceTree = ""; }; BC3200B7EF31ABD5D32F13FC81A3B970 /* argon2-encoding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "argon2-encoding.h"; path = "src/libsodium/crypto_pwhash/argon2/argon2-encoding.h"; sourceTree = ""; }; - BC92C3B77F75038E1A80561069E77619 /* SipHash.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SipHash.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + BC92C3B77F75038E1A80561069E77619 /* SipHash.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SipHash.framework; path = SipHash.framework; sourceTree = BUILT_PRODUCTS_DIR; }; BC9B10B8F75CCE90CE94962B4490122F /* Division.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Division.swift; path = sources/Division.swift; sourceTree = ""; }; BCA9CCB8C8D52DA9566F0E46A5708227 /* crypto_secretbox.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_secretbox.h; path = src/libsodium/include/sodium/crypto_secretbox.h; sourceTree = ""; }; BD98E21F333F063966BBB55917B5A354 /* Alamofire_Synchronous.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Alamofire_Synchronous.framework; sourceTree = BUILT_PRODUCTS_DIR; }; BDC4360DC745AD87354A0A874492558E /* x25519_ref10.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = x25519_ref10.h; path = src/libsodium/crypto_scalarmult/curve25519/ref10/x25519_ref10.h; sourceTree = ""; }; - BE99C57CB377DABAD854E794542CF238 /* Web3+Contract.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Web3+Contract.swift"; sourceTree = ""; }; BF789719CC7DE1537EC916116980AA95 /* ladder_namespace.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ladder_namespace.h; path = src/libsodium/crypto_scalarmult/curve25519/sandy2x/ladder_namespace.h; sourceTree = ""; }; C12F3467DFC471E25E86A14439C1BB2D /* RandomAccessCryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RandomAccessCryptor.swift; path = Sources/CryptoSwift/RandomAccessCryptor.swift; sourceTree = ""; }; - C141000D4DF92F0B66B2DDE7522A7343 /* stream_salsa20.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = stream_salsa20.c; path = src/libsodium/crypto_stream/salsa20/stream_salsa20.c; sourceTree = ""; }; - C2080C83931770B771CC21FF60AC4BE4 /* shorthash_siphash24.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = shorthash_siphash24.c; path = src/libsodium/crypto_shorthash/siphash24/shorthash_siphash24.c; sourceTree = ""; }; + C141000D4DF92F0B66B2DDE7522A7343 /* stream_salsa20.c */ = {isa = PBXFileReference; includeInIndex = 1; name = stream_salsa20.c; path = src/libsodium/crypto_stream/salsa20/stream_salsa20.c; sourceTree = ""; }; + C2080C83931770B771CC21FF60AC4BE4 /* shorthash_siphash24.c */ = {isa = PBXFileReference; includeInIndex = 1; name = shorthash_siphash24.c; path = src/libsodium/crypto_shorthash/siphash24/shorthash_siphash24.c; sourceTree = ""; }; C215C89CFFD9E66199D66477FEE38751 /* Floating Point Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Floating Point Conversion.swift"; path = "sources/Floating Point Conversion.swift"; sourceTree = ""; }; C2B5DB623EBF5640AA3F89136A429C42 /* field_10x26.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_10x26.h; path = secp256k1_ios/src/field_10x26.h; sourceTree = ""; }; - C2D01CDEDF7D7BA8180C27D0F1DAA966 /* PromiseKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = PromiseKit.modulemap; sourceTree = ""; }; - C2E7655EEF590655321EE18837397953 /* Web3+Methods.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Web3+Methods.swift"; sourceTree = ""; }; + C3B78CB29076B5F2FFC723E40E95A5A7 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + C432982AD4910FEF798518554A20BF81 /* secp256k1_ios-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "secp256k1_ios-prefix.pch"; sourceTree = ""; }; C51F27D1103E437539E3B92A84BBA529 /* ladder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ladder.h; path = src/libsodium/crypto_scalarmult/curve25519/sandy2x/ladder.h; sourceTree = ""; }; C532999B9B44AFC2336775915A559794 /* eckey.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = eckey.h; path = secp256k1_ios/src/eckey.h; sourceTree = ""; }; C58A03B5033A4A0C85CC2E60039F52F7 /* crypto_scalarmult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_scalarmult.h; path = src/libsodium/include/sodium/crypto_scalarmult.h; sourceTree = ""; }; - C6A21C1E2F59741F0B57057F7C62A450 /* lax_der_privatekey_parsing.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = lax_der_privatekey_parsing.c; path = secp256k1_ios/contrib/lax_der_privatekey_parsing.c; sourceTree = ""; }; + C6A21C1E2F59741F0B57057F7C62A450 /* lax_der_privatekey_parsing.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lax_der_privatekey_parsing.c; path = secp256k1_ios/contrib/lax_der_privatekey_parsing.c; sourceTree = ""; }; C6A7A481C2D995D3E6ED8F2D26DFED1D /* ChaCha20.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ChaCha20.swift; path = Sources/CryptoSwift/ChaCha20.swift; sourceTree = ""; }; C6B58BF07E576F9509B698F1FAE0CC19 /* crypto_verify_32.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_verify_32.h; path = src/libsodium/include/sodium/crypto_verify_32.h; sourceTree = ""; }; C7322CC31CA3F7538D03E73600D7C375 /* crypto_auth.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_auth.h; path = src/libsodium/include/sodium/crypto_auth.h; sourceTree = ""; }; @@ -1120,22 +1125,22 @@ C81683CFC0813303D9DD9AC3B49DECCD /* Bit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Bit.swift; path = Sources/CryptoSwift/Bit.swift; sourceTree = ""; }; C8337EBAE079605EAF3B93FDCBBE2F79 /* Collection+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Collection+Extension.swift"; path = "Sources/CryptoSwift/Collection+Extension.swift"; sourceTree = ""; }; C851B26FA99F950791F5CFFD38D52317 /* curve25519_ref10.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = curve25519_ref10.h; path = src/libsodium/include/sodium/private/curve25519_ref10.h; sourceTree = ""; }; + CA0F9E7477A1AF23FF18D6C38299B84C /* Alamofire-Synchronous-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-Synchronous-umbrella.h"; sourceTree = ""; }; CAD6308C92FE6108536BCE24465F3FBA /* field_10x26_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_10x26_impl.h; path = secp256k1_ios/src/field_10x26_impl.h; sourceTree = ""; }; CB19EAA4DC7A2C4F3E785E355A963BF9 /* AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AnyPromise.m; path = Sources/AnyPromise.m; sourceTree = ""; }; + CB702C8AB217A241FB4FF2A55AC30342 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; CBD04E8FB93BD218587E406A530A7DE4 /* UIView+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+AnyPromise.h"; path = "Extensions/UIKit/Sources/UIView+AnyPromise.h"; sourceTree = ""; }; - CC61FFD72A7A164C3496418F9C3F6539 /* curve25519_sandy2x.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = curve25519_sandy2x.c; path = src/libsodium/crypto_scalarmult/curve25519/sandy2x/curve25519_sandy2x.c; sourceTree = ""; }; - CCCF2B5A70A876CDCAD4C4102C998D27 /* BigInt.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = BigInt.xcconfig; sourceTree = ""; }; + CC61FFD72A7A164C3496418F9C3F6539 /* curve25519_sandy2x.c */ = {isa = PBXFileReference; includeInIndex = 1; name = curve25519_sandy2x.c; path = src/libsodium/crypto_scalarmult/curve25519/sandy2x/curve25519_sandy2x.c; sourceTree = ""; }; CCD2891023ADB9EDE410ACBF94D366A6 /* Result.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Result.swift; path = Source/Result.swift; sourceTree = ""; }; CCDC8E89E1969F3E1495D026949A4B8E /* salsa20_xmm6.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = salsa20_xmm6.h; path = src/libsodium/crypto_stream/salsa20/xmm6/salsa20_xmm6.h; sourceTree = ""; }; CD3E843A3C8D06492D5DA69B37260527 /* race.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = race.swift; path = Sources/race.swift; sourceTree = ""; }; CD8739CE4A00525C9315D793964971B2 /* Multiplication.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Multiplication.swift; path = sources/Multiplication.swift; sourceTree = ""; }; CE602E3EBCDF4F98FBAC9DEE02279055 /* fe51_namespace.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = fe51_namespace.h; path = src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_namespace.h; sourceTree = ""; }; + CEB18CD7B5FFCE41AFC5275329568778 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; CEB315042084F2A3F107DBAB97F99E72 /* PBKDF2.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PBKDF2.swift; path = Sources/CryptoSwift/PKCS/PBKDF2.swift; sourceTree = ""; }; - CF2FE611F57CFE63D1A7C8C2E138F516 /* Alamofire-Synchronous-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-Synchronous-prefix.pch"; sourceTree = ""; }; CF4E7504383884142E7F5886F48B5D2B /* PromiseKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PromiseKit.h; path = Sources/PromiseKit.h; sourceTree = ""; }; CFCAB13C44D8043C55A0ECA91418DC10 /* sodium.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = sodium.h; path = src/libsodium/include/sodium.h; sourceTree = ""; }; D04BCB506D78EEE928195AE5D7CB1362 /* curve25519_sandy2x.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = curve25519_sandy2x.h; path = src/libsodium/crypto_scalarmult/curve25519/sandy2x/curve25519_sandy2x.h; sourceTree = ""; }; - D235A11F021E91E062ADBEC6DDD2583A /* KeystoreV3JSONStructure.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = KeystoreV3JSONStructure.swift; sourceTree = ""; }; D269964E854AA1AE7A14F4D6035B74DA /* DispatchQueue+Await.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DispatchQueue+Await.swift"; path = "Sources/DispatchQueue+Await.swift"; sourceTree = ""; }; D2B17FA4896EF28949566EE11BB5ACE9 /* version.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = version.h; path = src/libsodium/include/sodium/version.h; sourceTree = ""; }; D47E743AFF718134AD5266D55139AB45 /* GlobalState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GlobalState.m; path = Sources/GlobalState.m; sourceTree = ""; }; @@ -1143,102 +1148,113 @@ D4BA775D60DADAD23DC8C4702A2AA5E3 /* num.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = num.h; path = secp256k1_ios/src/num.h; sourceTree = ""; }; D4C0CC761E95F19CB6B8BC26E2A8935C /* argon2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = argon2.h; path = src/libsodium/crypto_pwhash/argon2/argon2.h; sourceTree = ""; }; D4C8AD2A25A065BB6ADBDA6C31A1C81C /* NSURLSession+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSURLSession+Promise.swift"; path = "Extensions/Foundation/Sources/NSURLSession+Promise.swift"; sourceTree = ""; }; - D613873E0A19FDA2C7A1EA9864CC2F55 /* CryptoSwift.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = CryptoSwift.xcconfig; sourceTree = ""; }; + D55E9FA5C7EC178124EB207A7E257A8F /* Alamofire-Synchronous.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Alamofire-Synchronous.xcconfig"; sourceTree = ""; }; D6178FABCED5E9E24B0A6417537C93F5 /* NSURLSession+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSURLSession+AnyPromise.m"; path = "Extensions/Foundation/Sources/NSURLSession+AnyPromise.m"; sourceTree = ""; }; + D619BA62E98DD11243E4F24E46304C34 /* Web3+JSONRPC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Web3+JSONRPC.swift"; sourceTree = ""; }; D620EBBB758E41843677425B43B7B63E /* util.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = util.h; path = secp256k1_ios/src/util.h; sourceTree = ""; }; - D6499933E981B563D486083670B101CB /* Alamofire-Synchronous.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Alamofire-Synchronous.modulemap"; sourceTree = ""; }; D6CFF550A6F9ADC5F8F1B59045809D7A /* Authenticator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Authenticator.swift; path = Sources/CryptoSwift/Authenticator.swift; sourceTree = ""; }; D752988451E23900DB153C8436FC9EC3 /* field_5x52_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_5x52_impl.h; path = secp256k1_ios/src/field_5x52_impl.h; sourceTree = ""; }; D8A498F790976EB940080AB773D3B63D /* PMKFoundation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PMKFoundation.h; path = Extensions/Foundation/Sources/PMKFoundation.h; sourceTree = ""; }; - D9374F939010F3A16553466556950076 /* Pods-web3swiftExample-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-web3swiftExample-dummy.m"; sourceTree = ""; }; - D9B18A2E0D6FDCD2E449CFC81FD0CED3 /* obsolete.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = obsolete.c; path = src/libsodium/crypto_sign/ed25519/ref10/obsolete.c; sourceTree = ""; }; + D8FC9649BB9CA55D0099D39302F1A72D /* Web3+Wallet.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Web3+Wallet.swift"; sourceTree = ""; }; + D9B18A2E0D6FDCD2E449CFC81FD0CED3 /* obsolete.c */ = {isa = PBXFileReference; includeInIndex = 1; name = obsolete.c; path = src/libsodium/crypto_sign/ed25519/ref10/obsolete.c; sourceTree = ""; }; D9B5108B40A2D077D3EB2ABB8F74DCD4 /* ecmult_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_impl.h; path = secp256k1_ios/src/ecmult_impl.h; sourceTree = ""; }; + D9ECC22EAB79F2D8C5401BC7651B149E /* Pods-web3swiftExample.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-web3swiftExample.modulemap"; sourceTree = ""; }; DA4D751297D0763F368ED4EAC7996555 /* blake2b-long.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "blake2b-long.h"; path = "src/libsodium/crypto_pwhash/argon2/blake2b-long.h"; sourceTree = ""; }; DB8DC86D818FCC25E10CB0AC6815DFB1 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; - DDAB8BF4FFDC29E234C36708C3685699 /* keypair.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = keypair.c; path = src/libsodium/crypto_sign/ed25519/ref10/keypair.c; sourceTree = ""; }; - DFF6A99862594CF971A3CB582B74A2EB /* AwaitKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = AwaitKit.modulemap; sourceTree = ""; }; + DCD2CE2AD1529B9BE28E2229458388AD /* Pods-web3swiftExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-web3swiftExample.debug.xcconfig"; sourceTree = ""; }; + DDAB8BF4FFDC29E234C36708C3685699 /* keypair.c */ = {isa = PBXFileReference; includeInIndex = 1; name = keypair.c; path = src/libsodium/crypto_sign/ed25519/ref10/keypair.c; sourceTree = ""; }; + DE09C3C480D2F931CA7CFD5BE1D23EDE /* Web3+Utils.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Web3+Utils.swift"; sourceTree = ""; }; + DF87B4E9D2CB52A63CA01D0AC92C33F9 /* Web3+Structures.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Web3+Structures.swift"; sourceTree = ""; }; E04A88DBAC00077182EED78B01C0C61E /* when.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = when.m; path = Sources/when.m; sourceTree = ""; }; - E04E62F1937ECB546B54B25F6B9EFC6B /* Pods-web3swiftExample.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-web3swiftExample.modulemap"; sourceTree = ""; }; E0535E72A79B4D401256844FF2EFB388 /* scalar_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_impl.h; path = secp256k1_ios/src/scalar_impl.h; sourceTree = ""; }; E1429113748761659EA24981C42FE39B /* UInt8+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt8+Extension.swift"; path = "Sources/CryptoSwift/UInt8+Extension.swift"; sourceTree = ""; }; - E1D4DF93AC9334A98C6E197E12F82C9C /* crypto_box_easy.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = crypto_box_easy.c; path = src/libsodium/crypto_box/crypto_box_easy.c; sourceTree = ""; }; - E1D4FBF3BD117C712CA0B09867726105 /* shorthash_siphash24_ref.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = shorthash_siphash24_ref.c; path = src/libsodium/crypto_shorthash/siphash24/ref/shorthash_siphash24_ref.c; sourceTree = ""; }; + E18B4ED50488EE51DFC6163C62BC9187 /* PromiseKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = PromiseKit.xcconfig; sourceTree = ""; }; + E1D4DF93AC9334A98C6E197E12F82C9C /* crypto_box_easy.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_box_easy.c; path = src/libsodium/crypto_box/crypto_box_easy.c; sourceTree = ""; }; + E1D4FBF3BD117C712CA0B09867726105 /* shorthash_siphash24_ref.c */ = {isa = PBXFileReference; includeInIndex = 1; name = shorthash_siphash24_ref.c; path = src/libsodium/crypto_shorthash/siphash24/ref/shorthash_siphash24_ref.c; sourceTree = ""; }; E27B364DF4050E132C8F5B4BD81DA226 /* MultipartFormData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MultipartFormData.swift; path = Source/MultipartFormData.swift; sourceTree = ""; }; - E2DF9DA8CD730D0461E118AD3CE70EE4 /* Pods_web3swiftExample.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_web3swiftExample.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E2F3D748B0A383FE3F17826C36B1AFDF /* auth_hmacsha512256.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = auth_hmacsha512256.c; path = src/libsodium/crypto_auth/hmacsha512256/auth_hmacsha512256.c; sourceTree = ""; }; - E331BD82115915455146E31AB093F506 /* crypto_kx.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = crypto_kx.c; path = src/libsodium/crypto_kx/crypto_kx.c; sourceTree = ""; }; + E2DF9DA8CD730D0461E118AD3CE70EE4 /* Pods_web3swiftExample.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_web3swiftExample.framework; path = "Pods-web3swiftExample.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + E2F3D748B0A383FE3F17826C36B1AFDF /* auth_hmacsha512256.c */ = {isa = PBXFileReference; includeInIndex = 1; name = auth_hmacsha512256.c; path = src/libsodium/crypto_auth/hmacsha512256/auth_hmacsha512256.c; sourceTree = ""; }; + E331BD82115915455146E31AB093F506 /* crypto_kx.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_kx.c; path = src/libsodium/crypto_kx/crypto_kx.c; sourceTree = ""; }; E420376450B3CAFDD3B3ED169F91C82F /* crypto_stream_xchacha20.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_stream_xchacha20.h; path = src/libsodium/include/sodium/crypto_stream_xchacha20.h; sourceTree = ""; }; - E4C7DD1E0B53DB5870DF6C5F724F1628 /* core_hchacha20.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = core_hchacha20.c; path = src/libsodium/crypto_core/hchacha20/core_hchacha20.c; sourceTree = ""; }; - E4DBBE54EE2A1A799EECE621090537A7 /* hash_sha256.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = hash_sha256.c; path = src/libsodium/crypto_hash/sha256/hash_sha256.c; sourceTree = ""; }; - E5C68214CFAD39BA4EAAA1F0B5E702F2 /* Web3+HookedWallet.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Web3+HookedWallet.swift"; sourceTree = ""; }; + E4C7DD1E0B53DB5870DF6C5F724F1628 /* core_hchacha20.c */ = {isa = PBXFileReference; includeInIndex = 1; name = core_hchacha20.c; path = src/libsodium/crypto_core/hchacha20/core_hchacha20.c; sourceTree = ""; }; + E4DBBE54EE2A1A799EECE621090537A7 /* hash_sha256.c */ = {isa = PBXFileReference; includeInIndex = 1; name = hash_sha256.c; path = src/libsodium/crypto_hash/sha256/hash_sha256.c; sourceTree = ""; }; E5EEF854516BB8D3E6CDC16835FB210D /* AnyPromise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnyPromise.swift; path = Sources/AnyPromise.swift; sourceTree = ""; }; E6119871B7567B1F45D699176EBD219F /* main_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = main_impl.h; path = secp256k1_ios/src/modules/recovery/main_impl.h; sourceTree = ""; }; + E639D0DDDE2123200AAF51AF28A3F655 /* SipHash-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SipHash-umbrella.h"; sourceTree = ""; }; E644730183A1EA125C509684133A002E /* hash_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = hash_impl.h; path = secp256k1_ios/src/hash_impl.h; sourceTree = ""; }; E7B7744E33BE1F8A905C41604799BB89 /* blamka-round-ssse3.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "blamka-round-ssse3.h"; path = "src/libsodium/crypto_pwhash/argon2/blamka-round-ssse3.h"; sourceTree = ""; }; - E7EEBD24D4FE5D11B7293F5F2C428053 /* Alamofire.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Alamofire.xcconfig; sourceTree = ""; }; E82C895934955E7D471091C7649461D0 /* ecdsa.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecdsa.h; path = secp256k1_ios/src/ecdsa.h; sourceTree = ""; }; + E82E01C078F5A3534CFF012346CD5F03 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + E846BBC34C45979A613C1BF6DAF4DA7E /* Web3+BrowserFunctions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Web3+BrowserFunctions.swift"; sourceTree = ""; }; E95554E3DB7FDB53487E27DA5572A987 /* crypto_verify_16.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_verify_16.h; path = src/libsodium/include/sodium/crypto_verify_16.h; sourceTree = ""; }; E96D14EDEE6A8FBEF6CD099828C2DA77 /* secp256k1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = secp256k1.h; path = secp256k1_ios/include/secp256k1.h; sourceTree = ""; }; EA21AE8A8CF80A11AEC1258509FA86D8 /* scalar_low_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_low_impl.h; path = secp256k1_ios/src/scalar_low_impl.h; sourceTree = ""; }; EA3EFB3D61AE3DB23638C6E7BC6B167E /* Exponentiation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Exponentiation.swift; path = sources/Exponentiation.swift; sourceTree = ""; }; EAA41C9BA4806A5E176009C2CC8E4A2E /* ecmult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult.h; path = secp256k1_ios/src/ecmult.h; sourceTree = ""; }; EBB29798ED5AD3589F358950F2AB23E6 /* AwaitKitExtension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AwaitKitExtension.swift; path = Sources/AwaitKitExtension.swift; sourceTree = ""; }; - EC7219F66BC3009931909070E7C58412 /* Web3+Utils.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Web3+Utils.swift"; sourceTree = ""; }; ECA87142B9B113800B1EC37326BCE116 /* Hashable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Hashable.swift; path = sources/Hashable.swift; sourceTree = ""; }; - EDC314C5C9FC173FB4CAC0F18C053578 /* scrypt_platform.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = scrypt_platform.c; path = src/libsodium/crypto_pwhash/scryptsalsa208sha256/scrypt_platform.c; sourceTree = ""; }; + ECBE8FD42E69EC23C8997450AB120DA5 /* CryptoSwift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CryptoSwift-umbrella.h"; sourceTree = ""; }; + EDC314C5C9FC173FB4CAC0F18C053578 /* scrypt_platform.c */ = {isa = PBXFileReference; includeInIndex = 1; name = scrypt_platform.c; path = src/libsodium/crypto_pwhash/scryptsalsa208sha256/scrypt_platform.c; sourceTree = ""; }; EDC35F1EB31444B18DDAD1F94E3FAF5C /* PCBC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PCBC.swift; path = Sources/CryptoSwift/BlockMode/PCBC.swift; sourceTree = ""; }; EE34E61361780E771B17C675854F5E9D /* HKDF.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HKDF.swift; path = Sources/CryptoSwift/HKDF.swift; sourceTree = ""; }; - EF4ED220FCEBF6E3E359060FF9FDAD60 /* sign_ed25519.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = sign_ed25519.c; path = src/libsodium/crypto_sign/ed25519/sign_ed25519.c; sourceTree = ""; }; - EF4F41A26B2690AB77D21646C7744BDD /* stream_aes128ctr.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = stream_aes128ctr.c; path = src/libsodium/crypto_stream/aes128ctr/stream_aes128ctr.c; sourceTree = ""; }; + EF34FDB15770AAED47330F7BEAF43A20 /* AbstractSigner.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AbstractSigner.swift; sourceTree = ""; }; + EF4ED220FCEBF6E3E359060FF9FDAD60 /* sign_ed25519.c */ = {isa = PBXFileReference; includeInIndex = 1; name = sign_ed25519.c; path = src/libsodium/crypto_sign/ed25519/sign_ed25519.c; sourceTree = ""; }; + EF4F41A26B2690AB77D21646C7744BDD /* stream_aes128ctr.c */ = {isa = PBXFileReference; includeInIndex = 1; name = stream_aes128ctr.c; path = src/libsodium/crypto_stream/aes128ctr/stream_aes128ctr.c; sourceTree = ""; }; EF6BAD72C8D470CC9786C4E8E8D45269 /* crypto_sign_ed25519.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_sign_ed25519.h; path = src/libsodium/include/sodium/crypto_sign_ed25519.h; sourceTree = ""; }; EF79D21ED3ABD34DDC1AEDBF25CFBCE0 /* libsecp256k1-config.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "libsecp256k1-config.h"; path = "secp256k1_ios/libsecp256k1-config.h"; sourceTree = ""; }; + EF80779D6B0B13581491EBCF062A61A9 /* RLP.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RLP.swift; sourceTree = ""; }; EFC75F58DE7CA29A3D02103B27638AF8 /* Generics.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Generics.swift; path = Sources/CryptoSwift/Generics.swift; sourceTree = ""; }; + EFFA32DED3269AF2CC55836D114DC7EE /* web3swift.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = web3swift.xcconfig; sourceTree = ""; }; F0191CC0407058C104E8513DBB41AC43 /* Validation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Validation.swift; path = Source/Validation.swift; sourceTree = ""; }; - F021E3CC94CA83A7D86BFC379C0BC908 /* crypto_box_seal.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = crypto_box_seal.c; path = src/libsodium/crypto_box/crypto_box_seal.c; sourceTree = ""; }; - F0400B75425C0EE89BD63D163DED8F0D /* crypto_secretbox.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = crypto_secretbox.c; path = src/libsodium/crypto_secretbox/crypto_secretbox.c; sourceTree = ""; }; + F021E3CC94CA83A7D86BFC379C0BC908 /* crypto_box_seal.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_box_seal.c; path = src/libsodium/crypto_box/crypto_box_seal.c; sourceTree = ""; }; + F0400B75425C0EE89BD63D163DED8F0D /* crypto_secretbox.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_secretbox.c; path = src/libsodium/crypto_secretbox/crypto_secretbox.c; sourceTree = ""; }; F10C7FA53F53CFE4EC38D9E0BA87E7BA /* crypto_box.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_box.h; path = src/libsodium/include/sodium/crypto_box.h; sourceTree = ""; }; + F1574A40DF80612B080ADD5A891AB4F6 /* BIP39.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BIP39.swift; sourceTree = ""; }; F165F30CA5157444DFE14360EF3AC592 /* URLDataPromise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = URLDataPromise.swift; path = Extensions/Foundation/Sources/URLDataPromise.swift; sourceTree = ""; }; F1883ECD3D8BFE6B4880B36667C40544 /* u0.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = u0.h; path = src/libsodium/crypto_stream/chacha20/dolbeau/u0.h; sourceTree = ""; }; - F1995CAECE526C4AE476F0166D223412 /* Data+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Data+Extension.swift"; sourceTree = ""; }; - F1A0364ACB2857B89549D1681F5471F6 /* crypto_scalarmult.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = crypto_scalarmult.c; path = src/libsodium/crypto_scalarmult/crypto_scalarmult.c; sourceTree = ""; }; + F1A0364ACB2857B89549D1681F5471F6 /* crypto_scalarmult.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_scalarmult.c; path = src/libsodium/crypto_scalarmult/crypto_scalarmult.c; sourceTree = ""; }; F2035E6A1FDC602235FDD7F2C4B77EDC /* crypto_onetimeauth.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_onetimeauth.h; path = src/libsodium/include/sodium/crypto_onetimeauth.h; sourceTree = ""; }; - F21FABD13095D8573E0792C878D188F3 /* AwaitKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = AwaitKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + F21FABD13095D8573E0792C878D188F3 /* AwaitKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = AwaitKit.framework; path = AwaitKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + F23E4CB3819BBAB7A4C42E0F2E718783 /* LibSecp256k1Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = LibSecp256k1Extension.swift; sourceTree = ""; }; F2CAA5B9950C963CE43940B4F4ADB24A /* base.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = base.h; path = src/libsodium/crypto_core/curve25519/ref10/base.h; sourceTree = ""; }; F2FB1B6D2CD4C71486DFCA8DC5699179 /* Random.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Random.swift; path = sources/Random.swift; sourceTree = ""; }; - F32DA2C797E61CBBDAEB1E19672F3F84 /* BIP39.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BIP39.swift; sourceTree = ""; }; - F3B2EF3C001ADBF8992D6000C82E1C9F /* Pods-web3swiftExample-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-web3swiftExample-umbrella.h"; sourceTree = ""; }; - F409AD8A4F2597D3F3C8A06763DEEA72 /* randombytes_salsa20_random.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = randombytes_salsa20_random.c; path = src/libsodium/randombytes/salsa20/randombytes_salsa20_random.c; sourceTree = ""; }; + F3FE17841DB7AFCC5D68A4CBF88E44C1 /* Pods-web3swiftExample-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-web3swiftExample-acknowledgements.plist"; sourceTree = ""; }; + F409AD8A4F2597D3F3C8A06763DEEA72 /* randombytes_salsa20_random.c */ = {isa = PBXFileReference; includeInIndex = 1; name = randombytes_salsa20_random.c; path = src/libsodium/randombytes/salsa20/randombytes_salsa20_random.c; sourceTree = ""; }; F43B1D69C5746C1252944156E7D3346A /* Cipher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cipher.swift; path = Sources/CryptoSwift/Cipher.swift; sourceTree = ""; }; - F45661F05ABC3C9464F87FC4529CBCC1 /* box_curve25519xsalsa20poly1305.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = box_curve25519xsalsa20poly1305.c; path = src/libsodium/crypto_box/curve25519xsalsa20poly1305/box_curve25519xsalsa20poly1305.c; sourceTree = ""; }; + F45661F05ABC3C9464F87FC4529CBCC1 /* box_curve25519xsalsa20poly1305.c */ = {isa = PBXFileReference; includeInIndex = 1; name = box_curve25519xsalsa20poly1305.c; path = src/libsodium/crypto_box/curve25519xsalsa20poly1305/box_curve25519xsalsa20poly1305.c; sourceTree = ""; }; F45C0BD9782E28331B5B1EB9282B9D64 /* secp256k1_recovery.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = secp256k1_recovery.h; path = secp256k1_ios/include/secp256k1_recovery.h; sourceTree = ""; }; - F5A60FAF0C556DA7AFAB83A6B5EA2086 /* verify.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = verify.c; path = src/libsodium/crypto_verify/sodium/verify.c; sourceTree = ""; }; + F473978EFD6BDBEF0CC2F422107F0F75 /* Base58.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Base58.swift; sourceTree = ""; }; + F5A60FAF0C556DA7AFAB83A6B5EA2086 /* verify.c */ = {isa = PBXFileReference; includeInIndex = 1; name = verify.c; path = src/libsodium/crypto_verify/sodium/verify.c; sourceTree = ""; }; F5BBA80E1DCF8E9EC730A2EB9793CE85 /* join.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = join.swift; path = Sources/join.swift; sourceTree = ""; }; - F5F1F2EFB6E998AF074CEFFC49E176A2 /* crypto_box.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = crypto_box.c; path = src/libsodium/crypto_box/crypto_box.c; sourceTree = ""; }; + F5F1F2EFB6E998AF074CEFFC49E176A2 /* crypto_box.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_box.c; path = src/libsodium/crypto_box/crypto_box.c; sourceTree = ""; }; F633E6319C5157EE2178F9C60D78A4AD /* Operators.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Operators.swift; path = Sources/CryptoSwift/Operators.swift; sourceTree = ""; }; - F6DA4559CF7F9343C59FF35AC0DC6656 /* core_salsa_ref.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = core_salsa_ref.c; path = src/libsodium/crypto_core/salsa/ref/core_salsa_ref.c; sourceTree = ""; }; + F6DA4559CF7F9343C59FF35AC0DC6656 /* core_salsa_ref.c */ = {isa = PBXFileReference; includeInIndex = 1; name = core_salsa_ref.c; path = src/libsodium/crypto_core/salsa/ref/core_salsa_ref.c; sourceTree = ""; }; F6F963E07983FF08EBA778242B91ECED /* field_5x52_asm_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_5x52_asm_impl.h; path = secp256k1_ios/src/field_5x52_asm_impl.h; sourceTree = ""; }; + F71DB190ECB5926FDDDF768E81D76562 /* Web3+Options.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Web3+Options.swift"; sourceTree = ""; }; F826A5DA305ADE7F626102F8D9639AAE /* scalarmult_curve25519.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalarmult_curve25519.h; path = src/libsodium/crypto_scalarmult/curve25519/scalarmult_curve25519.h; sourceTree = ""; }; - F82D912E0571595E9DC39D6A769DDBC4 /* randombytes_sysrandom.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = randombytes_sysrandom.c; path = src/libsodium/randombytes/sysrandom/randombytes_sysrandom.c; sourceTree = ""; }; - F852783110413A7AA63E0B3BD1AF3DFD /* secp256k1_ios.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = secp256k1_ios.modulemap; sourceTree = ""; }; + F82D912E0571595E9DC39D6A769DDBC4 /* randombytes_sysrandom.c */ = {isa = PBXFileReference; includeInIndex = 1; name = randombytes_sysrandom.c; path = src/libsodium/randombytes/sysrandom/randombytes_sysrandom.c; sourceTree = ""; }; F91EDD125DD55AAAA30A0E1551F5421C /* NSURLSession+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSURLSession+AnyPromise.h"; path = "Extensions/Foundation/Sources/NSURLSession+AnyPromise.h"; sourceTree = ""; }; F9971DA2791BDECC91D70700CC35F165 /* AES.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AES.swift; path = Sources/CryptoSwift/AES.swift; sourceTree = ""; }; F9D566F1E5145FC5681FFFF942382A41 /* GCD.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GCD.swift; path = sources/GCD.swift; sourceTree = ""; }; - FA4A5414D375030EDC528296B2843F2D /* sign.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = sign.c; path = src/libsodium/crypto_sign/ed25519/ref10/sign.c; sourceTree = ""; }; - FA7A8241434EE9786732CDC76DC662A2 /* crypto_auth.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = crypto_auth.c; path = src/libsodium/crypto_auth/crypto_auth.c; sourceTree = ""; }; - FB2F9FB561FDB137B32316BD73DD8634 /* crypto_shorthash.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = crypto_shorthash.c; path = src/libsodium/crypto_shorthash/crypto_shorthash.c; sourceTree = ""; }; + FA210D7BBA90B8FB488606A7A33B27BF /* web3swift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "web3swift-dummy.m"; sourceTree = ""; }; + FA4A5414D375030EDC528296B2843F2D /* sign.c */ = {isa = PBXFileReference; includeInIndex = 1; name = sign.c; path = src/libsodium/crypto_sign/ed25519/ref10/sign.c; sourceTree = ""; }; + FA7A8241434EE9786732CDC76DC662A2 /* crypto_auth.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_auth.c; path = src/libsodium/crypto_auth/crypto_auth.c; sourceTree = ""; }; + FB2F9FB561FDB137B32316BD73DD8634 /* crypto_shorthash.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_shorthash.c; path = src/libsodium/crypto_shorthash/crypto_shorthash.c; sourceTree = ""; }; FB479B05C08DA2E371424C975E0D8D7E /* chacha20_ref.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = chacha20_ref.h; path = src/libsodium/crypto_stream/chacha20/ref/chacha20_ref.h; sourceTree = ""; }; FB47C1C982CDD7A0F2F60C67833AFF05 /* Data Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data Conversion.swift"; path = "sources/Data Conversion.swift"; sourceTree = ""; }; FB543452AF6EE15EC22AC7FD8E6E08EB /* Updatable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Updatable.swift; path = Sources/CryptoSwift/Updatable.swift; sourceTree = ""; }; - FB820F73824419220CD42A47AF7AA621 /* stream_chacha20.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = stream_chacha20.c; path = src/libsodium/crypto_stream/chacha20/stream_chacha20.c; sourceTree = ""; }; - FBE50353F51E72CEE23DEE70BDF17A8F /* CryptoSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CryptoSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + FB820F73824419220CD42A47AF7AA621 /* stream_chacha20.c */ = {isa = PBXFileReference; includeInIndex = 1; name = stream_chacha20.c; path = src/libsodium/crypto_stream/chacha20/stream_chacha20.c; sourceTree = ""; }; + FBB6EAFE5237E5DA8661397C72595ECA /* ABIDecoder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ABIDecoder.swift; sourceTree = ""; }; + FBE50353F51E72CEE23DEE70BDF17A8F /* CryptoSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = CryptoSwift.framework; path = CryptoSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; FC196378D41286DD2E4410859F97606F /* Timeline.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Timeline.swift; path = Source/Timeline.swift; sourceTree = ""; }; FC2DCAE58A9984E72E994379C544D3AF /* blake2b-load-avx2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "blake2b-load-avx2.h"; path = "src/libsodium/crypto_generichash/blake2b/ref/blake2b-load-avx2.h"; sourceTree = ""; }; FC424FDB0E35CAD55604B2AE30B73CA4 /* String+FoundationExtension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+FoundationExtension.swift"; path = "Sources/CryptoSwift/Foundation/String+FoundationExtension.swift"; sourceTree = ""; }; FC44AE6412B1E8EB2FCC26FA763463E9 /* UIView+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+AnyPromise.m"; path = "Extensions/UIKit/Sources/UIView+AnyPromise.m"; sourceTree = ""; }; - FD4CB99B38AC87CF7518199B96E0F77E /* blake2b-long.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = "blake2b-long.c"; path = "src/libsodium/crypto_pwhash/argon2/blake2b-long.c"; sourceTree = ""; }; - FD584DA47385AABD62FAB6D7E5618BB7 /* AwaitKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AwaitKit.xcconfig; sourceTree = ""; }; - FDAD8E8F47213005F4A3ECE1E3808607 /* aead_aes256gcm_aesni.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = aead_aes256gcm_aesni.c; path = src/libsodium/crypto_aead/aes256gcm/aesni/aead_aes256gcm_aesni.c; sourceTree = ""; }; - FDC1EC95EAD1359B926BC45957AA839B /* open.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = open.c; path = src/libsodium/crypto_sign/ed25519/ref10/open.c; sourceTree = ""; }; + FCB477BD2CE0CB17E4E3FA448CA9ED41 /* BigInt-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "BigInt-umbrella.h"; sourceTree = ""; }; + FD25A06AE0F34236B1E8249948B6CBD3 /* web3swift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = web3swift.modulemap; sourceTree = ""; }; + FD4CB99B38AC87CF7518199B96E0F77E /* blake2b-long.c */ = {isa = PBXFileReference; includeInIndex = 1; name = "blake2b-long.c"; path = "src/libsodium/crypto_pwhash/argon2/blake2b-long.c"; sourceTree = ""; }; + FDAD8E8F47213005F4A3ECE1E3808607 /* aead_aes256gcm_aesni.c */ = {isa = PBXFileReference; includeInIndex = 1; name = aead_aes256gcm_aesni.c; path = src/libsodium/crypto_aead/aes256gcm/aesni/aead_aes256gcm_aesni.c; sourceTree = ""; }; + FDC1EC95EAD1359B926BC45957AA839B /* open.c */ = {isa = PBXFileReference; includeInIndex = 1; name = open.c; path = src/libsodium/crypto_sign/ed25519/ref10/open.c; sourceTree = ""; }; FE5C952D1054769FD012B96A64E307DD /* ChaCha20+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ChaCha20+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/ChaCha20+Foundation.swift"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -1346,33 +1362,23 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 0BF3A0C98FE24968030BA839E84AD146 /* Classes */ = { + 101F93EDB640F323339A752203CDC0C0 /* Alamofire-Synchronous */ = { isa = PBXGroup; children = ( - BA359E2BD0B0F8717FAD8AAAF6D3BAB3 /* ABIManager.swift */, - 78ACB7AE9E266C32AD7A2EC4ECCC7912 /* Contract.swift */, - 39EA1D951B36DA2E01C1C660ECFA1958 /* Web3.swift */, - BE99C57CB377DABAD854E794542CF238 /* Web3+Contract.swift */, - 5BB4B5494DBCFC56724336508794DAA0 /* Web3+Eth.swift */, - E5C68214CFAD39BA4EAAA1F0B5E702F2 /* Web3+HookedWallet.swift */, - 371A08CCB2B15A1160CE7180BB4DCB08 /* Web3+HttpProvider.swift */, - 7A766F1E8A7AE0D6D45EA202E49E4844 /* Web3+Infura.swift */, - A4E0FB1D0CCCE77A3AF7782C32C9E4C3 /* Web3+Instance.swift */, - 992A279825E9376E15CDCA70C4D813C5 /* Web3+JSONRPC.swift */, - C2E7655EEF590655321EE18837397953 /* Web3+Methods.swift */, - 079347A759F0CCDAE9D88D7BD66F0D43 /* Web3+Structures.swift */, - EC7219F66BC3009931909070E7C58412 /* Web3+Utils.swift */, + 0DA8F41C11E734C33AA118F2E5C00BBD /* Alamofire+Synchronous.swift */, + 61A2C70DB238154393671F773ECC19A6 /* Support Files */, ); - path = Classes; + name = "Alamofire-Synchronous"; + path = "Alamofire-Synchronous"; sourceTree = ""; }; - 101F93EDB640F323339A752203CDC0C0 /* Alamofire-Synchronous */ = { + 136AE51144449DCB399B3D101CFBDE11 /* Web3 */ = { isa = PBXGroup; children = ( - 0DA8F41C11E734C33AA118F2E5C00BBD /* Alamofire+Synchronous.swift */, - AB69B6B61A438718110642226478206A /* Support Files */, + F7F9484FC4DADAEB0085D4A9DDBA016B /* Classes */, ); - path = "Alamofire-Synchronous"; + name = Web3; + path = web3swift/Web3; sourceTree = ""; }; 1DD85DB7719289F835F38A9AFBDFD0C9 /* Frameworks */ = { @@ -1421,49 +1427,37 @@ name = CorePromise; sourceTree = ""; }; - 2DD4D24F8C3E71074B79C91966B395C0 /* iOS */ = { + 2D3BF761907A72189D561DDEAEE84FFE /* Utils */ = { isa = PBXGroup; children = ( - 7086D0452CB4D5EE4DE2C77047B474AC /* Foundation.framework */, - 2F4A520B7AD2EA71F063828D854813E4 /* QuartzCore.framework */, - DB8DC86D818FCC25E10CB0AC6815DFB1 /* UIKit.framework */, + E67B9ABA9D467E8C75B13BBF39D11217 /* Classes */, ); - name = iOS; + name = Utils; + path = web3swift/Utils; sourceTree = ""; }; - 2EEF05505EA8B14982362867356C4130 /* Pods-web3swiftExample */ = { + 2DD4D24F8C3E71074B79C91966B395C0 /* iOS */ = { isa = PBXGroup; children = ( - BB473DE71AD3C03EF420915EA940AAB8 /* Info.plist */, - E04E62F1937ECB546B54B25F6B9EFC6B /* Pods-web3swiftExample.modulemap */, - 2D8E9D10250642131005B28F689E84D9 /* Pods-web3swiftExample-acknowledgements.markdown */, - A0A859A6EA1C4EA7E2AD073AC8636B26 /* Pods-web3swiftExample-acknowledgements.plist */, - D9374F939010F3A16553466556950076 /* Pods-web3swiftExample-dummy.m */, - 31FEBBDBC5EC3BFE29ACE43AC4352E8C /* Pods-web3swiftExample-frameworks.sh */, - 882D4051417C1D050E2FE6BF057B0A5E /* Pods-web3swiftExample-resources.sh */, - F3B2EF3C001ADBF8992D6000C82E1C9F /* Pods-web3swiftExample-umbrella.h */, - 791DA52F8CD627F34E33674604EE858B /* Pods-web3swiftExample.debug.xcconfig */, - 3840AEA7DB8647349A4853556F0BFBCD /* Pods-web3swiftExample.release.xcconfig */, + 7086D0452CB4D5EE4DE2C77047B474AC /* Foundation.framework */, + 2F4A520B7AD2EA71F063828D854813E4 /* QuartzCore.framework */, + DB8DC86D818FCC25E10CB0AC6815DFB1 /* UIKit.framework */, ); - name = "Pods-web3swiftExample"; - path = "Target Support Files/Pods-web3swiftExample"; + name = iOS; sourceTree = ""; }; - 316D51FB8BF0D224AFA7EE73A84FB0F8 /* Classes */ = { + 30285098C9348EDE2C2DC9933EF9895C /* Support Files */ = { isa = PBXGroup; children = ( - 6B75457C56ECE9B5EFBD24516FACD41F /* Array+Extension.swift */, - 3EE4F76AEECAA6929425CDCADA97EBE8 /* Base58.swift */, - B12E534033E0B776A55C52A3C1C4108A /* CryptoExtensions.swift */, - F1995CAECE526C4AE476F0166D223412 /* Data+Extension.swift */, - 02EFAA4DD141F0E7083B2368A41C17F7 /* Dictionary+Extension.swift */, - A4FDCE0D0CD36077F18D435DCE2D2E53 /* DictionaryLiteralJSONSerializer.swift */, - BAA44460922E23D13F3AA3CB97FEAC20 /* LibSecp256k1Extension.swift */, - 525C54A44224FF07D0A6E21A357A6062 /* NSRegularExpressionExtension.swift */, - 871A70C5117D06D547176DD6B8941418 /* RIPEMD160+StackOveflow.swift */, - 0ED0F867FB383680FCDA13A664BA56C7 /* String+Extension.swift */, + ACD3C9B4451895879AC6901955B43D5C /* Alamofire.modulemap */, + AC67EF5B20E9EE217F16AED183E1CDEC /* Alamofire.xcconfig */, + 0FAC4001D8385117887B622C5C637A42 /* Alamofire-dummy.m */, + 113E4E3046BBB1DCCB7333A400D767E3 /* Alamofire-prefix.pch */, + 4E658939717252825783B1B956BBA40C /* Alamofire-umbrella.h */, + 70C91B2489B60F37CA0C7821DA227461 /* Info.plist */, ); - path = Classes; + name = "Support Files"; + path = "../Target Support Files/Alamofire"; sourceTree = ""; }; 318001AE3D3B612F4783571BFBDDD4FD /* Foundation */ = { @@ -1504,6 +1498,14 @@ name = Products; sourceTree = ""; }; + 33B8AB4853403884C40ADF95DF961A73 /* Development Pods */ = { + isa = PBXGroup; + children = ( + F561EC1D5CA9B198CF820A8B8F364C83 /* web3swift */, + ); + name = "Development Pods"; + sourceTree = ""; + }; 36BDBD772901BB8AA8608E18D7B414A2 /* AwaitKit */ = { isa = PBXGroup; children = ( @@ -1511,66 +1513,33 @@ EBB29798ED5AD3589F358950F2AB23E6 /* AwaitKitExtension.swift */, 8465C7D9DDD5875D26CDD99ECD0E9F26 /* DispatchQueue+Async.swift */, D269964E854AA1AE7A14F4D6035B74DA /* DispatchQueue+Await.swift */, - 486DDF3EF9E6EE56CAB359D560647CAE /* Support Files */, + E417C2082F2F0F76E48BF0EAE6756B2F /* Support Files */, ); + name = AwaitKit; path = AwaitKit; sourceTree = ""; }; - 3AA31509DB9CAB4C9A10E5900689D386 /* Support Files */ = { - isa = PBXGroup; - children = ( - AB6B00CFCB776BEA781D70873FDC6E8E /* Info.plist */, - C2D01CDEDF7D7BA8180C27D0F1DAA966 /* PromiseKit.modulemap */, - 23DBCD101D149E4598A2CF48D816CF57 /* PromiseKit.xcconfig */, - 41A3ACAEC7A956D49AAF96DA60D17C24 /* PromiseKit-dummy.m */, - 2A3F99276C578C8452AA85B568CB3940 /* PromiseKit-prefix.pch */, - 342CDC0ABCA2771B17C4547C86604D87 /* PromiseKit-umbrella.h */, - ); - name = "Support Files"; - path = "../Target Support Files/PromiseKit"; - sourceTree = ""; - }; - 4251DDD223818B50A501CA4BBA974E1C /* Support Files */ = { + 398B0B84AD73421F723D669720A8FF90 /* ABI */ = { isa = PBXGroup; children = ( - 4C094226ECD37FEE51B36EA145165C05 /* Info.plist */, - 46F9BB8074898040DE45EBEA159BCC6C /* SipHash.modulemap */, - BB43FA47E238CE92F53329215F51E5B3 /* SipHash.xcconfig */, - 09D9BF28316A968E4C9623999BC79AC2 /* SipHash-dummy.m */, - 5A7DAF0F5DAA2CD75B3B449EFA4CB041 /* SipHash-prefix.pch */, - 6B236A4C3F459984CEE8AD4A1B854B78 /* SipHash-umbrella.h */, + BC1A88EEF318A9B9BAB8A5AAF7DAFADF /* Classes */, ); - name = "Support Files"; - path = "../Target Support Files/SipHash"; - sourceTree = ""; - }; - 43551A4C81F64ECE8916F87D247FEDD2 /* web3swift */ = { - isa = PBXGroup; - children = ( - 91BEB75B70021D0C633974371ED0B1F9 /* web3swift.h */, - EEF05A6923A1FA21BC45796418BE3C4F /* ABI */, - B4157CB5B7BE1AE10FDA6FF269E4E53A /* Contract */, - 86F4830B887151918872783697D9AA5B /* KeystoreManager */, - 951257BEC7815CE6D6C4B13F5E2B61E5 /* Support Files */, - FD7F94E505DEC98412DC894E62CA384D /* Transaction */, - DC07339E0176D2279D08765BD880E30A /* Utils */, - ); - name = web3swift; - path = ../../..; + name = ABI; + path = web3swift/ABI; sourceTree = ""; }; - 486DDF3EF9E6EE56CAB359D560647CAE /* Support Files */ = { + 3F2325B396BFEDD74F4A0AF6D180848E /* Support Files */ = { isa = PBXGroup; children = ( - DFF6A99862594CF971A3CB582B74A2EB /* AwaitKit.modulemap */, - FD584DA47385AABD62FAB6D7E5618BB7 /* AwaitKit.xcconfig */, - 478A05A7EBC85EB4E7E0E4EB9BB28FAE /* AwaitKit-dummy.m */, - 709D4ECC76BBF45F6F88E318C8D22C0D /* AwaitKit-prefix.pch */, - 3C070AD6B4B082F0B8C93C03FA18F118 /* AwaitKit-umbrella.h */, - 0FB8DFE682077C323E7D2C151B326402 /* Info.plist */, + 001DE8CD345DF918901D6CFDC1145E8B /* BigInt.modulemap */, + 2A8020F5A52E685FC5A49297F5770615 /* BigInt.xcconfig */, + A6E36C342459481E954ACBBE2BB0B629 /* BigInt-dummy.m */, + 74DAEF661D967E1C43CBDF88353DCD58 /* BigInt-prefix.pch */, + FCB477BD2CE0CB17E4E3FA448CA9ED41 /* BigInt-umbrella.h */, + 21D3F59DBE4683AA51EC20E102FDD588 /* Info.plist */, ); name = "Support Files"; - path = "../Target Support Files/AwaitKit"; + path = "../Target Support Files/BigInt"; sourceTree = ""; }; 4B2E4542404C5A1F22A005BB36F9438B /* SipHash */ = { @@ -1580,31 +1549,39 @@ A8515D68DAB4FBCDB55C1A0AAA23E583 /* RandomUInt64.swift */, 933A516C95B96631AA76FC2480E83402 /* SipHashable.swift */, 69B937732822BE36210DAC86489CF250 /* SipHasher.swift */, - 4251DDD223818B50A501CA4BBA974E1C /* Support Files */, + 66CFD46B3C8C86B4CA2F2B7FA33BA7D8 /* Support Files */, ); + name = SipHash; path = SipHash; sourceTree = ""; }; - 50FA458C0C0A6F213F9B4F5EC0F2743E /* Classes */ = { - isa = PBXGroup; - children = ( - 400027F5D6E91FB31EBC691425536C66 /* EthereumTransaction.swift */, - ); - path = Classes; - sourceTree = ""; - }; 51E85F485214C7C829BCBB6AC5C3249D /* PromiseKit */ = { isa = PBXGroup; children = ( 26813366B848D60BE695163CA6E2D120 /* CorePromise */, 318001AE3D3B612F4783571BFBDDD4FD /* Foundation */, BA5382CD22A976FBF90836B109BB15F0 /* QuartzCore */, - 3AA31509DB9CAB4C9A10E5900689D386 /* Support Files */, + 8CA10864327D3890F14C52C50FE95897 /* Support Files */, A6FDC9997530601A5F99837678AE04CE /* UIKit */, ); + name = PromiseKit; path = PromiseKit; sourceTree = ""; }; + 61A2C70DB238154393671F773ECC19A6 /* Support Files */ = { + isa = PBXGroup; + children = ( + 2D9E91BCDAF96205ACF5F3F87CE6A817 /* Alamofire-Synchronous.modulemap */, + D55E9FA5C7EC178124EB207A7E257A8F /* Alamofire-Synchronous.xcconfig */, + B273E0C11FCFFCBD6328A2B99BA64E32 /* Alamofire-Synchronous-dummy.m */, + 3500BFBD1E798806BD6C502ABC00C112 /* Alamofire-Synchronous-prefix.pch */, + CA0F9E7477A1AF23FF18D6C38299B84C /* Alamofire-Synchronous-umbrella.h */, + 445B160819FA00D783EDD09133FA4D83 /* Info.plist */, + ); + name = "Support Files"; + path = "../Target Support Files/Alamofire-Synchronous"; + sourceTree = ""; + }; 6270A846470D8BDC5868028A693094F9 /* Alamofire */ = { isa = PBXGroup; children = ( @@ -1625,52 +1602,71 @@ 7DA4296963BDD85F117BCB19BECB1CD3 /* TaskDelegate.swift */, FC196378D41286DD2E4410859F97606F /* Timeline.swift */, F0191CC0407058C104E8513DBB41AC43 /* Validation.swift */, - A18267404D1D4CAD37E0DFEC606E8A37 /* Support Files */, + 30285098C9348EDE2C2DC9933EF9895C /* Support Files */, ); + name = Alamofire; path = Alamofire; sourceTree = ""; }; - 628F8AD502545C5DA347751825FC5594 /* Support Files */ = { + 63C0F74CD7D35D1B862F4DD3F903F47E /* Support Files */ = { isa = PBXGroup; children = ( - A48B301EFE219EE0C1D658E51C07C68A /* CryptoSwift.modulemap */, - D613873E0A19FDA2C7A1EA9864CC2F55 /* CryptoSwift.xcconfig */, - 0C286AB92F3AA0BD3C4F0DC12672D9B3 /* CryptoSwift-dummy.m */, - 226014ACBE2C6434C3BAE6B9AD7F772F /* CryptoSwift-prefix.pch */, - 227BB984AF2E26E05926F27B42491B13 /* CryptoSwift-umbrella.h */, - B300D20020E36A2EB804DD4B6E466B23 /* Info.plist */, + E82E01C078F5A3534CFF012346CD5F03 /* Info.plist */, + FD25A06AE0F34236B1E8249948B6CBD3 /* web3swift.modulemap */, + EFFA32DED3269AF2CC55836D114DC7EE /* web3swift.xcconfig */, + FA210D7BBA90B8FB488606A7A33B27BF /* web3swift-dummy.m */, + 7599E67F8D1CAEE9C39D25B4B252FA04 /* web3swift-prefix.pch */, + 26877592C79FB490F0D8185255D0EAB5 /* web3swift-umbrella.h */, ); name = "Support Files"; - path = "../Target Support Files/CryptoSwift"; + path = "Example/web3swiftExample/Pods/Target Support Files/web3swift"; sourceTree = ""; }; - 75AECA7EEA98D38C96C228D43E0B5C9C /* Targets Support Files */ = { + 66CFD46B3C8C86B4CA2F2B7FA33BA7D8 /* Support Files */ = { isa = PBXGroup; children = ( - 2EEF05505EA8B14982362867356C4130 /* Pods-web3swiftExample */, + B4A2C2704D2CBD5772441321D87BC9CB /* Info.plist */, + 5DF7B5A63F2115DE4A16A2A7184A8F35 /* SipHash.modulemap */, + A516823007F1A671A6FBB4A94A897349 /* SipHash.xcconfig */, + 0AC5D21A297437198F6DF3E0F449AC46 /* SipHash-dummy.m */, + B34711F0BA11B00796FA492532D73A76 /* SipHash-prefix.pch */, + E639D0DDDE2123200AAF51AF28A3F655 /* SipHash-umbrella.h */, ); - name = "Targets Support Files"; + name = "Support Files"; + path = "../Target Support Files/SipHash"; sourceTree = ""; }; - 781904535173D85014DB06F4B8F36563 /* Support Files */ = { + 69925DA428525CDCA58278848094AE12 /* Transaction */ = { isa = PBXGroup; children = ( - AD4BA9071D66D607B44DD792300049CC /* Info.plist */, - 29BDA69E969EE18D556E2099D4E71179 /* libsodium.modulemap */, - 18FA5313A600FD90956CC0F6F278685F /* libsodium.xcconfig */, - 4EDA8B19DFBCB128C6DACC8B21A01A7F /* libsodium-dummy.m */, - 3B41A90CF0D8520DD7A8B9B9EAF4E29F /* libsodium-prefix.pch */, - 767DB7815406A6FA2E627A14295B74F2 /* libsodium-umbrella.h */, + FF91294292F1CD38E539A1F7DD1C1E75 /* Classes */, ); - name = "Support Files"; - path = "../Target Support Files/libsodium"; + name = Transaction; + path = web3swift/Transaction; + sourceTree = ""; + }; + 72341CEB1D38BE359E0C543E67A25A31 /* Contract */ = { + isa = PBXGroup; + children = ( + B68B140CC2A119CA3D6046AC769A4417 /* Classes */, + ); + name = Contract; + path = web3swift/Contract; + sourceTree = ""; + }; + 75AECA7EEA98D38C96C228D43E0B5C9C /* Targets Support Files */ = { + isa = PBXGroup; + children = ( + D1F68C5733678994499437A81F11EEFD /* Pods-web3swiftExample */, + ); + name = "Targets Support Files"; sourceTree = ""; }; 7DB346D0F39D3F0E887471402A8071AB = { isa = PBXGroup; children = ( 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, - F991399F9B6129BAD5C5B9FF52E1F72E /* Development Pods */, + 33B8AB4853403884C40ADF95DF961A73 /* Development Pods */, 1DD85DB7719289F835F38A9AFBDFD0C9 /* Frameworks */, 7FF36AE9D9426ABC117F5AEC9C49ECF4 /* Pods */, 33107D5F312E148F9370795271A1D1A5 /* Products */, @@ -1694,13 +1690,18 @@ name = Pods; sourceTree = ""; }; - 86F4830B887151918872783697D9AA5B /* KeystoreManager */ = { + 82B9A5D3E3048A1E341207DD23FDF58E /* Support Files */ = { isa = PBXGroup; children = ( - D57411FC714307396E71127F07EF8F0C /* Classes */, + 95553BF967F8393CC0E15377C588E57E /* Info.plist */, + 95FFC9B5F34AFDE5F3C5B23614FD8BA6 /* libsodium.modulemap */, + 2E35A4ED0213D89F1FBF56CA8C7F9189 /* libsodium.xcconfig */, + 04EBF1BE3A127997E9CA4B85B28DE443 /* libsodium-dummy.m */, + B4516B013C2D85F5799546528393B511 /* libsodium-prefix.pch */, + 2EB9781FDE9935DA7B536217063D56E8 /* libsodium-umbrella.h */, ); - name = KeystoreManager; - path = web3swift/KeystoreManager; + name = "Support Files"; + path = "../Target Support Files/libsodium"; sourceTree = ""; }; 8918EB57CEF52262E1C06AA28F3AD0CE /* secp256k1_ios */ = { @@ -1757,37 +1758,52 @@ D4957A314DB834BADDFEC599AB8EEAAB /* secp256k1_ios.h */, F45C0BD9782E28331B5B1EB9282B9D64 /* secp256k1_recovery.h */, D620EBBB758E41843677425B43B7B63E /* util.h */, - B1763D27C8384E24B6D40AD7501624CF /* Support Files */, + 8F8EC9CCABDCBF1E09C55903F12831BD /* Support Files */, ); + name = secp256k1_ios; path = secp256k1_ios; sourceTree = ""; }; - 951257BEC7815CE6D6C4B13F5E2B61E5 /* Support Files */ = { + 8CA10864327D3890F14C52C50FE95897 /* Support Files */ = { isa = PBXGroup; children = ( - 5C038401F0462CB6E1549BAC9B709192 /* Info.plist */, - BA9ECE18EC0F448527432D94D32EE625 /* web3swift.modulemap */, - 860710FEC75D881C4DA79921FEB71EA1 /* web3swift.xcconfig */, - 6A0F73A3F9A05D9232E2F9D989B597B8 /* web3swift-dummy.m */, - 37757183D0DED2DF5F73E640141E2F1C /* web3swift-prefix.pch */, - 82740FAACFE6E8102720B0CF8FEB637F /* web3swift-umbrella.h */, + 4FC870E78BED4594079BDDD605386458 /* Info.plist */, + A9DBA430A24B89626C4ACCDBEAEE6D27 /* PromiseKit.modulemap */, + E18B4ED50488EE51DFC6163C62BC9187 /* PromiseKit.xcconfig */, + 86323F7D7148A07EDA5C88B5DC76C6AE /* PromiseKit-dummy.m */, + 0CFD2EB8F3BAD66231A27253A21EA578 /* PromiseKit-prefix.pch */, + 27A772F87A74E954473027ACB713F5F3 /* PromiseKit-umbrella.h */, ); name = "Support Files"; - path = "Example/web3swiftExample/Pods/Target Support Files/web3swift"; + path = "../Target Support Files/PromiseKit"; sourceTree = ""; }; - A18267404D1D4CAD37E0DFEC606E8A37 /* Support Files */ = { + 8F8EC9CCABDCBF1E09C55903F12831BD /* Support Files */ = { isa = PBXGroup; children = ( - 45338D1E3D427CC35C4BE47A478B9CCD /* Alamofire.modulemap */, - E7EEBD24D4FE5D11B7293F5F2C428053 /* Alamofire.xcconfig */, - 8AFEB0DC11DAF830A23CFF736F60CF54 /* Alamofire-dummy.m */, - 819454A984273E29F6463AB7B0BA5C9E /* Alamofire-prefix.pch */, - 7B3118129A4387B6EA8C997F86A84194 /* Alamofire-umbrella.h */, - 45E03C9141BF3E68A238FF59D63EA867 /* Info.plist */, + 9B2EA1870C7A871C0890A7D4044BBFD3 /* Info.plist */, + A6F058430C52087F14564874D58CD2FD /* secp256k1_ios.modulemap */, + 6AD37CB1727826E35D3268049124768D /* secp256k1_ios.xcconfig */, + B3A1ACE5001C305E7DFF9B20D3E83C40 /* secp256k1_ios-dummy.m */, + C432982AD4910FEF798518554A20BF81 /* secp256k1_ios-prefix.pch */, + 17CD3829F2814CA8487A128D58A672F5 /* secp256k1_ios-umbrella.h */, ); name = "Support Files"; - path = "../Target Support Files/Alamofire"; + path = "../Target Support Files/secp256k1_ios"; + sourceTree = ""; + }; + 996026418A0C26628AA62B3CC7445A66 /* Support Files */ = { + isa = PBXGroup; + children = ( + 40D2B492827097064532006BA330AC84 /* CryptoSwift.modulemap */, + 71F8D9712CCF3C50FABA4EA1342C752F /* CryptoSwift.xcconfig */, + 1908A7DD3EF57C1D1CD938AE24C8C630 /* CryptoSwift-dummy.m */, + 7DD88E282724B7FE7D493B80D32C576F /* CryptoSwift-prefix.pch */, + ECBE8FD42E69EC23C8997450AB120DA5 /* CryptoSwift-umbrella.h */, + CEB18CD7B5FFCE41AFC5275329568778 /* Info.plist */, + ); + name = "Support Files"; + path = "../Target Support Files/CryptoSwift"; sourceTree = ""; }; A6FDC9997530601A5F99837678AE04CE /* UIKit */ = { @@ -1805,41 +1821,14 @@ name = UIKit; sourceTree = ""; }; - AB69B6B61A438718110642226478206A /* Support Files */ = { + B68B140CC2A119CA3D6046AC769A4417 /* Classes */ = { isa = PBXGroup; children = ( - D6499933E981B563D486083670B101CB /* Alamofire-Synchronous.modulemap */, - 131E70277AF91A9ADD6ACE4903C79281 /* Alamofire-Synchronous.xcconfig */, - 78CF790C97329ED18EF9528E51873631 /* Alamofire-Synchronous-dummy.m */, - CF2FE611F57CFE63D1A7C8C2E138F516 /* Alamofire-Synchronous-prefix.pch */, - 3B17CAFD5954BB1D285B628A0D8F21CE /* Alamofire-Synchronous-umbrella.h */, - 0BE4D89E5D5DF5D799251BE91A0C5289 /* Info.plist */, + 17D0CBABF6C26C0888829B2D972CAFD8 /* ABIManager.swift */, + 3FF38D18EB0EC35CC2A70B85CD62E729 /* Contract.swift */, ); - name = "Support Files"; - path = "../Target Support Files/Alamofire-Synchronous"; - sourceTree = ""; - }; - B1763D27C8384E24B6D40AD7501624CF /* Support Files */ = { - isa = PBXGroup; - children = ( - AF9971EDA1B7F200AFC4616629D98446 /* Info.plist */, - F852783110413A7AA63E0B3BD1AF3DFD /* secp256k1_ios.modulemap */, - 3C1E6DA9B849B0764B5C14658A2FFAEB /* secp256k1_ios.xcconfig */, - 100E9AAC7191CDEFC6BCE1EC1C00211E /* secp256k1_ios-dummy.m */, - 8D6B4DD7FE5634E4623F65F355F5606E /* secp256k1_ios-prefix.pch */, - 5A5CDBB8EBD6F53AB55FB2F8FC459912 /* secp256k1_ios-umbrella.h */, - ); - name = "Support Files"; - path = "../Target Support Files/secp256k1_ios"; - sourceTree = ""; - }; - B4157CB5B7BE1AE10FDA6FF269E4E53A /* Contract */ = { - isa = PBXGroup; - children = ( - 0BF3A0C98FE24968030BA839E84AD146 /* Classes */, - ); - name = Contract; - path = web3swift/Contract; + name = Classes; + path = Classes; sourceTree = ""; }; BA5382CD22A976FBF90836B109BB15F0 /* QuartzCore */ = { @@ -1852,15 +1841,16 @@ name = QuartzCore; sourceTree = ""; }; - BEE89D8705F3FC8CA34F71E99B34DCFD /* Classes */ = { + BC1A88EEF318A9B9BAB8A5AAF7DAFADF /* Classes */ = { isa = PBXGroup; children = ( - 1C7CFBD3BE32A61177AFB18517D5F768 /* ABIDecoder.swift */, - 6EB0CC2FAEF57AE316BE4E97096252AF /* ABIEncoder.swift */, - 9433E8B33481FD162428EC795D2A16DA /* ABIRecordParser.swift */, - 3396B084F850E4EC592BD9E912A363B2 /* ABITypes.swift */, - 109E03D140257436F27F7E3144F38DB1 /* RLP.swift */, + FBB6EAFE5237E5DA8661397C72595ECA /* ABIDecoder.swift */, + BB44DCE3061CB0E0C37F91EBB0420ADB /* ABIEncoder.swift */, + 03F853B1CAAEC80B8778ACEBAF1D7288 /* ABIRecordParser.swift */, + 637FFA0086F252CAE578A40D3E3454EB /* ABITypes.swift */, + EF80779D6B0B13581491EBCF062A61A9 /* RLP.swift */, ); + name = Classes; path = Classes; sourceTree = ""; }; @@ -1889,8 +1879,9 @@ 695E1F76355D5D3A04712CF9EDDD5B41 /* String Conversion.swift */, 98B6FF3FCE267ECE40F21951F522B439 /* Subtraction.swift */, 7B52795E380E76C28B9A308424766B56 /* Words and Bits.swift */, - F9CE9AFF84FF25D2DF39404F159E1885 /* Support Files */, + 3F2325B396BFEDD74F4A0AF6D180848E /* Support Files */, ); + name = BigInt; path = BigInt; sourceTree = ""; }; @@ -1961,45 +1952,126 @@ 8DB7C8CA1BFC474D2F05C472191DCF6B /* Utils.swift */, 6239BB700E746160EF00B2A69EDBB3BA /* Utils+Foundation.swift */, 95F84F0832E11E6C3FF3ABD20F5F15BE /* ZeroPadding.swift */, - 628F8AD502545C5DA347751825FC5594 /* Support Files */, + 996026418A0C26628AA62B3CC7445A66 /* Support Files */, ); + name = CryptoSwift; path = CryptoSwift; sourceTree = ""; }; - D57411FC714307396E71127F07EF8F0C /* Classes */ = { + D1F68C5733678994499437A81F11EEFD /* Pods-web3swiftExample */ = { + isa = PBXGroup; + children = ( + 29DA473F0766AE3EE863E84457BD455E /* Info.plist */, + D9ECC22EAB79F2D8C5401BC7651B149E /* Pods-web3swiftExample.modulemap */, + 4BC7A989B9644918816D8FD5AD8C3BE1 /* Pods-web3swiftExample-acknowledgements.markdown */, + F3FE17841DB7AFCC5D68A4CBF88E44C1 /* Pods-web3swiftExample-acknowledgements.plist */, + 7ED86A9CBDB836720BB4CF0BAF693508 /* Pods-web3swiftExample-dummy.m */, + 65E257CA9926B12FA56E8D0B1F987D6E /* Pods-web3swiftExample-frameworks.sh */, + 17AF41F6667ACE32AB1F5ABDAB718A36 /* Pods-web3swiftExample-resources.sh */, + B472C5B4A2DC91693D586ED875901035 /* Pods-web3swiftExample-umbrella.h */, + DCD2CE2AD1529B9BE28E2229458388AD /* Pods-web3swiftExample.debug.xcconfig */, + B403F9AEE3BAC4FCE70097C6E0EB230A /* Pods-web3swiftExample.release.xcconfig */, + ); + name = "Pods-web3swiftExample"; + path = "Target Support Files/Pods-web3swiftExample"; + sourceTree = ""; + }; + D9FE8DDD4386C054CE8F882AA11E23C2 /* Classes */ = { isa = PBXGroup; children = ( - 9D5DE763E64A1D429D58A28C492FEC82 /* AbstractKeystore.swift */, - 3872D3525E6B5E87EBF550AC9B2B1652 /* BIP32HDNode.swift */, - 40E94DB15AB89258AE71B598FE8E851D /* BIP32Keystore.swift */, - 522AB582984497423F37801A3E3B5C5B /* BIP32KeystoreJSONStructure.swift */, - F32DA2C797E61CBBDAEB1E19672F3F84 /* BIP39.swift */, - 220F58B2D81F2FE9BE125DAC7D1FF708 /* BIP39+WordLists.swift */, - 839FA12031C6C7201C6E34953AB7644F /* EthereumAddress.swift */, - A0A8FFCBF073D8840E283A3223AE42BF /* EthereumKeystoreV3.swift */, - 1B0E93721ED60B311DE632AF7E5CA387 /* KeystoreManager.swift */, - D235A11F021E91E062ADBEC6DDD2583A /* KeystoreV3JSONStructure.swift */, - 6089F3E0B434CBA9013A5CB6A501F7BD /* Web3Swift+AbstractSigner.swift */, + E846BBC34C45979A613C1BF6DAF4DA7E /* Web3+BrowserFunctions.swift */, + D8FC9649BB9CA55D0099D39302F1A72D /* Web3+Wallet.swift */, ); + name = Classes; path = Classes; sourceTree = ""; }; - DC07339E0176D2279D08765BD880E30A /* Utils */ = { + DA74648EFE5351A5F8ACA64BBBD75D7F /* Classes */ = { isa = PBXGroup; children = ( - 316D51FB8BF0D224AFA7EE73A84FB0F8 /* Classes */, + ACC6E789154ED08101D28C078464FD2C /* AbstractKeystore.swift */, + EF34FDB15770AAED47330F7BEAF43A20 /* AbstractSigner.swift */, + A96A1D67A71A84310A8B3E600523DFAB /* BIP32HDNode.swift */, + 3F9403C126A65CEDFCAB5123F6649D67 /* BIP32Keystore.swift */, + 67A41557FE2F61C175AFB783862F61F6 /* BIP32KeystoreJSONStructure.swift */, + F1574A40DF80612B080ADD5A891AB4F6 /* BIP39.swift */, + AEBB6FBDE3E39C503846ACADDDD5B970 /* BIP39+WordLists.swift */, + 149F2AE051375EEA7CB06B9A5151E83D /* EthereumAddress.swift */, + 36D3265CF0B90338C05E12A66D18F762 /* EthereumKeystoreV3.swift */, + 4251C5DD349A96633A288035F1C7D237 /* KeystoreManager.swift */, + A2476FC29E2F6F127D1DAEAB24992C10 /* KeystoreV3JSONStructure.swift */, ); - name = Utils; - path = web3swift/Utils; + name = Classes; + path = Classes; sourceTree = ""; }; - EEF05A6923A1FA21BC45796418BE3C4F /* ABI */ = { + E3B44BC8696A81DFEAC1BD73E38579B1 /* KeystoreManager */ = { isa = PBXGroup; children = ( - BEE89D8705F3FC8CA34F71E99B34DCFD /* Classes */, + DA74648EFE5351A5F8ACA64BBBD75D7F /* Classes */, ); - name = ABI; - path = web3swift/ABI; + name = KeystoreManager; + path = web3swift/KeystoreManager; + sourceTree = ""; + }; + E417C2082F2F0F76E48BF0EAE6756B2F /* Support Files */ = { + isa = PBXGroup; + children = ( + B953C763D44068EC932EE15925D86DB0 /* AwaitKit.modulemap */, + AFAF102DD507082EAFA7857A1FF4C60F /* AwaitKit.xcconfig */, + 98B5731A84A40DA7DC679486C52C8BFD /* AwaitKit-dummy.m */, + 804CD46C26745212AF84412C41FF3CAC /* AwaitKit-prefix.pch */, + 5F15503707D27B37F2B99B97C18E32AD /* AwaitKit-umbrella.h */, + C3B78CB29076B5F2FFC723E40E95A5A7 /* Info.plist */, + ); + name = "Support Files"; + path = "../Target Support Files/AwaitKit"; + sourceTree = ""; + }; + E4BE16357BC31C9DFC1562D6BB53C34F /* Pod */ = { + isa = PBXGroup; + children = ( + CB702C8AB217A241FB4FF2A55AC30342 /* LICENSE */, + 5D767CBDF5CC58B163F9BDD88987B79B /* README.md */, + 4C1B5E8B0EEFBEA5A4604B80D3AB9793 /* web3swift.podspec */, + ); + name = Pod; + sourceTree = ""; + }; + E67B9ABA9D467E8C75B13BBF39D11217 /* Classes */ = { + isa = PBXGroup; + children = ( + BC0B55B8A15BB6D4D3D7785F982A573D /* Array+Extension.swift */, + F473978EFD6BDBEF0CC2F422107F0F75 /* Base58.swift */, + 6F0CA3FB358CB7B184EBD5888E7C7B44 /* CryptoExtensions.swift */, + 898ABA8C547AA09133B7F0443ACE6ED9 /* Data+Extension.swift */, + 72B9241BE1402124361F02939811C3FD /* Dictionary+Extension.swift */, + 0B82875020813BB6E58D6DAD9CEC0FAB /* DictionaryLiteralJSONSerializer.swift */, + F23E4CB3819BBAB7A4C42E0F2E718783 /* LibSecp256k1Extension.swift */, + 8045331C4402645985132EBF49BEF91C /* NSRegularExpressionExtension.swift */, + 04980EBB43657A4FA0DF27AE1830F5DD /* RIPEMD160+StackOveflow.swift */, + AC8062B7743D29F613022183AAAF6ACF /* String+Extension.swift */, + ); + name = Classes; + path = Classes; + sourceTree = ""; + }; + F561EC1D5CA9B198CF820A8B8F364C83 /* web3swift */ = { + isa = PBXGroup; + children = ( + 14D20032B3C3BE2C2941BA4C4A1A8D80 /* web3swift.h */, + 398B0B84AD73421F723D669720A8FF90 /* ABI */, + 72341CEB1D38BE359E0C543E67A25A31 /* Contract */, + FC16D23BD6BE39D2883650A15322DB7A /* HookedFunctions */, + E3B44BC8696A81DFEAC1BD73E38579B1 /* KeystoreManager */, + E4BE16357BC31C9DFC1562D6BB53C34F /* Pod */, + 63C0F74CD7D35D1B862F4DD3F903F47E /* Support Files */, + 69925DA428525CDCA58278848094AE12 /* Transaction */, + 2D3BF761907A72189D561DDEAEE84FFE /* Utils */, + 136AE51144449DCB399B3D101CFBDE11 /* Web3 */, + ); + name = web3swift; + path = ../../..; sourceTree = ""; }; F5A06E9D04EF198377E4CE67146299A9 /* libsodium */ = { @@ -2229,40 +2301,51 @@ 22D44C0D06C5F14B692B0283B51FA025 /* x25519_ref10.c */, BDC4360DC745AD87354A0A874492558E /* x25519_ref10.h */, 9439296BAB27817E0E8C1F023584B984 /* xor_afternm_aes128ctr.c */, - 781904535173D85014DB06F4B8F36563 /* Support Files */, + 82B9A5D3E3048A1E341207DD23FDF58E /* Support Files */, ); + name = libsodium; path = libsodium; sourceTree = ""; }; - F991399F9B6129BAD5C5B9FF52E1F72E /* Development Pods */ = { + F7F9484FC4DADAEB0085D4A9DDBA016B /* Classes */ = { isa = PBXGroup; children = ( - 43551A4C81F64ECE8916F87D247FEDD2 /* web3swift */, + 9A8C4BE37B72D1560929038B38F79405 /* Web3.swift */, + B8AA725BF1CEDB39AF870F96104567BC /* Web3+AbstractSigner.swift */, + 221509961AE93648AD44198F7C7B70EB /* Web3+Contract.swift */, + 22975962B73A95743B76D1CD431D50CB /* Web3+Eth.swift */, + 59C35828F9F9F253A5A0CE878AA04499 /* Web3+HttpProvider.swift */, + 2AD440B7F6647E9CB2D56554AC81B088 /* Web3+Infura.swift */, + 46574394F8698B415C697959835DA5D0 /* Web3+Instance.swift */, + D619BA62E98DD11243E4F24E46304C34 /* Web3+JSONRPC.swift */, + 4F89464E9CA231472DFA07CC61F6CA8A /* Web3+Methods.swift */, + F71DB190ECB5926FDDDF768E81D76562 /* Web3+Options.swift */, + 4F106BD4B1B591E027C15E7245F21E36 /* Web3+Protocols.swift */, + DF87B4E9D2CB52A63CA01D0AC92C33F9 /* Web3+Structures.swift */, + 3A49A571A990F4CFA028AB216F6188A5 /* Web3+TransactionIntermediate.swift */, + DE09C3C480D2F931CA7CFD5BE1D23EDE /* Web3+Utils.swift */, ); - name = "Development Pods"; + name = Classes; + path = Classes; sourceTree = ""; }; - F9CE9AFF84FF25D2DF39404F159E1885 /* Support Files */ = { + FC16D23BD6BE39D2883650A15322DB7A /* HookedFunctions */ = { isa = PBXGroup; children = ( - 5A7551417836719723B42EA029E81B5E /* BigInt.modulemap */, - CCCF2B5A70A876CDCAD4C4102C998D27 /* BigInt.xcconfig */, - AB3E8694FB4DBE03DA798ECE62B6C4C9 /* BigInt-dummy.m */, - 52F9FDC16BB88BF03FA1431DB3114F02 /* BigInt-prefix.pch */, - 3B74E25AF039DF1CDD40C9C8B955E0C5 /* BigInt-umbrella.h */, - 010E51C041097BECC979E95334A701D5 /* Info.plist */, + D9FE8DDD4386C054CE8F882AA11E23C2 /* Classes */, ); - name = "Support Files"; - path = "../Target Support Files/BigInt"; + name = HookedFunctions; + path = web3swift/HookedFunctions; sourceTree = ""; }; - FD7F94E505DEC98412DC894E62CA384D /* Transaction */ = { + FF91294292F1CD38E539A1F7DD1C1E75 /* Classes */ = { isa = PBXGroup; children = ( - 50FA458C0C0A6F213F9B4F5EC0F2743E /* Classes */, + 2B9A9A6287A7CC3E9C1ABE43EA77AB19 /* EthereumTransaction.swift */, + 5B3EC05C97440515B2A0417D8FABC083 /* TransactionSigner.swift */, ); - name = Transaction; - path = web3swift/Transaction; + name = Classes; + path = Classes; sourceTree = ""; }; /* End PBXGroup section */ @@ -2708,7 +2791,7 @@ isa = PBXNativeTarget; buildConfigurationList = 552B779F96EB4DA1048DFAF8C2978162 /* Build configuration list for PBXNativeTarget "web3swift" */; buildPhases = ( - E80D017290578FE009D13B8FF1AC93F4 /* Sources */, + 1637BF9B1F132523021AD75281CE4E6E /* Sources */, 068288BA0C3CA34F240CF276E6D80516 /* Frameworks */, C0C42821D9C19AE61A6044E2F04F6CF5 /* Headers */, ); @@ -2752,8 +2835,8 @@ D41D8CD98F00B204E9800998ECF8427E /* Project object */ = { isa = PBXProject; attributes = { - LastSwiftUpdateCheck = 0830; - LastUpgradeCheck = 0700; + LastSwiftUpdateCheck = 0930; + LastUpgradeCheck = 0930; }; buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; compatibilityVersion = "Xcode 3.2"; @@ -2804,6 +2887,60 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 1637BF9B1F132523021AD75281CE4E6E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1E54F6961AA349841C1EEE53472DCFE7 /* ABIDecoder.swift in Sources */, + 098A77307962A9DA5217039364A960DF /* ABIEncoder.swift in Sources */, + 060938139DA8560500C8064D35B3A78E /* ABIManager.swift in Sources */, + 7317A49CEDD983B2777E580919D0D5BA /* ABIRecordParser.swift in Sources */, + 784F823C880825EBDA93EFC237995D89 /* ABITypes.swift in Sources */, + AA3C03164D2F765FC1941806E696A378 /* AbstractKeystore.swift in Sources */, + A25F21044DC6A22E7FEB680114E63E04 /* AbstractSigner.swift in Sources */, + CA410284104AA4CFF12EC3F428FF36E3 /* Array+Extension.swift in Sources */, + 6D031A2392F59FB648AFA4EB11F5A31E /* Base58.swift in Sources */, + 112BBE0613EA75E20AAB51BD1E11EB7B /* BIP32HDNode.swift in Sources */, + 4E9B9DBF62F3E48769AAA87563F8DB8A /* BIP32Keystore.swift in Sources */, + 3BD8B4C08C7233436A93493DF283B9AA /* BIP32KeystoreJSONStructure.swift in Sources */, + 6476E89A738B7A4B807CE3D87EB202BF /* BIP39+WordLists.swift in Sources */, + 9285C6C3CA25E5525BD8D1859573AA4E /* BIP39.swift in Sources */, + 4ABED6E1AB85AB75300E2709708E9F5E /* Contract.swift in Sources */, + 2A499CD3A3C106997CCA7E92645411D9 /* CryptoExtensions.swift in Sources */, + 723670CA86C746E860EF55C8F6A4B6DA /* Data+Extension.swift in Sources */, + 536A94F5F6D7F6D6BE656AE36DF51A46 /* Dictionary+Extension.swift in Sources */, + 2653C94955B2DF8192257E48523D735A /* DictionaryLiteralJSONSerializer.swift in Sources */, + 89E58490CCED5B555A34DAA99D746819 /* EthereumAddress.swift in Sources */, + 7B8B890C6D2AC9971DA6383A7A730A76 /* EthereumKeystoreV3.swift in Sources */, + 9097904ADE8D98667C845572F76971D5 /* EthereumTransaction.swift in Sources */, + 775F6E4E9BA627EEB8D080C0FCE3AC23 /* KeystoreManager.swift in Sources */, + A5CAE26139016A19E3FE68BBE0DEF4D3 /* KeystoreV3JSONStructure.swift in Sources */, + D139BC9469872F0A4248BAF366A59542 /* LibSecp256k1Extension.swift in Sources */, + A5271C7DA12FA09986142D0FFC18C3E5 /* NSRegularExpressionExtension.swift in Sources */, + E69EDD024658AD4715DEB4DB137A1874 /* RIPEMD160+StackOveflow.swift in Sources */, + EFA23FA6CE7E37B53311C58DC0E43564 /* RLP.swift in Sources */, + 719318481CFED5E44927296E5D091719 /* String+Extension.swift in Sources */, + 686177AF47D0613149E93B4CC6253784 /* TransactionSigner.swift in Sources */, + 259B2B09D10A7FC3AA7311D758D2218B /* Web3+AbstractSigner.swift in Sources */, + 08A829CA5DABA99AE8E45B1DB3C8C944 /* Web3+BrowserFunctions.swift in Sources */, + 3212AF6BE093BDE4FF1EF7012AF5BCB3 /* Web3+Contract.swift in Sources */, + BA3FDEBC88E9B3CB536211E355DCF342 /* Web3+Eth.swift in Sources */, + BE457C67E3CDB3FDE1CB79A27BC17CC4 /* Web3+HttpProvider.swift in Sources */, + 104D96021908BFBC41B58249B292C428 /* Web3+Infura.swift in Sources */, + 7B16394C88D7CBE9F31B1E9FCEA0A909 /* Web3+Instance.swift in Sources */, + DFCF48FD4CDCBCB4F99A4F625AB50BE7 /* Web3+JSONRPC.swift in Sources */, + E8DE78BFCFBF040D7DDD6A4D6CC187D2 /* Web3+Methods.swift in Sources */, + 45383390BED5E17F9C6ADFF99C47A74F /* Web3+Options.swift in Sources */, + 570BE2C5BAE922CC1C6B28817EA858D4 /* Web3+Protocols.swift in Sources */, + 4084D2D8AF422324C3982ABDAD8D4363 /* Web3+Structures.swift in Sources */, + 1F75A0E388739D515F8966A30288BE32 /* Web3+TransactionIntermediate.swift in Sources */, + 63A7025F1C7522331C685A500341ED46 /* Web3+Utils.swift in Sources */, + 6A10466D38FAE78DDD32E9AEF4C4BE43 /* Web3+Wallet.swift in Sources */, + 2FC5024A5D1748A0F3418E4F5FDC8D9F /* Web3.swift in Sources */, + 12E5DBC787525FCA3AC72269635C1D80 /* web3swift-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 2315C61FC7596A2E6552E704F9D649FA /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -3118,53 +3255,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - E80D017290578FE009D13B8FF1AC93F4 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - D223723FF17A186A478908E4BD07010E /* ABIDecoder.swift in Sources */, - 3951F7DAC369F18DDCDE3B50E330EEC1 /* ABIEncoder.swift in Sources */, - FB0BAB91D503764F1B5C5759A2264D08 /* ABIManager.swift in Sources */, - DB3E8F75E175388226264A8C8A0B60DD /* ABIRecordParser.swift in Sources */, - 0712263ACDD41E03822D47C9D14A899E /* ABITypes.swift in Sources */, - 62C030B268F5DBB87440B59FC968BF1B /* AbstractKeystore.swift in Sources */, - AC8F0F0813E6A9ED211069B19A76CB37 /* Array+Extension.swift in Sources */, - 48B4380FE6D4D72B7C5E51A66D7DB118 /* Base58.swift in Sources */, - 2D60BCD7FFF739A632E7C840CA55573B /* BIP32HDNode.swift in Sources */, - 5C80D7F87C6ED11051688DC08EBCC304 /* BIP32Keystore.swift in Sources */, - F92541B941753B300F6EA476AFF69C7D /* BIP32KeystoreJSONStructure.swift in Sources */, - 78BD119AC7F96090F69EC7F1DD35E8A6 /* BIP39+WordLists.swift in Sources */, - 0CE68784A2B882367E88F162937E1291 /* BIP39.swift in Sources */, - B847D24BD91E7CA4E4EE07622C5B6144 /* Contract.swift in Sources */, - E7B4746743089F80E99F7427B8B127D5 /* CryptoExtensions.swift in Sources */, - B7B3DEF588D0F02A83BF1B9205AB0A97 /* Data+Extension.swift in Sources */, - A0F3D2FC3D885C648AD8A503856F9C89 /* Dictionary+Extension.swift in Sources */, - EDBD0D3BA8650BEFC50478F5B5C2B50C /* DictionaryLiteralJSONSerializer.swift in Sources */, - EBD71D794F0B21F62EEF43C913A94751 /* EthereumAddress.swift in Sources */, - 9B2FDC4A91FA867E1EE12DC3015E27DA /* EthereumKeystoreV3.swift in Sources */, - D55641F1FE0F6EBBC0526BC17E283D6F /* EthereumTransaction.swift in Sources */, - 985006663B68A2E48AA8C9E882AAB41A /* KeystoreManager.swift in Sources */, - 91CA4BC71C911FAC7CAD0D6A98908958 /* KeystoreV3JSONStructure.swift in Sources */, - FE24486EBAA3A98B31DC7AF6F0F7D960 /* LibSecp256k1Extension.swift in Sources */, - EDEBE3DCF2B9983EA696924AC2A7F18B /* NSRegularExpressionExtension.swift in Sources */, - 529F108C99760997CC637A391EAE6D1D /* RIPEMD160+StackOveflow.swift in Sources */, - 188400241BD734A1CDA0A202CBC2EF39 /* RLP.swift in Sources */, - DD679AC7BD83623D67342ABEC72ED0B4 /* String+Extension.swift in Sources */, - A37D2139B9C1B7E3E650815792C9E272 /* Web3+Contract.swift in Sources */, - E24771367371EF996B91FBCA34609968 /* Web3+Eth.swift in Sources */, - 5DC586F146527B4ED95A993C27551854 /* Web3+HttpProvider.swift in Sources */, - DDD7ED17D79B0C3C1048056A234CE807 /* Web3+Infura.swift in Sources */, - 42348958030270653C6EF40C7E799593 /* Web3+Instance.swift in Sources */, - 717DFDFDF7ED1CBBA16DE5A030AEF2D1 /* Web3+JSONRPC.swift in Sources */, - 06F33AF16CE116A64D15BCBA16D7E7AB /* Web3+Methods.swift in Sources */, - D5D4A458619A6F516BE6C72F5F26DF24 /* Web3+Structures.swift in Sources */, - 1B69A1D5E50E7A3CB273AD799B605927 /* Web3+Utils.swift in Sources */, - C0409BF207EDC06D3FDF88EF8BAD2A4E /* Web3.swift in Sources */, - CDDF2379BA6ABE42FD8A77C49DFB8FD0 /* Web3Swift+AbstractSigner.swift in Sources */, - 0AD36DF95F4D2BFC17607D05438FA448 /* web3swift-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ @@ -3293,7 +3383,7 @@ /* Begin XCBuildConfiguration section */ 0D32F913CC46F768B1E96CB234B4D6C6 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 23DBCD101D149E4598A2CF48D816CF57 /* PromiseKit.xcconfig */; + baseConfigurationReference = E18B4ED50488EE51DFC6163C62BC9187 /* PromiseKit.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3325,7 +3415,7 @@ }; 0F3B9178746FE09BE12E575CB5D21D6A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3C1E6DA9B849B0764B5C14658A2FFAEB /* secp256k1_ios.xcconfig */; + baseConfigurationReference = 6AD37CB1727826E35D3268049124768D /* secp256k1_ios.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3356,7 +3446,7 @@ }; 1EC6E80B3F946C3B0B2629BBD4A56103 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D613873E0A19FDA2C7A1EA9864CC2F55 /* CryptoSwift.xcconfig */; + baseConfigurationReference = 71F8D9712CCF3C50FABA4EA1342C752F /* CryptoSwift.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3385,10 +3475,11 @@ }; name = Debug; }; - 34AAD49A66933A8C44FFF8FF0FD3E041 /* Release */ = { + 21C0C62C8687887B35AD52E8AB847628 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D613873E0A19FDA2C7A1EA9864CC2F55 /* CryptoSwift.xcconfig */; + baseConfigurationReference = EFFA32DED3269AF2CC55836D114DC7EE /* web3swift.xcconfig */; buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -3398,45 +3489,13 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/CryptoSwift/CryptoSwift-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/CryptoSwift/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/CryptoSwift/CryptoSwift.modulemap"; - PRODUCT_NAME = CryptoSwift; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 4.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 35A95E0564B5111A5F48CDDDD255B9FA /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 131E70277AF91A9ADD6ACE4903C79281 /* Alamofire-Synchronous.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/Alamofire-Synchronous/Alamofire-Synchronous-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Alamofire-Synchronous/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/web3swift/web3swift-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/web3swift/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.2; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Alamofire-Synchronous/Alamofire-Synchronous.modulemap"; - PRODUCT_NAME = Alamofire_Synchronous; + MODULEMAP_FILE = "Target Support Files/web3swift/web3swift.modulemap"; + PRODUCT_NAME = web3swift; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; @@ -3448,10 +3507,11 @@ }; name = Debug; }; - 36439D8C9A3E8F2FC4FB4CFCFBEA6AA6 /* Debug */ = { + 2B38F54E957952127A4CB858814CDD86 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 18FA5313A600FD90956CC0F6F278685F /* libsodium.xcconfig */; + baseConfigurationReference = B403F9AEE3BAC4FCE70097C6E0EB230A /* Pods-web3swiftExample.release.xcconfig */; buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -3461,24 +3521,28 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/libsodium/libsodium-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/libsodium/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-web3swiftExample/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.2; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/libsodium/libsodium.modulemap"; - PRODUCT_NAME = libsodium; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = Pods_web3swiftExample; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.0; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - 39C5BC78A31CDE101068C530CAC7FA0F /* Debug */ = { + 323A24856F1A4871A780301AF5C02A2A /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -3488,10 +3552,12 @@ CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; @@ -3499,6 +3565,7 @@ CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; @@ -3538,9 +3605,9 @@ }; name = Debug; }; - 517E5C6914179B0EF46E6F4EEB475718 /* Debug */ = { + 34AAD49A66933A8C44FFF8FF0FD3E041 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 23DBCD101D149E4598A2CF48D816CF57 /* PromiseKit.xcconfig */; + baseConfigurationReference = 71F8D9712CCF3C50FABA4EA1342C752F /* CryptoSwift.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3551,13 +3618,45 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/PromiseKit/PromiseKit-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/PromiseKit/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/CryptoSwift/CryptoSwift-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/CryptoSwift/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/PromiseKit/PromiseKit.modulemap"; - PRODUCT_NAME = PromiseKit; + MODULEMAP_FILE = "Target Support Files/CryptoSwift/CryptoSwift.modulemap"; + PRODUCT_NAME = CryptoSwift; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 35A95E0564B5111A5F48CDDDD255B9FA /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = D55E9FA5C7EC178124EB207A7E257A8F /* Alamofire-Synchronous.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/Alamofire-Synchronous/Alamofire-Synchronous-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Alamofire-Synchronous/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/Alamofire-Synchronous/Alamofire-Synchronous.modulemap"; + PRODUCT_NAME = Alamofire_Synchronous; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; @@ -3569,9 +3668,9 @@ }; name = Debug; }; - 5FA0B06742AE5D58157BE0AB65002C4E /* Release */ = { + 36439D8C9A3E8F2FC4FB4CFCFBEA6AA6 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = BB43FA47E238CE92F53329215F51E5B3 /* SipHash.xcconfig */; + baseConfigurationReference = 2E35A4ED0213D89F1FBF56CA8C7F9189 /* libsodium.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3582,29 +3681,28 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/SipHash/SipHash-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/SipHash/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/libsodium/libsodium-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/libsodium/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/SipHash/SipHash.modulemap"; - PRODUCT_NAME = SipHash; + MODULEMAP_FILE = "Target Support Files/libsodium/libsodium.modulemap"; + PRODUCT_NAME = libsodium; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - 6C2CBC1DC5052415D5F8222E4B995CBB /* Release */ = { + 4C2FB49FA7E41DC43C183E41612DD702 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3840AEA7DB8647349A4853556F0BFBCD /* Pods-web3swiftExample.release.xcconfig */; + baseConfigurationReference = DCD2CE2AD1529B9BE28E2229458388AD /* Pods-web3swiftExample.debug.xcconfig */; buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -3627,17 +3725,17 @@ PRODUCT_NAME = Pods_web3swiftExample; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - 84E81D76273C93E860400110880A52BC /* Release */ = { + 517E5C6914179B0EF46E6F4EEB475718 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = CCCF2B5A70A876CDCAD4C4102C998D27 /* BigInt.xcconfig */; + baseConfigurationReference = E18B4ED50488EE51DFC6163C62BC9187 /* PromiseKit.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3648,28 +3746,27 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/BigInt/BigInt-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/BigInt/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/PromiseKit/PromiseKit-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/PromiseKit/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/BigInt/BigInt.modulemap"; - PRODUCT_NAME = BigInt; + MODULEMAP_FILE = "Target Support Files/PromiseKit/PromiseKit.modulemap"; + PRODUCT_NAME = PromiseKit; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - 8651ED4F313C54DDA6FE21CD5B6CCDA1 /* Release */ = { + 5FA0B06742AE5D58157BE0AB65002C4E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 860710FEC75D881C4DA79921FEB71EA1 /* web3swift.xcconfig */; + baseConfigurationReference = A516823007F1A671A6FBB4A94A897349 /* SipHash.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3680,13 +3777,13 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/web3swift/web3swift-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/web3swift/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/SipHash/SipHash-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/SipHash/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/web3swift/web3swift.modulemap"; - PRODUCT_NAME = web3swift; + MODULEMAP_FILE = "Target Support Files/SipHash/SipHash.modulemap"; + PRODUCT_NAME = SipHash; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; @@ -3699,64 +3796,41 @@ }; name = Release; }; - 89C8BB24E37B25BAEEB8FBA01EE05DAF /* Release */ = { + 84E81D76273C93E860400110880A52BC /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 2A8020F5A52E685FC5A49297F5770615 /* BigInt.xcconfig */; buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGNING_REQUIRED = NO; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_RELEASE=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.2; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; - STRIP_INSTALLED_PRODUCT = NO; - SYMROOT = "${SRCROOT}/../build"; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/BigInt/BigInt-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/BigInt/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/BigInt/BigInt.modulemap"; + PRODUCT_NAME = BigInt; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; }; name = Release; }; 8C4860370BB0D2E849FB344FBAE2D07A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = BB43FA47E238CE92F53329215F51E5B3 /* SipHash.xcconfig */; + baseConfigurationReference = A516823007F1A671A6FBB4A94A897349 /* SipHash.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3787,7 +3861,7 @@ }; 8D4EEC5C1DBB4F12473DA661D9C38F4B /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3C1E6DA9B849B0764B5C14658A2FFAEB /* secp256k1_ios.xcconfig */; + baseConfigurationReference = 6AD37CB1727826E35D3268049124768D /* secp256k1_ios.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3817,7 +3891,7 @@ }; 92E264C51BE2037BD1174C6E6C775CB4 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 131E70277AF91A9ADD6ACE4903C79281 /* Alamofire-Synchronous.xcconfig */; + baseConfigurationReference = D55E9FA5C7EC178124EB207A7E257A8F /* Alamofire-Synchronous.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3849,7 +3923,7 @@ }; AC054FEE42E5037F64F000D08D8E0044 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = CCCF2B5A70A876CDCAD4C4102C998D27 /* BigInt.xcconfig */; + baseConfigurationReference = 2A8020F5A52E685FC5A49297F5770615 /* BigInt.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3880,7 +3954,7 @@ }; B0F5F1530D3F4E518BE2B1A52F98487A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E7EEBD24D4FE5D11B7293F5F2C428053 /* Alamofire.xcconfig */; + baseConfigurationReference = AC67EF5B20E9EE217F16AED183E1CDEC /* Alamofire.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3911,7 +3985,7 @@ }; B60B983C3E142AA1179E70330F235E7F /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 18FA5313A600FD90956CC0F6F278685F /* libsodium.xcconfig */; + baseConfigurationReference = 2E35A4ED0213D89F1FBF56CA8C7F9189 /* libsodium.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3942,7 +4016,7 @@ }; B8CA02655A4B738D82484691EE8CA58F /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E7EEBD24D4FE5D11B7293F5F2C428053 /* Alamofire.xcconfig */; + baseConfigurationReference = AC67EF5B20E9EE217F16AED183E1CDEC /* Alamofire.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3972,44 +4046,69 @@ }; name = Release; }; - BD835789B26C124708A95421F16F6F03 /* Debug */ = { + CA33F186435244FD0FD5B7325332656C /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 791DA52F8CD627F34E33674604EE858B /* Pods-web3swiftExample.debug.xcconfig */; buildSettings = { - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-web3swiftExample/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGNING_REQUIRED = NO; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + "POD_CONFIGURATION_RELEASE=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 11.2; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_web3swiftExample; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; + STRIP_INSTALLED_PRODUCT = NO; + SYMROOT = "${SRCROOT}/../build"; }; - name = Debug; + name = Release; }; - CC2C9E820BE5B1D94BA8BC2B960302F2 /* Debug */ = { + DB09087213228910883FA7BD03A649BF /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 860710FEC75D881C4DA79921FEB71EA1 /* web3swift.xcconfig */; + baseConfigurationReference = EFFA32DED3269AF2CC55836D114DC7EE /* web3swift.xcconfig */; buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4022,24 +4121,25 @@ GCC_PREFIX_HEADER = "Target Support Files/web3swift/web3swift-prefix.pch"; INFOPLIST_FILE = "Target Support Files/web3swift/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.2; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MODULEMAP_FILE = "Target Support Files/web3swift/web3swift.modulemap"; PRODUCT_NAME = web3swift; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; EF0C450329227DD96326962AA1DB6844 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FD584DA47385AABD62FAB6D7E5618BB7 /* AwaitKit.xcconfig */; + baseConfigurationReference = AFAF102DD507082EAFA7857A1FF4C60F /* AwaitKit.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -4070,7 +4170,7 @@ }; FBE0106AE4112ED6993B4EA067F211A0 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FD584DA47385AABD62FAB6D7E5618BB7 /* AwaitKit.xcconfig */; + baseConfigurationReference = AFAF102DD507082EAFA7857A1FF4C60F /* AwaitKit.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -4124,8 +4224,8 @@ 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( - 39C5BC78A31CDE101068C530CAC7FA0F /* Debug */, - 89C8BB24E37B25BAEEB8FBA01EE05DAF /* Release */, + 323A24856F1A4871A780301AF5C02A2A /* Debug */, + CA33F186435244FD0FD5B7325332656C /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -4151,8 +4251,8 @@ 552B779F96EB4DA1048DFAF8C2978162 /* Build configuration list for PBXNativeTarget "web3swift" */ = { isa = XCConfigurationList; buildConfigurations = ( - CC2C9E820BE5B1D94BA8BC2B960302F2 /* Debug */, - 8651ED4F313C54DDA6FE21CD5B6CCDA1 /* Release */, + 21C0C62C8687887B35AD52E8AB847628 /* Debug */, + DB09087213228910883FA7BD03A649BF /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -4205,8 +4305,8 @@ BEB0E7257A91860297B4989533C0EB5C /* Build configuration list for PBXNativeTarget "Pods-web3swiftExample" */ = { isa = XCConfigurationList; buildConfigurations = ( - BD835789B26C124708A95421F16F6F03 /* Debug */, - 6C2CBC1DC5052415D5F8222E4B995CBB /* Release */, + 4C2FB49FA7E41DC43C183E41612DD702 /* Debug */, + 2B38F54E957952127A4CB858814CDD86 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Example/web3swiftExample/Pods/Target Support Files/Alamofire-Synchronous/Alamofire-Synchronous.xcconfig b/Example/web3swiftExample/Pods/Target Support Files/Alamofire-Synchronous/Alamofire-Synchronous.xcconfig index 31354745..b15d3cf5 100644 --- a/Example/web3swiftExample/Pods/Target Support Files/Alamofire-Synchronous/Alamofire-Synchronous.xcconfig +++ b/Example/web3swiftExample/Pods/Target Support Files/Alamofire-Synchronous/Alamofire-Synchronous.xcconfig @@ -1,10 +1,10 @@ -CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/Alamofire-Synchronous -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/Alamofire" +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Alamofire-Synchronous +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/Alamofire-Synchronous PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} diff --git a/Example/web3swiftExample/Pods/Target Support Files/Alamofire/Alamofire.xcconfig b/Example/web3swiftExample/Pods/Target Support Files/Alamofire/Alamofire.xcconfig index 619e5f4a..881c8cad 100644 --- a/Example/web3swiftExample/Pods/Target Support Files/Alamofire/Alamofire.xcconfig +++ b/Example/web3swiftExample/Pods/Target Support Files/Alamofire/Alamofire.xcconfig @@ -1,9 +1,9 @@ -CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/Alamofire +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Alamofire GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/Alamofire PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} diff --git a/Example/web3swiftExample/Pods/Target Support Files/AwaitKit/AwaitKit.xcconfig b/Example/web3swiftExample/Pods/Target Support Files/AwaitKit/AwaitKit.xcconfig index cdb591f1..c906ad1c 100644 --- a/Example/web3swiftExample/Pods/Target Support Files/AwaitKit/AwaitKit.xcconfig +++ b/Example/web3swiftExample/Pods/Target Support Files/AwaitKit/AwaitKit.xcconfig @@ -1,11 +1,11 @@ -CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/AwaitKit -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/PromiseKit" +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/AwaitKit +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" OTHER_LDFLAGS = -framework "Foundation" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/AwaitKit PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} diff --git a/Example/web3swiftExample/Pods/Target Support Files/BigInt/BigInt.xcconfig b/Example/web3swiftExample/Pods/Target Support Files/BigInt/BigInt.xcconfig index 5617df85..b1103f1a 100644 --- a/Example/web3swiftExample/Pods/Target Support Files/BigInt/BigInt.xcconfig +++ b/Example/web3swiftExample/Pods/Target Support Files/BigInt/BigInt.xcconfig @@ -1,10 +1,10 @@ -CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/BigInt -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/SipHash" +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/BigInt +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/SipHash" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/BigInt PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} diff --git a/Example/web3swiftExample/Pods/Target Support Files/CryptoSwift/CryptoSwift.xcconfig b/Example/web3swiftExample/Pods/Target Support Files/CryptoSwift/CryptoSwift.xcconfig index 834a2829..1d56a730 100644 --- a/Example/web3swiftExample/Pods/Target Support Files/CryptoSwift/CryptoSwift.xcconfig +++ b/Example/web3swiftExample/Pods/Target Support Files/CryptoSwift/CryptoSwift.xcconfig @@ -1,10 +1,10 @@ -CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/CryptoSwift +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 GCC_UNROLL_LOOPS = YES HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/CryptoSwift PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} diff --git a/Example/web3swiftExample/Pods/Target Support Files/CryptoSwift/Info.plist b/Example/web3swiftExample/Pods/Target Support Files/CryptoSwift/Info.plist index 4d746af4..89a33ca7 100644 --- a/Example/web3swiftExample/Pods/Target Support Files/CryptoSwift/Info.plist +++ b/Example/web3swiftExample/Pods/Target Support Files/CryptoSwift/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 0.8.1 + 0.8.3 CFBundleSignature ???? CFBundleVersion diff --git a/Example/web3swiftExample/Pods/Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample-acknowledgements.markdown b/Example/web3swiftExample/Pods/Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample-acknowledgements.markdown index 51779a08..d640b499 100644 --- a/Example/web3swiftExample/Pods/Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample-acknowledgements.markdown +++ b/Example/web3swiftExample/Pods/Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample-acknowledgements.markdown @@ -110,7 +110,7 @@ Permission is granted to anyone to use this software for any purpose,including c - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. - This notice may not be removed or altered from any source or binary distribution. - +- Redistributions of any form whatsoever must retain the following acknowledgment: 'This product includes software developed by the "Marcin Krzyzanowski" (http://krzyzanowskim.com/).' ## PromiseKit diff --git a/Example/web3swiftExample/Pods/Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample-acknowledgements.plist b/Example/web3swiftExample/Pods/Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample-acknowledgements.plist index a0156570..0b5abc5f 100644 --- a/Example/web3swiftExample/Pods/Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample-acknowledgements.plist +++ b/Example/web3swiftExample/Pods/Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample-acknowledgements.plist @@ -145,7 +145,7 @@ Permission is granted to anyone to use this software for any purpose,including c - The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. - Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. - This notice may not be removed or altered from any source or binary distribution. - +- Redistributions of any form whatsoever must retain the following acknowledgment: 'This product includes software developed by the "Marcin Krzyzanowski" (http://krzyzanowskim.com/).' License Attribution License Title diff --git a/Example/web3swiftExample/Pods/Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample-frameworks.sh b/Example/web3swiftExample/Pods/Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample-frameworks.sh index f211d2dd..63ad6d31 100755 --- a/Example/web3swiftExample/Pods/Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample-frameworks.sh +++ b/Example/web3swiftExample/Pods/Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample-frameworks.sh @@ -6,10 +6,14 @@ mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" +# Used as a return value for each invocation of `strip_invalid_archs` function. +STRIP_BINARY_RETVAL=0 + # This protects against multiple targets copying the same framework dependency at the same time. The solution # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") +# Copies and strips a vendored framework install_framework() { if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then @@ -58,12 +62,31 @@ install_framework() fi } -# Copies the dSYM of a vendored framework +# Copies and strips a vendored dSYM install_dsym() { local source="$1" if [ -r "$source" ]; then - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DWARF_DSYM_FOLDER_PATH}\"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DWARF_DSYM_FOLDER_PATH}" + # Copy the dSYM into a the targets temp dir. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" + + local basename + basename="$(basename -s .framework.dSYM "$source")" + binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}" + + # Strip invalid architectures so "fat" simulator / device frameworks work on device + if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then + strip_invalid_archs "$binary" + fi + + if [[ $STRIP_BINARY_RETVAL == 1 ]]; then + # Move the stripped file into its final destination. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}" + else + # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. + touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM" + fi fi } @@ -85,10 +108,18 @@ code_sign_if_enabled() { # Strip invalid architectures strip_invalid_archs() { binary="$1" - # Get architectures for current file - archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)" + # Get architectures for current target binary + binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" + # Intersect them with the architectures we are building for + intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" + # If there are no archs supported by this binary then warn the user + if [[ -z "$intersected_archs" ]]; then + echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." + STRIP_BINARY_RETVAL=0 + return + fi stripped="" - for arch in $archs; do + for arch in $binary_archs; do if ! [[ "${ARCHS}" == *"$arch"* ]]; then # Strip non-valid architectures in-place lipo -remove "$arch" -output "$binary" "$binary" || exit 1 @@ -98,6 +129,7 @@ strip_invalid_archs() { if [[ "$stripped" ]]; then echo "Stripped $binary of architectures:$stripped" fi + STRIP_BINARY_RETVAL=1 } diff --git a/Example/web3swiftExample/Pods/Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample.debug.xcconfig b/Example/web3swiftExample/Pods/Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample.debug.xcconfig index 9714886e..5aeec72c 100644 --- a/Example/web3swiftExample/Pods/Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample.debug.xcconfig +++ b/Example/web3swiftExample/Pods/Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample.debug.xcconfig @@ -1,12 +1,12 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/Alamofire" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-Synchronous" "$PODS_CONFIGURATION_BUILD_DIR/AwaitKit" "$PODS_CONFIGURATION_BUILD_DIR/BigInt" "$PODS_CONFIGURATION_BUILD_DIR/CryptoSwift" "$PODS_CONFIGURATION_BUILD_DIR/PromiseKit" "$PODS_CONFIGURATION_BUILD_DIR/SipHash" "$PODS_CONFIGURATION_BUILD_DIR/libsodium" "$PODS_CONFIGURATION_BUILD_DIR/secp256k1_ios" "$PODS_CONFIGURATION_BUILD_DIR/web3swift" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire-Synchronous" "${PODS_CONFIGURATION_BUILD_DIR}/AwaitKit" "${PODS_CONFIGURATION_BUILD_DIR}/BigInt" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash" "${PODS_CONFIGURATION_BUILD_DIR}/libsodium" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_ios" "${PODS_CONFIGURATION_BUILD_DIR}/web3swift" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = "$(PODS_ROOT)/libsodium/src/libsodium/include/sodium" "$(PODS_ROOT)/libsodium/src/libsodium/include" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = -DNATIVE_LITTLE_ENDIAN=1 -DHAVE_MADVISE -DHAVE_MMAP -DHAVE_MPROTECT -DHAVE_POSIX_MEMALIGN -DHAVE_WEAK_SYMBOLS $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-Synchronous/Alamofire_Synchronous.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Alamofire/Alamofire.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/AwaitKit/AwaitKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/BigInt/BigInt.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/CryptoSwift/CryptoSwift.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/PromiseKit/PromiseKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SipHash/SipHash.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/libsodium/libsodium.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/secp256k1_ios/secp256k1_ios.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/web3swift/web3swift.framework/Headers" +OTHER_CFLAGS = -DNATIVE_LITTLE_ENDIAN=1 -DHAVE_MADVISE -DHAVE_MMAP -DHAVE_MPROTECT -DHAVE_POSIX_MEMALIGN -DHAVE_WEAK_SYMBOLS $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire-Synchronous/Alamofire_Synchronous.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/AwaitKit/AwaitKit.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/BigInt/BigInt.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift/CryptoSwift.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SipHash/SipHash.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/libsodium/libsodium.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_ios/secp256k1_ios.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/web3swift/web3swift.framework/Headers" OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "Alamofire_Synchronous" -framework "AwaitKit" -framework "BigInt" -framework "CryptoSwift" -framework "PromiseKit" -framework "SipHash" -framework "libsodium" -framework "secp256k1_ios" -framework "web3swift" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods diff --git a/Example/web3swiftExample/Pods/Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample.release.xcconfig b/Example/web3swiftExample/Pods/Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample.release.xcconfig index 9714886e..5aeec72c 100644 --- a/Example/web3swiftExample/Pods/Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample.release.xcconfig +++ b/Example/web3swiftExample/Pods/Target Support Files/Pods-web3swiftExample/Pods-web3swiftExample.release.xcconfig @@ -1,12 +1,12 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/Alamofire" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-Synchronous" "$PODS_CONFIGURATION_BUILD_DIR/AwaitKit" "$PODS_CONFIGURATION_BUILD_DIR/BigInt" "$PODS_CONFIGURATION_BUILD_DIR/CryptoSwift" "$PODS_CONFIGURATION_BUILD_DIR/PromiseKit" "$PODS_CONFIGURATION_BUILD_DIR/SipHash" "$PODS_CONFIGURATION_BUILD_DIR/libsodium" "$PODS_CONFIGURATION_BUILD_DIR/secp256k1_ios" "$PODS_CONFIGURATION_BUILD_DIR/web3swift" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire-Synchronous" "${PODS_CONFIGURATION_BUILD_DIR}/AwaitKit" "${PODS_CONFIGURATION_BUILD_DIR}/BigInt" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash" "${PODS_CONFIGURATION_BUILD_DIR}/libsodium" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_ios" "${PODS_CONFIGURATION_BUILD_DIR}/web3swift" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = "$(PODS_ROOT)/libsodium/src/libsodium/include/sodium" "$(PODS_ROOT)/libsodium/src/libsodium/include" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = -DNATIVE_LITTLE_ENDIAN=1 -DHAVE_MADVISE -DHAVE_MMAP -DHAVE_MPROTECT -DHAVE_POSIX_MEMALIGN -DHAVE_WEAK_SYMBOLS $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-Synchronous/Alamofire_Synchronous.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Alamofire/Alamofire.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/AwaitKit/AwaitKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/BigInt/BigInt.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/CryptoSwift/CryptoSwift.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/PromiseKit/PromiseKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SipHash/SipHash.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/libsodium/libsodium.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/secp256k1_ios/secp256k1_ios.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/web3swift/web3swift.framework/Headers" +OTHER_CFLAGS = -DNATIVE_LITTLE_ENDIAN=1 -DHAVE_MADVISE -DHAVE_MMAP -DHAVE_MPROTECT -DHAVE_POSIX_MEMALIGN -DHAVE_WEAK_SYMBOLS $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire-Synchronous/Alamofire_Synchronous.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/AwaitKit/AwaitKit.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/BigInt/BigInt.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift/CryptoSwift.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SipHash/SipHash.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/libsodium/libsodium.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_ios/secp256k1_ios.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/web3swift/web3swift.framework/Headers" OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "Alamofire_Synchronous" -framework "AwaitKit" -framework "BigInt" -framework "CryptoSwift" -framework "PromiseKit" -framework "SipHash" -framework "libsodium" -framework "secp256k1_ios" -framework "web3swift" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods diff --git a/Example/web3swiftExample/Pods/Target Support Files/PromiseKit/Info.plist b/Example/web3swiftExample/Pods/Target Support Files/PromiseKit/Info.plist index eaa7c2e9..8801b3a5 100644 --- a/Example/web3swiftExample/Pods/Target Support Files/PromiseKit/Info.plist +++ b/Example/web3swiftExample/Pods/Target Support Files/PromiseKit/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 4.5.1 + 4.5.2 CFBundleSignature ???? CFBundleVersion diff --git a/Example/web3swiftExample/Pods/Target Support Files/PromiseKit/PromiseKit.xcconfig b/Example/web3swiftExample/Pods/Target Support Files/PromiseKit/PromiseKit.xcconfig index 59e29c7e..ff52463e 100644 --- a/Example/web3swiftExample/Pods/Target Support Files/PromiseKit/PromiseKit.xcconfig +++ b/Example/web3swiftExample/Pods/Target Support Files/PromiseKit/PromiseKit.xcconfig @@ -1,10 +1,10 @@ -CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/PromiseKit +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" OTHER_LDFLAGS = -framework "Foundation" -framework "QuartzCore" -framework "UIKit" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/PromiseKit PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} diff --git a/Example/web3swiftExample/Pods/Target Support Files/SipHash/SipHash.xcconfig b/Example/web3swiftExample/Pods/Target Support Files/SipHash/SipHash.xcconfig index ccd8d001..59b48dff 100644 --- a/Example/web3swiftExample/Pods/Target Support Files/SipHash/SipHash.xcconfig +++ b/Example/web3swiftExample/Pods/Target Support Files/SipHash/SipHash.xcconfig @@ -1,9 +1,9 @@ -CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/SipHash +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SipHash GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/SipHash PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} diff --git a/Example/web3swiftExample/Pods/Target Support Files/libsodium/libsodium.xcconfig b/Example/web3swiftExample/Pods/Target Support Files/libsodium/libsodium.xcconfig index 5edee1a1..cf05e71b 100644 --- a/Example/web3swiftExample/Pods/Target Support Files/libsodium/libsodium.xcconfig +++ b/Example/web3swiftExample/Pods/Target Support Files/libsodium/libsodium.xcconfig @@ -1,9 +1,9 @@ -CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/libsodium +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/libsodium GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" "$(PODS_ROOT)/libsodium/src/libsodium/include/sodium" "$(PODS_ROOT)/libsodium/src/libsodium/include" OTHER_CFLAGS = -DNATIVE_LITTLE_ENDIAN=1 -DHAVE_MADVISE -DHAVE_MMAP -DHAVE_MPROTECT -DHAVE_POSIX_MEMALIGN -DHAVE_WEAK_SYMBOLS -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/libsodium PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} diff --git a/Example/web3swiftExample/Pods/Target Support Files/secp256k1_ios/secp256k1_ios.xcconfig b/Example/web3swiftExample/Pods/Target Support Files/secp256k1_ios/secp256k1_ios.xcconfig index 1f44e29d..2ff236d5 100644 --- a/Example/web3swiftExample/Pods/Target Support Files/secp256k1_ios/secp256k1_ios.xcconfig +++ b/Example/web3swiftExample/Pods/Target Support Files/secp256k1_ios/secp256k1_ios.xcconfig @@ -1,9 +1,9 @@ -CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/secp256k1_ios +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_ios GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/secp256k1_ios/secp256k1_ios" OTHER_CFLAGS = -DHAVE_CONFIG_H=1 -pedantic -Wall -Wextra -Wcast-align -Wnested-externs -Wshadow -Wstrict-prototypes -Wno-shorten-64-to-32 -Wno-conditional-uninitialized -Wno-unused-function -Wno-long-long -Wno-overlength-strings -O3 -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/secp256k1_ios PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} diff --git a/Example/web3swiftExample/Pods/Target Support Files/web3swift/Info.plist b/Example/web3swiftExample/Pods/Target Support Files/web3swift/Info.plist index 4b635bfd..2a25f963 100644 --- a/Example/web3swiftExample/Pods/Target Support Files/web3swift/Info.plist +++ b/Example/web3swiftExample/Pods/Target Support Files/web3swift/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 0.2.7 + 0.2.14 CFBundleSignature ???? CFBundleVersion diff --git a/Example/web3swiftExample/Pods/Target Support Files/web3swift/web3swift.xcconfig b/Example/web3swiftExample/Pods/Target Support Files/web3swift/web3swift.xcconfig index c2d58b4a..1f50c040 100644 --- a/Example/web3swiftExample/Pods/Target Support Files/web3swift/web3swift.xcconfig +++ b/Example/web3swiftExample/Pods/Target Support Files/web3swift/web3swift.xcconfig @@ -1,11 +1,11 @@ ARCHS = ${ARCHS_STANDARD_64_BIT} -CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/web3swift -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/Alamofire" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-Synchronous" "$PODS_CONFIGURATION_BUILD_DIR/BigInt" "$PODS_CONFIGURATION_BUILD_DIR/CryptoSwift" "$PODS_CONFIGURATION_BUILD_DIR/SipHash" "$PODS_CONFIGURATION_BUILD_DIR/libsodium" "$PODS_CONFIGURATION_BUILD_DIR/secp256k1_ios" +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/web3swift +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire-Synchronous" "${PODS_CONFIGURATION_BUILD_DIR}/BigInt" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash" "${PODS_CONFIGURATION_BUILD_DIR}/libsodium" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_ios" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../.. PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} diff --git a/Podfile b/Podfile index 5b2ff59c..306547c8 100644 --- a/Podfile +++ b/Podfile @@ -3,6 +3,7 @@ def import_pods pod 'Alamofire-Synchronous', '~> 4.0' pod 'BigInt', '~> 3.0.1' pod 'CryptoSwift' + pod 'Result', '~> 3.0.0' pod 'libsodium' pod 'secp256k1_ios', :git => 'https://github.com/shamatar/secp256k1_ios.git' end diff --git a/Podfile.lock b/Podfile.lock index 6c11859f..b8baca1a 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -4,9 +4,10 @@ PODS: - Alamofire (~> 4.0) - BigInt (3.0.1): - SipHash (~> 1.2) - - CryptoSwift (0.8.0) + - CryptoSwift (0.8.3) - libsodium (1.0.12) - - secp256k1_ios (0.0.7) + - Result (3.0.0) + - secp256k1_ios (0.1.2) - SipHash (1.2.0) DEPENDENCIES: @@ -15,6 +16,7 @@ DEPENDENCIES: - BigInt (~> 3.0.1) - CryptoSwift - libsodium + - Result (~> 3.0.0) - secp256k1_ios (from `https://github.com/shamatar/secp256k1_ios.git`) EXTERNAL SOURCES: @@ -23,18 +25,19 @@ EXTERNAL SOURCES: CHECKOUT OPTIONS: secp256k1_ios: - :commit: 89dc5196dd520c8682bb1d2a125588d531c96da2 + :commit: 506e3ca08780e3757ff07c5dfa65ea3cc3faae4b :git: https://github.com/shamatar/secp256k1_ios.git SPEC CHECKSUMS: Alamofire: f41a599bd63041760b26d393ec1069d9d7b917f4 Alamofire-Synchronous: eedf1e6e961c3795a63c74990b3f7d9fbfac7e50 BigInt: 8e8a52161c745cd3ab78e3dc346a9fbee51e6cf6 - CryptoSwift: f81907430ebbe38b8404b4f6fb40f3c576a8755f + CryptoSwift: 033efc3523865d19cc6ab6612fa17a62613b5dfa libsodium: 9a8faa5ef2fa0d2d57bd7f7d79bf8fb7c1a9f0ea - secp256k1_ios: 12a9bddc3d7aa723efbb32b42413f041b11a7765 + Result: 1b3e431f37cbcd3ad89c6aa9ab0ae55515fae3b6 + secp256k1_ios: 168c6c49ed9771db51875f5255c8f9847e4cf554 SipHash: c6e9e43e9c531b5bc6602545130c26194a6d31ce -PODFILE CHECKSUM: 405af68f2cbe5d791fb0b8ec5385aa5ab36e0fda +PODFILE CHECKSUM: 509aaee40d3963cdd02f4489f089ccd915d5799b COCOAPODS: 1.4.0 diff --git a/web3swift-macOS_Tests/Info.plist b/web3swift-macOS_Tests/Info.plist new file mode 100644 index 00000000..6c40a6cd --- /dev/null +++ b/web3swift-macOS_Tests/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/web3swift-macOS_Tests/web3swift_macOS_Tests.swift b/web3swift-macOS_Tests/web3swift_macOS_Tests.swift new file mode 100644 index 00000000..b8607092 --- /dev/null +++ b/web3swift-macOS_Tests/web3swift_macOS_Tests.swift @@ -0,0 +1,35 @@ +// +// web3swift_macOS_Tests.swift +// web3swift-macOS_Tests +// +// Created by Alexander Vlasov on 26.02.2018. +// Copyright © 2018 Bankex Foundation. All rights reserved. +// + +import XCTest + +class web3swift_macOS_Tests: XCTestCase { + + override func setUp() { + super.setUp() + // Put setup code here. This method is called before the invocation of each test method in the class. + } + + override func tearDown() { + // Put teardown code here. This method is called after the invocation of each test method in the class. + super.tearDown() + } + + func testExample() { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + + func testPerformanceExample() { + // This is an example of a performance test case. + self.measure { + // Put the code you want to measure the time of here. + } + } + +} diff --git a/web3swift.podspec b/web3swift.podspec index efff9412..6238d94d 100644 --- a/web3swift.podspec +++ b/web3swift.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = "web3swift" -s.version = "0.2.14" +s.version = "0.3.0" s.summary = "Web3 implementation in vanilla Swift for iOS ans macOS" s.description = <<-DESC @@ -20,17 +20,18 @@ s.pod_target_xcconfig = { } s.module_name = 'web3swift' -s.ios.deployment_target = "11.2" +s.ios.deployment_target = "9.0" s.osx.deployment_target = "10.13" s.source_files = "web3swift/**/*.{h,swift}", s.public_header_files = "web3swift/**/*.{h}" -s.dependency 'Alamofire', '~> 4.5' +s.dependency 'Alamofire', '~> 4.6' s.dependency 'Alamofire-Synchronous', '~> 4.0' s.dependency 'BigInt', '~> 3.0.1' -s.dependency 'CryptoSwift' -s.dependency 'libsodium' -s.dependency 'secp256k1_ios', '~> 0.1.1' +s.dependency 'Result', '~> 3.0.0' +s.dependency 'CryptoSwift', '~> 0.8.3' +s.dependency 'libsodium', '~> 1.0.12' +s.dependency 'secp256k1_ios', '~> 0.1.2' end diff --git a/web3swift.xcodeproj/project.pbxproj b/web3swift.xcodeproj/project.pbxproj index 65cd17a6..288d6685 100644 --- a/web3swift.xcodeproj/project.pbxproj +++ b/web3swift.xcodeproj/project.pbxproj @@ -10,7 +10,6 @@ 1CD91B321FD769A6007BFB45 /* web3swiftTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CD91B311FD769A6007BFB45 /* web3swiftTests.swift */; }; 1CD91B341FD769A6007BFB45 /* web3swift_iOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1CD91AFC1FD76910007BFB45 /* web3swift_iOS.framework */; }; 1CDA65CA1FDE0D3F0025DE71 /* ABIManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CDA65C91FDE0D3F0025DE71 /* ABIManager.swift */; }; - 1CF482A005E87F8B41423FA0 /* Pods_web3swift_iOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 62152503789B635C0B08D841 /* Pods_web3swift_iOS.framework */; }; 4194811B203630530065A83B /* Web3+HttpProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 817EBB142004FE4200E02EAA /* Web3+HttpProvider.swift */; }; 4194811C203630530065A83B /* ABIManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CDA65C91FDE0D3F0025DE71 /* ABIManager.swift */; }; 4194811D203630530065A83B /* Contract.swift in Sources */ = {isa = PBXBuildFile; fileRef = 818EABD91FDC9A5C00E013FC /* Contract.swift */; }; @@ -31,7 +30,7 @@ 4194812C203630530065A83B /* KeystoreManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8113D2B81FD7E1590074282C /* KeystoreManager.swift */; }; 4194812D203630530065A83B /* EthereumAddress.swift in Sources */ = {isa = PBXBuildFile; fileRef = 817EBB0F2004FE2800E02EAA /* EthereumAddress.swift */; }; 4194812E203630530065A83B /* AbstractKeystore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 817EBB2420066E2B00E02EAA /* AbstractKeystore.swift */; }; - 4194812F203630530065A83B /* Web3Swift+AbstractSigner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8123E1C2200CA0AE00B6D3AB /* Web3Swift+AbstractSigner.swift */; }; + 4194812F203630530065A83B /* Web3+AbstractSigner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8123E1C2200CA0AE00B6D3AB /* Web3+AbstractSigner.swift */; }; 41948130203630530065A83B /* BIP32Keystore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 815630012007B53C00A0EC2F /* BIP32Keystore.swift */; }; 41948131203630530065A83B /* BIP32KeystoreJSONStructure.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81562FFF2007B48800A0EC2F /* BIP32KeystoreJSONStructure.swift */; }; 41948132203630530065A83B /* BIP32HDNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 817EBB112004FE2F00E02EAA /* BIP32HDNode.swift */; }; @@ -50,6 +49,7 @@ 4194813F203630530065A83B /* Dictionary+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8123E1C6200CBAC200B6D3AB /* Dictionary+Extension.swift */; }; 41948140203630530065A83B /* Array+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8123E1CA200CBB2200B6D3AB /* Array+Extension.swift */; }; 41948141203630530065A83B /* String+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8113D2FF1FD7F30F0074282C /* String+Extension.swift */; }; + 472BBA099A26DFD47F33C2E0 /* Pods_web3swift_macOS_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 010A8466DD6C993827C11A71 /* Pods_web3swift_macOS_Tests.framework */; }; 8104E2281FE82BDC00F952CB /* Web3+Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8104E2271FE82BDC00F952CB /* Web3+Utils.swift */; }; 810B0F9A1FEC446B00CF0DA2 /* Web3+JSONRPC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 810B0F991FEC446B00CF0DA2 /* Web3+JSONRPC.swift */; }; 810B0F9C1FEC520500CF0DA2 /* Web3+Methods.swift in Sources */ = {isa = PBXBuildFile; fileRef = 810B0F9B1FEC520500CF0DA2 /* Web3+Methods.swift */; }; @@ -64,7 +64,7 @@ 8113D31A1FD7F4C80074282C /* ABITypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8113D3191FD7F4C80074282C /* ABITypes.swift */; }; 8113D31C1FD7F8980074282C /* ABIRecordParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8113D31B1FD7F8980074282C /* ABIRecordParser.swift */; }; 8113DE7C1FD8514400CD8DF1 /* NSRegularExpressionExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8113DE7B1FD8514400CD8DF1 /* NSRegularExpressionExtension.swift */; }; - 8123E1C3200CA0AE00B6D3AB /* Web3Swift+AbstractSigner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8123E1C2200CA0AE00B6D3AB /* Web3Swift+AbstractSigner.swift */; }; + 8123E1C3200CA0AE00B6D3AB /* Web3+AbstractSigner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8123E1C2200CA0AE00B6D3AB /* Web3+AbstractSigner.swift */; }; 8123E1C7200CBAC200B6D3AB /* Dictionary+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8123E1C6200CBAC200B6D3AB /* Dictionary+Extension.swift */; }; 8123E1C9200CBAF800B6D3AB /* Data+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8123E1C8200CBAF800B6D3AB /* Data+Extension.swift */; }; 8123E1CB200CBB2200B6D3AB /* Array+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8123E1CA200CBB2200B6D3AB /* Array+Extension.swift */; }; @@ -75,7 +75,6 @@ 815630002007B48800A0EC2F /* BIP32KeystoreJSONStructure.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81562FFF2007B48800A0EC2F /* BIP32KeystoreJSONStructure.swift */; }; 815630022007B53C00A0EC2F /* BIP32Keystore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 815630012007B53C00A0EC2F /* BIP32Keystore.swift */; }; 815630042007BC8F00A0EC2F /* BIP39+WordLists.swift in Sources */ = {isa = PBXBuildFile; fileRef = 815630032007BC8F00A0EC2F /* BIP39+WordLists.swift */; }; - 815630062008A64C00A0EC2F /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 815630052008A64C00A0EC2F /* Security.framework */; }; 817EBB102004FE2800E02EAA /* EthereumAddress.swift in Sources */ = {isa = PBXBuildFile; fileRef = 817EBB0F2004FE2800E02EAA /* EthereumAddress.swift */; }; 817EBB122004FE2F00E02EAA /* BIP32HDNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 817EBB112004FE2F00E02EAA /* BIP32HDNode.swift */; }; 817EBB162004FE4200E02EAA /* Web3+HttpProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 817EBB142004FE4200E02EAA /* Web3+HttpProvider.swift */; }; @@ -89,13 +88,21 @@ 818ABD5D1FE95FC9002657BB /* Web3+Contract.swift in Sources */ = {isa = PBXBuildFile; fileRef = 818ABD5C1FE95FC9002657BB /* Web3+Contract.swift */; }; 818D810E1FDC1A2000663CE3 /* RLP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 818D810D1FDC1A2000663CE3 /* RLP.swift */; }; 818EABDA1FDC9A5C00E013FC /* Contract.swift in Sources */ = {isa = PBXBuildFile; fileRef = 818EABD91FDC9A5C00E013FC /* Contract.swift */; }; + 81C0FCF220440EB500D82FAF /* Web3+Protocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C0FCF120440EB500D82FAF /* Web3+Protocols.swift */; }; + 81C0FCF420440F0900D82FAF /* Web3+Options.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C0FCF320440F0900D82FAF /* Web3+Options.swift */; }; + 81C0FCF720441A1D00D82FAF /* TransactionSigner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C0FCF520440F9900D82FAF /* TransactionSigner.swift */; }; + 81C0FD012044A89300D82FAF /* Web3+TransactionIntermediate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C0FCFC20449D1400D82FAF /* Web3+TransactionIntermediate.swift */; }; + 81C0FD032044A89400D82FAF /* Web3+TransactionIntermediate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C0FCFC20449D1400D82FAF /* Web3+TransactionIntermediate.swift */; }; + 81C0FD042044A8A700D82FAF /* Web3+Options.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C0FCF320440F0900D82FAF /* Web3+Options.swift */; }; + 81C0FD052044A8AE00D82FAF /* Web3+Protocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C0FCF120440EB500D82FAF /* Web3+Protocols.swift */; }; + 81C0FD062044A8D100D82FAF /* TransactionSigner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C0FCF520440F9900D82FAF /* TransactionSigner.swift */; }; + 81C0FD082044AB2400D82FAF /* Pods_web3swift_iOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 81C0FD092044AB2400D82FAF /* Pods_web3swift_iOS.framework */; }; + 81C0FD0A2044AB4600D82FAF /* Pods_web3swift_iOS_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 81C0FD0B2044AB4600D82FAF /* Pods_web3swift_iOS_Tests.framework */; }; 81C146F71FF274B200AA943E /* Web3+Structures.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C146F61FF274B200AA943E /* Web3+Structures.swift */; }; 81DDECCF1FDF004E0063684A /* Web3.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81DDECCE1FDF004E0063684A /* Web3.swift */; }; + 81FA43F62044097100EE14D5 /* web3swift_macOS_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81FA43F52044097100EE14D5 /* web3swift_macOS_Tests.swift */; }; + 81FA43F82044097100EE14D5 /* web3swift_macOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 417715D420362916005C3E16 /* web3swift_macOS.framework */; }; A4733E6E22E6216A90CCEA33 /* Pods_web3swift_macOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC4A49B538D672F4DA112A11 /* Pods_web3swift_macOS.framework */; }; - BD94F2A0BE80CC1005DD8CD1 /* Pods_web3swift_ios_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0F133EC83594B17BA8C71784 /* Pods_web3swift_ios_Tests.framework */; }; - D4B29698B084B81A20BDD51F /* Pods_web3swift_iOS_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 613A9CE29320FF136EC8903D /* Pods_web3swift_iOS_Tests.framework */; }; - E82DD6EACF6933D0D3978EA0 /* Pods_web3swiftTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B5AFAFC5440E52BE57C7BA13 /* Pods_web3swiftTests.framework */; }; - EE6E59FC45D4B4EA279ADA27 /* Pods_Web3Swift_ios_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 68360683136B1FE2C57D65D9 /* Pods_Web3Swift_ios_Tests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -106,11 +113,17 @@ remoteGlobalIDString = 1CD91AFB1FD76910007BFB45; remoteInfo = web3swift; }; + 81FA43F92044097100EE14D5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1CD91AF31FD76910007BFB45 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 417715D320362916005C3E16; + remoteInfo = "web3swift-macOS"; + }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ 010A8466DD6C993827C11A71 /* Pods_web3swift_macOS_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_web3swift_macOS_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 046CD76126C610E5634756CB /* Pods-web3swift_ios_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swift_ios_Tests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-web3swift_ios_Tests/Pods-web3swift_ios_Tests.debug.xcconfig"; sourceTree = ""; }; 08BD06D432296DA533D07D20 /* Pods_Web3Swift_ios.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Web3Swift_ios.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 0F133EC83594B17BA8C71784 /* Pods_web3swift_ios_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_web3swift_ios_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 10C02100CDF7C2D5C79A52B9 /* Pods_web3Swift_Demo.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_web3Swift_Demo.framework; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -118,26 +131,18 @@ 1CD91AFC1FD76910007BFB45 /* web3swift_iOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = web3swift_iOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 1CD91AFF1FD76910007BFB45 /* web3swift.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = web3swift.h; sourceTree = ""; }; 1CD91B001FD76910007BFB45 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 1CD91B2F1FD769A6007BFB45 /* web3swift_Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = web3swift_Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 1CD91B2F1FD769A6007BFB45 /* web3swift-iOS_Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "web3swift-iOS_Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 1CD91B311FD769A6007BFB45 /* web3swiftTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = web3swiftTests.swift; sourceTree = ""; }; 1CD91B331FD769A6007BFB45 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 1CDA65C91FDE0D3F0025DE71 /* ABIManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ABIManager.swift; sourceTree = ""; }; 1E62EF5F091ED9F7B80CA8EE /* Pods-web3swift-macOS_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swift-macOS_Tests.release.xcconfig"; path = "Pods/Target Support Files/Pods-web3swift-macOS_Tests/Pods-web3swift-macOS_Tests.release.xcconfig"; sourceTree = ""; }; - 1FE9B8894E3D16872E6AF206 /* Pods-Web3Swift_osx.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Web3Swift_osx.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Web3Swift_osx/Pods-Web3Swift_osx.debug.xcconfig"; sourceTree = ""; }; 2B8FEFF3962166E1BEADC886 /* Pods_web3swift_ios.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_web3swift_ios.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 315D907D757EBC8EB6E70C13 /* Pods-Web3Swift_ios.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Web3Swift_ios.release.xcconfig"; path = "Pods/Target Support Files/Pods-Web3Swift_ios/Pods-Web3Swift_ios.release.xcconfig"; sourceTree = ""; }; 342700493511FEB189700D13 /* Pods-web3swift-iOS_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swift-iOS_Tests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-web3swift-iOS_Tests/Pods-web3swift-iOS_Tests.debug.xcconfig"; sourceTree = ""; }; 391A0D2EF42488E5C8AB2F71 /* Pods_web3swift_osx_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_web3swift_osx_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 3D07F714D1FF1408DBC01EBB /* Pods-web3swift.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swift.release.xcconfig"; path = "Pods/Target Support Files/Pods-web3swift/Pods-web3swift.release.xcconfig"; sourceTree = ""; }; 417715D420362916005C3E16 /* web3swift_macOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = web3swift_macOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 417715F720362956005C3E16 /* Web3Swift_macTests copy-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Web3Swift_macTests copy-Info.plist"; path = "/Users/DS/Projects/vaultie/web3swift/Web3Swift_macTests copy-Info.plist"; sourceTree = ""; }; 419481432036338A0065A83B /* Pods_web3swift_osx.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Pods_web3swift_osx.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 45EF5FB62CEF5D014C559D8E /* Pods-web3Swift-Demo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3Swift-Demo.release.xcconfig"; path = "Pods/Target Support Files/Pods-web3Swift-Demo/Pods-web3Swift-Demo.release.xcconfig"; sourceTree = ""; }; - 47FBE23A4D6EF29D0439EF09 /* Pods-web3swift_osx_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swift_osx_Tests.release.xcconfig"; path = "Pods/Target Support Files/Pods-web3swift_osx_Tests/Pods-web3swift_osx_Tests.release.xcconfig"; sourceTree = ""; }; - 58BADB6EBA140A4DAD53D2CA /* Pods-web3swift_ios.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swift_ios.release.xcconfig"; path = "Pods/Target Support Files/Pods-web3swift_ios/Pods-web3swift_ios.release.xcconfig"; sourceTree = ""; }; 5A31D55232599E417B6F862E /* Pods-web3swift-iOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swift-iOS.debug.xcconfig"; path = "Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS.debug.xcconfig"; sourceTree = ""; }; 5B83FA95B72D7DA53870479B /* Pods-web3swift-macOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swift-macOS.release.xcconfig"; path = "Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS.release.xcconfig"; sourceTree = ""; }; - 5EF0EBFF98DF0E56B960D7FF /* Pods-web3Swift-Demo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3Swift-Demo.debug.xcconfig"; path = "Pods/Target Support Files/Pods-web3Swift-Demo/Pods-web3Swift-Demo.debug.xcconfig"; sourceTree = ""; }; 613A9CE29320FF136EC8903D /* Pods_web3swift_iOS_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_web3swift_iOS_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 62152503789B635C0B08D841 /* Pods_web3swift_iOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_web3swift_iOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 68360683136B1FE2C57D65D9 /* Pods_Web3Swift_ios_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Web3Swift_ios_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -157,7 +162,7 @@ 8113D3191FD7F4C80074282C /* ABITypes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ABITypes.swift; sourceTree = ""; }; 8113D31B1FD7F8980074282C /* ABIRecordParser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ABIRecordParser.swift; sourceTree = ""; }; 8113DE7B1FD8514400CD8DF1 /* NSRegularExpressionExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NSRegularExpressionExtension.swift; sourceTree = ""; }; - 8123E1C2200CA0AE00B6D3AB /* Web3Swift+AbstractSigner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Web3Swift+AbstractSigner.swift"; sourceTree = ""; }; + 8123E1C2200CA0AE00B6D3AB /* Web3+AbstractSigner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Web3+AbstractSigner.swift"; sourceTree = ""; }; 8123E1C6200CBAC200B6D3AB /* Dictionary+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Dictionary+Extension.swift"; sourceTree = ""; }; 8123E1C8200CBAF800B6D3AB /* Data+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Data+Extension.swift"; sourceTree = ""; }; 8123E1CA200CBB2200B6D3AB /* Array+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Array+Extension.swift"; sourceTree = ""; }; @@ -181,27 +186,25 @@ 818ABD5C1FE95FC9002657BB /* Web3+Contract.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Web3+Contract.swift"; sourceTree = ""; }; 818D810D1FDC1A2000663CE3 /* RLP.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RLP.swift; sourceTree = ""; }; 818EABD91FDC9A5C00E013FC /* Contract.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Contract.swift; sourceTree = ""; }; + 81C0FCEF20440C3600D82FAF /* Web3+Wallet.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Web3+Wallet.swift"; sourceTree = ""; }; + 81C0FCF120440EB500D82FAF /* Web3+Protocols.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Web3+Protocols.swift"; sourceTree = ""; }; + 81C0FCF320440F0900D82FAF /* Web3+Options.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Web3+Options.swift"; sourceTree = ""; }; + 81C0FCF520440F9900D82FAF /* TransactionSigner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransactionSigner.swift; sourceTree = ""; }; + 81C0FCF8204456E600D82FAF /* Web3+BrowserFunctions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Web3+BrowserFunctions.swift"; sourceTree = ""; }; + 81C0FCFA20446C2C00D82FAF /* AbstractSigner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AbstractSigner.swift; sourceTree = ""; }; + 81C0FCFC20449D1400D82FAF /* Web3+TransactionIntermediate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Web3+TransactionIntermediate.swift"; sourceTree = ""; }; + 81C0FD092044AB2400D82FAF /* Pods_web3swift_iOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Pods_web3swift_iOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 81C0FD0B2044AB4600D82FAF /* Pods_web3swift_iOS_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Pods_web3swift_iOS_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 81C146F61FF274B200AA943E /* Web3+Structures.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Web3+Structures.swift"; sourceTree = ""; }; 81DDECCE1FDF004E0063684A /* Web3.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Web3.swift; sourceTree = ""; }; - 8C8900D87850714C2DB85DFC /* Pods-web3swiftTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swiftTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-web3swiftTests/Pods-web3swiftTests.release.xcconfig"; sourceTree = ""; }; - 9FE2740D77EA32C8AFE16294 /* Pods-Web3Swift_osx_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Web3Swift_osx_Tests.release.xcconfig"; path = "Pods/Target Support Files/Pods-Web3Swift_osx_Tests/Pods-Web3Swift_osx_Tests.release.xcconfig"; sourceTree = ""; }; - A3A24EAE54B23DA24A01A9A9 /* Pods-web3swift_osx_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swift_osx_Tests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-web3swift_osx_Tests/Pods-web3swift_osx_Tests.debug.xcconfig"; sourceTree = ""; }; + 81FA43F32044097000EE14D5 /* web3swift-macOS_Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "web3swift-macOS_Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; + 81FA43F52044097100EE14D5 /* web3swift_macOS_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = web3swift_macOS_Tests.swift; sourceTree = ""; }; + 81FA43F72044097100EE14D5 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; A9ADDE40292A17C21B8D5516 /* Pods-web3swift-iOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swift-iOS.release.xcconfig"; path = "Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS.release.xcconfig"; sourceTree = ""; }; - B0F20D724EDC2C4CDC8C7476 /* Pods-Web3Swift_ios.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Web3Swift_ios.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Web3Swift_ios/Pods-Web3Swift_ios.debug.xcconfig"; sourceTree = ""; }; - B24058FB823C984C119631B7 /* Pods-Web3Swift_ios_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Web3Swift_ios_Tests.release.xcconfig"; path = "Pods/Target Support Files/Pods-Web3Swift_ios_Tests/Pods-Web3Swift_ios_Tests.release.xcconfig"; sourceTree = ""; }; - B439329CA8B5C3F76AD38DB8 /* Pods-web3swift_osx.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swift_osx.debug.xcconfig"; path = "Pods/Target Support Files/Pods-web3swift_osx/Pods-web3swift_osx.debug.xcconfig"; sourceTree = ""; }; B48CA58D134401D3C4E8CCC5 /* Pods_Web3Swift_osx.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Web3Swift_osx.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B5AFAFC5440E52BE57C7BA13 /* Pods_web3swiftTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_web3swiftTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - BA4E594FFB2A9853EAA7FE03 /* Pods-web3swift_ios_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swift_ios_Tests.release.xcconfig"; path = "Pods/Target Support Files/Pods-web3swift_ios_Tests/Pods-web3swift_ios_Tests.release.xcconfig"; sourceTree = ""; }; - C040A86A6F6797833A4F135E /* Pods-web3swift_ios.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swift_ios.debug.xcconfig"; path = "Pods/Target Support Files/Pods-web3swift_ios/Pods-web3swift_ios.debug.xcconfig"; sourceTree = ""; }; - C38B8A3D01E085BF964565D8 /* Pods-Web3Swift_osx.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Web3Swift_osx.release.xcconfig"; path = "Pods/Target Support Files/Pods-Web3Swift_osx/Pods-Web3Swift_osx.release.xcconfig"; sourceTree = ""; }; - C3E9A8924684AD57011403F8 /* Pods-web3swift_osx.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swift_osx.release.xcconfig"; path = "Pods/Target Support Files/Pods-web3swift_osx/Pods-web3swift_osx.release.xcconfig"; sourceTree = ""; }; CA3F7E825AEBF3455D00150A /* Pods-web3swift-macOS_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swift-macOS_Tests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-web3swift-macOS_Tests/Pods-web3swift-macOS_Tests.debug.xcconfig"; sourceTree = ""; }; CDCB852B5E2E84636B80BB99 /* Pods-web3swift-iOS_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swift-iOS_Tests.release.xcconfig"; path = "Pods/Target Support Files/Pods-web3swift-iOS_Tests/Pods-web3swift-iOS_Tests.release.xcconfig"; sourceTree = ""; }; - D11D741983B37E59DB6A65E1 /* Pods-web3swift.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swift.debug.xcconfig"; path = "Pods/Target Support Files/Pods-web3swift/Pods-web3swift.debug.xcconfig"; sourceTree = ""; }; - E826BA1AF7696BFC43A392A0 /* Pods-web3swiftTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swiftTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-web3swiftTests/Pods-web3swiftTests.debug.xcconfig"; sourceTree = ""; }; - F2C3D0521469F54731084381 /* Pods-Web3Swift_ios_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Web3Swift_ios_Tests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Web3Swift_ios_Tests/Pods-Web3Swift_ios_Tests.debug.xcconfig"; sourceTree = ""; }; - FA135C3F5438168498AC508A /* Pods-Web3Swift_osx_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Web3Swift_osx_Tests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Web3Swift_osx_Tests/Pods-Web3Swift_osx_Tests.debug.xcconfig"; sourceTree = ""; }; FB43EC035C593F9E5A3644B6 /* Pods-web3swift-macOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swift-macOS.debug.xcconfig"; path = "Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS.debug.xcconfig"; sourceTree = ""; }; FC1E6C115639177F2629E42A /* Pods_web3swift_osx.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_web3swift_osx.framework; sourceTree = BUILT_PRODUCTS_DIR; }; FC4A49B538D672F4DA112A11 /* Pods_web3swift_macOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_web3swift_macOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -212,8 +215,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 815630062008A64C00A0EC2F /* Security.framework in Frameworks */, - 1CF482A005E87F8B41423FA0 /* Pods_web3swift_iOS.framework in Frameworks */, + 81C0FD082044AB2400D82FAF /* Pods_web3swift_iOS.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -221,11 +223,8 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 81C0FD0A2044AB4600D82FAF /* Pods_web3swift_iOS_Tests.framework in Frameworks */, 1CD91B341FD769A6007BFB45 /* web3swift_iOS.framework in Frameworks */, - E82DD6EACF6933D0D3978EA0 /* Pods_web3swiftTests.framework in Frameworks */, - EE6E59FC45D4B4EA279ADA27 /* Pods_Web3Swift_ios_Tests.framework in Frameworks */, - BD94F2A0BE80CC1005DD8CD1 /* Pods_web3swift_ios_Tests.framework in Frameworks */, - D4B29698B084B81A20BDD51F /* Pods_web3swift_iOS_Tests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -237,6 +236,15 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 81FA43F02044097000EE14D5 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 81FA43F82044097100EE14D5 /* web3swift_macOS.framework in Frameworks */, + 472BBA099A26DFD47F33C2E0 /* Pods_web3swift_macOS_Tests.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -245,10 +253,10 @@ children = ( 1CD91AFE1FD76910007BFB45 /* web3swift */, 1CD91B301FD769A6007BFB45 /* web3swiftTests */, + 81FA43F42044097100EE14D5 /* web3swift-macOS_Tests */, 1CD91AFD1FD76910007BFB45 /* Products */, 868F9682FE77A7BADF675F92 /* Pods */, 78D101CC419F27D142F6E9AE /* Frameworks */, - 417715F720362956005C3E16 /* Web3Swift_macTests copy-Info.plist */, ); sourceTree = ""; }; @@ -256,8 +264,9 @@ isa = PBXGroup; children = ( 1CD91AFC1FD76910007BFB45 /* web3swift_iOS.framework */, - 1CD91B2F1FD769A6007BFB45 /* web3swift_Tests.xctest */, + 1CD91B2F1FD769A6007BFB45 /* web3swift-iOS_Tests.xctest */, 417715D420362916005C3E16 /* web3swift_macOS.framework */, + 81FA43F32044097000EE14D5 /* web3swift-macOS_Tests.xctest */, ); name = Products; sourceTree = ""; @@ -265,6 +274,8 @@ 1CD91AFE1FD76910007BFB45 /* web3swift */ = { isa = PBXGroup; children = ( + 81C0FCED20440BDF00D82FAF /* HookedFunctions */, + 81C0FCEA20440BB400D82FAF /* Web3 */, 818EABD71FDC9A3800E013FC /* Contract */, 8113D2B91FD7E1590074282C /* ABI */, 8113D2B51FD7E1590074282C /* KeystoreManager */, @@ -290,6 +301,8 @@ 78D101CC419F27D142F6E9AE /* Frameworks */ = { isa = PBXGroup; children = ( + 81C0FD0B2044AB4600D82FAF /* Pods_web3swift_iOS_Tests.framework */, + 81C0FD092044AB2400D82FAF /* Pods_web3swift_iOS.framework */, 419481432036338A0065A83B /* Pods_web3swift_osx.framework */, 815630052008A64C00A0EC2F /* Security.framework */, 18E81592D2802B9F4E200823 /* Pods_web3swift.framework */, @@ -347,10 +360,9 @@ 8113D2B71FD7E1590074282C /* Classes */ = { isa = PBXGroup; children = ( + 817EBB2420066E2B00E02EAA /* AbstractKeystore.swift */, 8113D2B81FD7E1590074282C /* KeystoreManager.swift */, 817EBB0F2004FE2800E02EAA /* EthereumAddress.swift */, - 817EBB2420066E2B00E02EAA /* AbstractKeystore.swift */, - 8123E1C2200CA0AE00B6D3AB /* Web3Swift+AbstractSigner.swift */, 815630012007B53C00A0EC2F /* BIP32Keystore.swift */, 81562FFF2007B48800A0EC2F /* BIP32KeystoreJSONStructure.swift */, 817EBB112004FE2F00E02EAA /* BIP32HDNode.swift */, @@ -358,6 +370,7 @@ 815630032007BC8F00A0EC2F /* BIP39+WordLists.swift */, 81531A9F1FE7C07A002192CC /* EthereumKeystoreV3.swift */, 817EBB26200673D100E02EAA /* KeystoreV3JSONStructure.swift */, + 81C0FCFA20446C2C00D82FAF /* AbstractSigner.swift */, ); path = Classes; sourceTree = ""; @@ -394,6 +407,7 @@ isa = PBXGroup; children = ( 8113D2C31FD7E1590074282C /* EthereumTransaction.swift */, + 81C0FCF520440F9900D82FAF /* TransactionSigner.swift */, ); path = Classes; sourceTree = ""; @@ -409,10 +423,25 @@ 818EABD81FDC9A4800E013FC /* Classes */ = { isa = PBXGroup; children = ( - 817EBB142004FE4200E02EAA /* Web3+HttpProvider.swift */, 1CDA65C91FDE0D3F0025DE71 /* ABIManager.swift */, 818EABD91FDC9A5C00E013FC /* Contract.swift */, + ); + path = Classes; + sourceTree = ""; + }; + 81C0FCEA20440BB400D82FAF /* Web3 */ = { + isa = PBXGroup; + children = ( + 81C0FCEB20440BBE00D82FAF /* Classes */, + ); + path = Web3; + sourceTree = ""; + }; + 81C0FCEB20440BBE00D82FAF /* Classes */ = { + isa = PBXGroup; + children = ( 81DDECCE1FDF004E0063684A /* Web3.swift */, + 817EBB142004FE4200E02EAA /* Web3+HttpProvider.swift */, 818ABD5A1FE95F8F002657BB /* Web3+Instance.swift */, 818ABD5C1FE95FC9002657BB /* Web3+Contract.swift */, 8104E2271FE82BDC00F952CB /* Web3+Utils.swift */, @@ -421,35 +450,43 @@ 81C146F61FF274B200AA943E /* Web3+Structures.swift */, 810B0F9B1FEC520500CF0DA2 /* Web3+Methods.swift */, 810B0F9D1FEC5B9C00CF0DA2 /* Web3+Eth.swift */, + 81C0FCF120440EB500D82FAF /* Web3+Protocols.swift */, + 8123E1C2200CA0AE00B6D3AB /* Web3+AbstractSigner.swift */, + 81C0FCF320440F0900D82FAF /* Web3+Options.swift */, + 81C0FCFC20449D1400D82FAF /* Web3+TransactionIntermediate.swift */, + ); + path = Classes; + sourceTree = ""; + }; + 81C0FCED20440BDF00D82FAF /* HookedFunctions */ = { + isa = PBXGroup; + children = ( + 81C0FCEE20440BE900D82FAF /* Classes */, + ); + path = HookedFunctions; + sourceTree = ""; + }; + 81C0FCEE20440BE900D82FAF /* Classes */ = { + isa = PBXGroup; + children = ( + 81C0FCEF20440C3600D82FAF /* Web3+Wallet.swift */, + 81C0FCF8204456E600D82FAF /* Web3+BrowserFunctions.swift */, ); path = Classes; sourceTree = ""; }; + 81FA43F42044097100EE14D5 /* web3swift-macOS_Tests */ = { + isa = PBXGroup; + children = ( + 81FA43F52044097100EE14D5 /* web3swift_macOS_Tests.swift */, + 81FA43F72044097100EE14D5 /* Info.plist */, + ); + path = "web3swift-macOS_Tests"; + sourceTree = ""; + }; 868F9682FE77A7BADF675F92 /* Pods */ = { isa = PBXGroup; children = ( - D11D741983B37E59DB6A65E1 /* Pods-web3swift.debug.xcconfig */, - 3D07F714D1FF1408DBC01EBB /* Pods-web3swift.release.xcconfig */, - E826BA1AF7696BFC43A392A0 /* Pods-web3swiftTests.debug.xcconfig */, - 8C8900D87850714C2DB85DFC /* Pods-web3swiftTests.release.xcconfig */, - 5EF0EBFF98DF0E56B960D7FF /* Pods-web3Swift-Demo.debug.xcconfig */, - 45EF5FB62CEF5D014C559D8E /* Pods-web3Swift-Demo.release.xcconfig */, - B0F20D724EDC2C4CDC8C7476 /* Pods-Web3Swift_ios.debug.xcconfig */, - 315D907D757EBC8EB6E70C13 /* Pods-Web3Swift_ios.release.xcconfig */, - F2C3D0521469F54731084381 /* Pods-Web3Swift_ios_Tests.debug.xcconfig */, - B24058FB823C984C119631B7 /* Pods-Web3Swift_ios_Tests.release.xcconfig */, - 1FE9B8894E3D16872E6AF206 /* Pods-Web3Swift_osx.debug.xcconfig */, - C38B8A3D01E085BF964565D8 /* Pods-Web3Swift_osx.release.xcconfig */, - FA135C3F5438168498AC508A /* Pods-Web3Swift_osx_Tests.debug.xcconfig */, - 9FE2740D77EA32C8AFE16294 /* Pods-Web3Swift_osx_Tests.release.xcconfig */, - C040A86A6F6797833A4F135E /* Pods-web3swift_ios.debug.xcconfig */, - 58BADB6EBA140A4DAD53D2CA /* Pods-web3swift_ios.release.xcconfig */, - 046CD76126C610E5634756CB /* Pods-web3swift_ios_Tests.debug.xcconfig */, - BA4E594FFB2A9853EAA7FE03 /* Pods-web3swift_ios_Tests.release.xcconfig */, - B439329CA8B5C3F76AD38DB8 /* Pods-web3swift_osx.debug.xcconfig */, - C3E9A8924684AD57011403F8 /* Pods-web3swift_osx.release.xcconfig */, - A3A24EAE54B23DA24A01A9A9 /* Pods-web3swift_osx_Tests.debug.xcconfig */, - 47FBE23A4D6EF29D0439EF09 /* Pods-web3swift_osx_Tests.release.xcconfig */, 5A31D55232599E417B6F862E /* Pods-web3swift-iOS.debug.xcconfig */, A9ADDE40292A17C21B8D5516 /* Pods-web3swift-iOS.release.xcconfig */, 342700493511FEB189700D13 /* Pods-web3swift-iOS_Tests.debug.xcconfig */, @@ -502,9 +539,9 @@ productReference = 1CD91AFC1FD76910007BFB45 /* web3swift_iOS.framework */; productType = "com.apple.product-type.framework"; }; - 1CD91B2E1FD769A6007BFB45 /* web3swift_Tests */ = { + 1CD91B2E1FD769A6007BFB45 /* web3swift-iOS_Tests */ = { isa = PBXNativeTarget; - buildConfigurationList = 1CD91B371FD769A6007BFB45 /* Build configuration list for PBXNativeTarget "web3swift_Tests" */; + buildConfigurationList = 1CD91B371FD769A6007BFB45 /* Build configuration list for PBXNativeTarget "web3swift-iOS_Tests" */; buildPhases = ( 8CE421FE6AFA1B201DF09E84 /* [CP] Check Pods Manifest.lock */, 1CD91B2B1FD769A6007BFB45 /* Sources */, @@ -518,9 +555,9 @@ dependencies = ( 1CD91B361FD769A6007BFB45 /* PBXTargetDependency */, ); - name = web3swift_Tests; + name = "web3swift-iOS_Tests"; productName = web3swiftTests; - productReference = 1CD91B2F1FD769A6007BFB45 /* web3swift_Tests.xctest */; + productReference = 1CD91B2F1FD769A6007BFB45 /* web3swift-iOS_Tests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; 417715D320362916005C3E16 /* web3swift-macOS */ = { @@ -543,6 +580,27 @@ productReference = 417715D420362916005C3E16 /* web3swift_macOS.framework */; productType = "com.apple.product-type.framework"; }; + 81FA43F22044097000EE14D5 /* web3swift-macOS_Tests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 81FA43FD2044097100EE14D5 /* Build configuration list for PBXNativeTarget "web3swift-macOS_Tests" */; + buildPhases = ( + 6E4349FF8099C4D3F1F4669F /* [CP] Check Pods Manifest.lock */, + 81FA43EF2044097000EE14D5 /* Sources */, + 81FA43F02044097000EE14D5 /* Frameworks */, + 81FA43F12044097000EE14D5 /* Resources */, + 4272A8167B31CAB015D9817A /* [CP] Embed Pods Frameworks */, + DF828C79527B2FCF90B8A626 /* [CP] Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + 81FA43FA2044097100EE14D5 /* PBXTargetDependency */, + ); + name = "web3swift-macOS_Tests"; + productName = "web3swift-macOS_Tests"; + productReference = 81FA43F32044097000EE14D5 /* web3swift-macOS_Tests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -566,6 +624,10 @@ CreatedOnToolsVersion = 9.2; ProvisioningStyle = Automatic; }; + 81FA43F22044097000EE14D5 = { + CreatedOnToolsVersion = 9.2; + ProvisioningStyle = Automatic; + }; }; }; buildConfigurationList = 1CD91AF61FD76910007BFB45 /* Build configuration list for PBXProject "web3swift" */; @@ -582,8 +644,9 @@ projectRoot = ""; targets = ( 1CD91AFB1FD76910007BFB45 /* web3swift-iOS */, - 1CD91B2E1FD769A6007BFB45 /* web3swift_Tests */, + 1CD91B2E1FD769A6007BFB45 /* web3swift-iOS_Tests */, 417715D320362916005C3E16 /* web3swift-macOS */, + 81FA43F22044097000EE14D5 /* web3swift-macOS_Tests */, ); }; /* End PBXProject section */ @@ -612,6 +675,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 81FA43F12044097000EE14D5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ @@ -663,6 +733,38 @@ shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS-resources.sh\"\n"; showEnvVarsInLog = 0; }; + 4272A8167B31CAB015D9817A /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${SRCROOT}/Pods/Target Support Files/Pods-web3swift-macOS_Tests/Pods-web3swift-macOS_Tests-frameworks.sh", + "${BUILT_PRODUCTS_DIR}/Alamofire-macOS/Alamofire.framework", + "${BUILT_PRODUCTS_DIR}/Alamofire-Synchronous-macOS/Alamofire_Synchronous.framework", + "${BUILT_PRODUCTS_DIR}/BigInt-macOS/BigInt.framework", + "${BUILT_PRODUCTS_DIR}/CryptoSwift-macOS/CryptoSwift.framework", + "${BUILT_PRODUCTS_DIR}/Result-macOS/Result.framework", + "${BUILT_PRODUCTS_DIR}/SipHash-macOS/SipHash.framework", + "${BUILT_PRODUCTS_DIR}/libsodium-macOS/libsodium.framework", + "${BUILT_PRODUCTS_DIR}/secp256k1_ios-macOS/secp256k1_ios.framework", + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Alamofire.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Alamofire_Synchronous.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/BigInt.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CryptoSwift.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Result.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SipHash.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/libsodium.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/secp256k1_ios.framework", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-web3swift-macOS_Tests/Pods-web3swift-macOS_Tests-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; 48322606683D458C51615DF4 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -674,6 +776,7 @@ "${BUILT_PRODUCTS_DIR}/Alamofire-Synchronous-iOS/Alamofire_Synchronous.framework", "${BUILT_PRODUCTS_DIR}/BigInt-iOS/BigInt.framework", "${BUILT_PRODUCTS_DIR}/CryptoSwift-iOS/CryptoSwift.framework", + "${BUILT_PRODUCTS_DIR}/Result-iOS/Result.framework", "${BUILT_PRODUCTS_DIR}/SipHash-iOS/SipHash.framework", "${BUILT_PRODUCTS_DIR}/libsodium-iOS/libsodium.framework", "${BUILT_PRODUCTS_DIR}/secp256k1_ios-iOS/secp256k1_ios.framework", @@ -684,6 +787,7 @@ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Alamofire_Synchronous.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/BigInt.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CryptoSwift.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Result.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SipHash.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/libsodium.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/secp256k1_ios.framework", @@ -693,6 +797,24 @@ shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-web3swift-iOS_Tests/Pods-web3swift-iOS_Tests-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; + 6E4349FF8099C4D3F1F4669F /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-web3swift-macOS_Tests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; 823273117A75E5B4A01500E1 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -729,6 +851,21 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; + DF828C79527B2FCF90B8A626 /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Copy Pods Resources"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-web3swift-macOS_Tests/Pods-web3swift-macOS_Tests-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; FEB2C4DB5D16966EBFA7450F /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -759,6 +896,7 @@ 817EBB1F2006265400E02EAA /* Base58.swift in Sources */, 818EABDA1FDC9A5C00E013FC /* Contract.swift in Sources */, 817EBB2520066E2B00E02EAA /* AbstractKeystore.swift in Sources */, + 81C0FCF720441A1D00D82FAF /* TransactionSigner.swift in Sources */, 818ABD591FE95558002657BB /* Web3+Infura.swift in Sources */, 810B0F9A1FEC446B00CF0DA2 /* Web3+JSONRPC.swift in Sources */, 8113D2C61FD7E1590074282C /* LibSecp256k1Extension.swift in Sources */, @@ -780,7 +918,7 @@ 8123E1C9200CBAF800B6D3AB /* Data+Extension.swift in Sources */, 817EBB23200649E000E02EAA /* RIPEMD160+StackOveflow.swift in Sources */, 81DDECCF1FDF004E0063684A /* Web3.swift in Sources */, - 8123E1C3200CA0AE00B6D3AB /* Web3Swift+AbstractSigner.swift in Sources */, + 8123E1C3200CA0AE00B6D3AB /* Web3+AbstractSigner.swift in Sources */, 815630002007B48800A0EC2F /* BIP32KeystoreJSONStructure.swift in Sources */, 8123E1CB200CBB2200B6D3AB /* Array+Extension.swift in Sources */, 8113D2C71FD7E1590074282C /* DictionaryLiteralJSONSerializer.swift in Sources */, @@ -788,8 +926,11 @@ 8113D31A1FD7F4C80074282C /* ABITypes.swift in Sources */, 817EBB162004FE4200E02EAA /* Web3+HttpProvider.swift in Sources */, 8113D31C1FD7F8980074282C /* ABIRecordParser.swift in Sources */, + 81C0FCF220440EB500D82FAF /* Web3+Protocols.swift in Sources */, + 81C0FCF420440F0900D82FAF /* Web3+Options.swift in Sources */, 815630042007BC8F00A0EC2F /* BIP39+WordLists.swift in Sources */, 8113D2CE1FD7E1590074282C /* EthereumTransaction.swift in Sources */, + 81C0FD012044A89300D82FAF /* Web3+TransactionIntermediate.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -813,6 +954,7 @@ 41948120203630530065A83B /* Web3+Contract.swift in Sources */, 41948121203630530065A83B /* Web3+Utils.swift in Sources */, 41948122203630530065A83B /* Web3+Infura.swift in Sources */, + 81C0FD062044A8D100D82FAF /* TransactionSigner.swift in Sources */, 41948123203630530065A83B /* Web3+JSONRPC.swift in Sources */, 41948124203630530065A83B /* Web3+Structures.swift in Sources */, 41948125203630530065A83B /* Web3+Methods.swift in Sources */, @@ -825,7 +967,7 @@ 4194812C203630530065A83B /* KeystoreManager.swift in Sources */, 4194812D203630530065A83B /* EthereumAddress.swift in Sources */, 4194812E203630530065A83B /* AbstractKeystore.swift in Sources */, - 4194812F203630530065A83B /* Web3Swift+AbstractSigner.swift in Sources */, + 4194812F203630530065A83B /* Web3+AbstractSigner.swift in Sources */, 41948130203630530065A83B /* BIP32Keystore.swift in Sources */, 41948131203630530065A83B /* BIP32KeystoreJSONStructure.swift in Sources */, 41948132203630530065A83B /* BIP32HDNode.swift in Sources */, @@ -835,10 +977,13 @@ 41948136203630530065A83B /* KeystoreV3JSONStructure.swift in Sources */, 41948137203630530065A83B /* EthereumTransaction.swift in Sources */, 41948138203630530065A83B /* CryptoExtensions.swift in Sources */, + 81C0FD052044A8AE00D82FAF /* Web3+Protocols.swift in Sources */, 41948139203630530065A83B /* LibSecp256k1Extension.swift in Sources */, 4194813A203630530065A83B /* DictionaryLiteralJSONSerializer.swift in Sources */, 4194813B203630530065A83B /* NSRegularExpressionExtension.swift in Sources */, + 81C0FD042044A8A700D82FAF /* Web3+Options.swift in Sources */, 4194813C203630530065A83B /* Base58.swift in Sources */, + 81C0FD032044A89400D82FAF /* Web3+TransactionIntermediate.swift in Sources */, 4194813D203630530065A83B /* RIPEMD160+StackOveflow.swift in Sources */, 4194813E203630530065A83B /* Data+Extension.swift in Sources */, 4194813F203630530065A83B /* Dictionary+Extension.swift in Sources */, @@ -847,6 +992,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 81FA43EF2044097000EE14D5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 81FA43F62044097100EE14D5 /* web3swift_macOS_Tests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ @@ -855,6 +1008,11 @@ target = 1CD91AFB1FD76910007BFB45 /* web3swift-iOS */; targetProxy = 1CD91B351FD769A6007BFB45 /* PBXContainerItemProxy */; }; + 81FA43FA2044097100EE14D5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 417715D320362916005C3E16 /* web3swift-macOS */; + targetProxy = 81FA43F92044097100EE14D5 /* PBXContainerItemProxy */; + }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ @@ -1170,6 +1328,42 @@ }; name = Release; }; + 81FA43FB2044097100EE14D5 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = CA3F7E825AEBF3455D00150A /* Pods-web3swift-macOS_Tests.debug.xcconfig */; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = "Mac Developer"; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + DEVELOPMENT_TEAM = 62V9CKQN89; + INFOPLIST_FILE = "web3swift-macOS_Tests/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "org.bankexfoundation.web3swift-macOS-Tests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + SWIFT_VERSION = 4.0; + }; + name = Debug; + }; + 81FA43FC2044097100EE14D5 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1E62EF5F091ED9F7B80CA8EE /* Pods-web3swift-macOS_Tests.release.xcconfig */; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = "Mac Developer"; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + DEVELOPMENT_TEAM = 62V9CKQN89; + INFOPLIST_FILE = "web3swift-macOS_Tests/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "org.bankexfoundation.web3swift-macOS-Tests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + SWIFT_VERSION = 4.0; + }; + name = Release; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -1191,7 +1385,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 1CD91B371FD769A6007BFB45 /* Build configuration list for PBXNativeTarget "web3swift_Tests" */ = { + 1CD91B371FD769A6007BFB45 /* Build configuration list for PBXNativeTarget "web3swift-iOS_Tests" */ = { isa = XCConfigurationList; buildConfigurations = ( 1CD91B381FD769A6007BFB45 /* Debug */, @@ -1209,6 +1403,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 81FA43FD2044097100EE14D5 /* Build configuration list for PBXNativeTarget "web3swift-macOS_Tests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 81FA43FB2044097100EE14D5 /* Debug */, + 81FA43FC2044097100EE14D5 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; /* End XCConfigurationList section */ }; rootObject = 1CD91AF31FD76910007BFB45 /* Project object */; diff --git a/web3swift.xcodeproj/xcshareddata/xcschemes/web3swift-iOS.xcscheme b/web3swift.xcodeproj/xcshareddata/xcschemes/web3swift-iOS.xcscheme index f396761d..18b1646d 100644 --- a/web3swift.xcodeproj/xcshareddata/xcschemes/web3swift-iOS.xcscheme +++ b/web3swift.xcodeproj/xcshareddata/xcschemes/web3swift-iOS.xcscheme @@ -34,8 +34,8 @@ @@ -102,7 +102,7 @@ ActionType = "Xcode.IDEStandardExecutionActionsCore.ExecutionActionType.ShellScriptAction"> + scriptText = "exec > /tmp/${PROJECT_NAME}_archive.log 2>&1 UNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIGURATION}-universal if [ "true" == ${ALREADYINVOKED:-false} ] then echo "RECURSION: Detected, stopping" else export ALREADYINVOKED="true" # make sure the output directory exists mkdir -p "${UNIVERSAL_OUTPUTFOLDER}" echo "Building for iPhoneSimulator" xcodebuild -workspace "${WORKSPACE_PATH}" -scheme "${TARGET_NAME}" -configuration ${CONFIGURATION} -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 6' ONLY_ACTIVE_ARCH=NO ARCHS='x86_64' BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" ENABLE_BITCODE=YES OTHER_CFLAGS="-fembed-bitcode" BITCODE_GENERATION_MODE=bitcode clean build # Step 1. Copy the framework structure (from iphoneos build) to the universal folder echo "Copying to output folder" cp -R "${ARCHIVE_PRODUCTS_PATH}${INSTALL_PATH}/${FULL_PRODUCT_NAME}" "${UNIVERSAL_OUTPUTFOLDER}/" # Step 2. Copy Swift modules from iphonesimulator build (if it exists) to the copied framework directory SIMULATOR_SWIFT_MODULES_DIR="${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${TARGET_NAME}.framework/Modules/${TARGET_NAME}.swiftmodule/." if [ -d "${SIMULATOR_SWIFT_MODULES_DIR}" ]; then cp -R "${SIMULATOR_SWIFT_MODULES_DIR}" "${UNIVERSAL_OUTPUTFOLDER}/${TARGET_NAME}.framework/Modules/${TARGET_NAME}.swiftmodule" fi # Step 3. Create universal binary file using lipo and place the combined executable in the copied framework directory echo "Combining executables" lipo -create -output "${UNIVERSAL_OUTPUTFOLDER}/${EXECUTABLE_PATH}" "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${EXECUTABLE_PATH}" "${ARCHIVE_PRODUCTS_PATH}${INSTALL_PATH}/${EXECUTABLE_PATH}" # Step 4. Create universal binaries for embedded frameworks #for SUB_FRAMEWORK in $( ls "${UNIVERSAL_OUTPUTFOLDER}/${TARGET_NAME}.framework/Frameworks" ); do #BINARY_NAME="${SUB_FRAMEWORK%.*}" #lipo -create -output "${UNIVERSAL_OUTPUTFOLDER}/${TARGET_NAME}.framework/Frameworks/${SUB_FRAMEWORK}/${BINARY_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${SUB_FRAMEWORK}/${BINARY_NAME}" "${ARCHIVE_PRODUCTS_PATH}${INSTALL_PATH}/${TARGET_NAME}.framework/Frameworks/${SUB_FRAMEWORK}/${BINARY_NAME}" #done # Step 5. Convenience step to copy the framework to the project's directory echo "Copying to project dir" yes | cp -Rf "${UNIVERSAL_OUTPUTFOLDER}/${FULL_PRODUCT_NAME}" "${PROJECT_DIR}" open "${PROJECT_DIR}" fi"> @@ -34,8 +34,8 @@ @@ -58,8 +58,8 @@ diff --git a/web3swift/ABI/Classes/ABIDecoder.swift b/web3swift/ABI/Classes/ABIDecoder.swift index f113218b..1c7e8301 100644 --- a/web3swift/ABI/Classes/ABIDecoder.swift +++ b/web3swift/ABI/Classes/ABIDecoder.swift @@ -157,6 +157,29 @@ extension ABIElement { case .fallback(_): return nil case .function(let function): + if (data.count == 0 && function.outputs.count == 1) { + let name = "0" + var value:Any + switch function.outputs[0].type { + case .dynamicType(let type) : + switch type { + case .string: + value = "" + case .bytes: + value = Data() + default: + return nil + } + default: + return nil + } + var returnArray = [String:Any]() + returnArray[name] = value + if function.outputs[0].name != "" { + returnArray[function.outputs[0].name] = value + } + return returnArray + } guard function.outputs.count*32 <= data.count else {return nil} var dataForProcessing = data var tailPointer = BigUInt(0) diff --git a/web3swift/Contract/Classes/Contract.swift b/web3swift/Contract/Classes/Contract.swift index cf79f375..8579b008 100644 --- a/web3swift/Contract/Classes/Contract.swift +++ b/web3swift/Contract/Classes/Contract.swift @@ -40,7 +40,6 @@ public struct Contract { } var options: Web3Options? = Web3Options.defaultOptions() - var chainID: BigUInt = BigUInt(1) public init(abi: [ABIElement]) { _abi = abi @@ -52,7 +51,7 @@ public struct Contract { } - public func method(_ method:String = "fallback", parameters: [AnyObject] = [AnyObject](), nonce: BigUInt = BigUInt(0), extraData: Data = Data(), options: Web3Options?) -> EthereumTransaction? { + public func method(_ method:String = "fallback", parameters: [AnyObject] = [AnyObject](), extraData: Data = Data(), options: Web3Options?) -> EthereumTransaction? { var to:EthereumAddress let mergedOptions = Web3Options.merge(self.options, with: options) if (self.address != nil) { @@ -63,9 +62,9 @@ public struct Contract { return nil } - var gas:BigUInt - if let gasInOptions = mergedOptions?.gas, gasInOptions > BigUInt(0) { - gas = gasInOptions + var gasLimit:BigUInt + if let gasInOptions = mergedOptions?.gasLimit, gasInOptions > BigUInt(0) { + gasLimit = gasInOptions } else { return nil } @@ -85,7 +84,7 @@ public struct Contract { } if (method == "fallback") { - let transaction = EthereumTransaction(nonce: nonce, gasPrice: gasPrice, gasLimit: gas, to: to, value: value, data: extraData, v: chainID, r: BigUInt(0), s: BigUInt(0)) + let transaction = EthereumTransaction(gasPrice: gasPrice, gasLimit: gasLimit, to: to, value: value, data: extraData) return transaction } let foundMethod = self.methods.filter { (key, value) -> Bool in @@ -94,7 +93,8 @@ public struct Contract { guard foundMethod.count == 1 else {return nil} let abiMethod = foundMethod[method] guard let encodedData = abiMethod?.encodeParameters(parameters) else {return nil} - let transaction = EthereumTransaction(nonce: nonce, gasPrice: gasPrice, gasLimit: gas, to: to, value: value, data: encodedData, v: chainID, r: BigUInt(0), s: BigUInt(0)) + let transaction = EthereumTransaction(gasPrice: gasPrice, gasLimit: gasLimit, to: to, value: value, data: encodedData) +// let transaction = EthereumTransaction(nonce: nonce, gasPrice: gasPrice, gasLimit: gas, to: to, value: value, data: encodedData, v: chainID, r: BigUInt(0), s: BigUInt(0)) return transaction } diff --git a/web3swift/HookedFunctions/Classes/Web3+BrowserFunctions.swift b/web3swift/HookedFunctions/Classes/Web3+BrowserFunctions.swift new file mode 100644 index 00000000..0ac68264 --- /dev/null +++ b/web3swift/HookedFunctions/Classes/Web3+BrowserFunctions.swift @@ -0,0 +1,201 @@ +// +// Web3+BrowserFunctions.swift +// web3swift-iOS +// +// Created by Alexander Vlasov on 26.02.2018. +// Copyright © 2018 Bankex Foundation. All rights reserved. +// + +import Foundation +import BigInt + +extension web3.BrowserFunctions { + + public func getAccounts() -> [String]? { + guard let keystoreManager = self.web3?.provider.attachedKeystoreManager else {return nil} + guard let ethAddresses = keystoreManager.addresses else {return nil} + return ethAddresses.flatMap({$0.address}) + } + + public func getCoinbase() -> String? { + guard let addresses = self.getAccounts() else {return nil} + guard addresses.count > 0 else {return nil} + return addresses[0] + } + + public func personalSign(_ personalMessage: String, account: String, password: String = "BANKEXFOUNDATION") -> String? { + return self.sign(personalMessage, account: account, password: password) + } + + public func sign(_ personalMessage: String, account: String, password: String = "BANKEXFOUNDATION") -> String? { + guard let data = Data.fromHex(personalMessage) else {return nil} + return self.sign(data, account: account, password: password) + } + + public func sign(_ personalMessage: Data, account: String, password: String = "BANKEXFOUNDATION") -> String? { + do { + guard let keystoreManager = self.web3?.provider.attachedKeystoreManager else {return nil} + guard let signature = try keystoreManager.signPersonalMessage(personalMessage, password: password, account: EthereumAddress(account)) else {return nil} + guard let sender = self.personalECRecover(personalMessage, signature: signature) else {return nil} + print(sender) + if sender.lowercased() != account.lowercased() { + print("Invalid sender") + } + return signature.toHexString().addHexPrefix() + } + catch{ + print(error) + return nil + } + } + + public func personalECRecover(_ personalMessage: String, signature: String) -> String? { + guard let data = Data.fromHex(personalMessage) else {return nil} + guard let sig = Data.fromHex(signature) else {return nil} + return self.personalECRecover(data, signature:sig) + } + + public func personalECRecover(_ personalMessage: Data, signature: Data) -> String? { + if signature.count != 65 { return nil} + let rData = signature[0..<32].bytes + let sData = signature[32..<64].bytes + let vData = signature[64] + guard let signatureData = SECP256K1.marshalSignature(v: vData, r: rData, s: sData) else {return nil} + var hash: Data + if personalMessage.count == 32 { + print("Most likely it's hash already, allow for now") + hash = personalMessage + } else { + guard let h = Web3.Utils.hashPersonalMessage(personalMessage) else {return nil} + hash = h + } + guard let publicKey = SECP256K1.recoverPublicKey(hash: hash, signature: signatureData) else {return nil} + return Web3.Utils.publicToAddressString(publicKey) + } + + + public func sendTransaction(_ transactionJSON: [String: Any], password: String = "BANKEXFOUNDATION") -> [String:Any]? { + guard let transaction = EthereumTransaction.fromJSON(transactionJSON) else {return nil} + guard let options = Web3Options.fromJSON(transactionJSON) else {return nil} + return self.sendTransaction(transaction, options: options, password: password) + } + + public func sendTransaction(_ trans: EthereumTransaction, options: Web3Options, password: String = "BANKEXFOUNDATION") -> [String:Any]? { + do { + var transaction = trans + guard let from = options.from else {return nil} + guard let keystoreManager = self.web3?.provider.attachedKeystoreManager else {return nil} + guard let nonce = self.web3?.eth.getTransactionCount(address: from, onBlock: "pending") else {return nil} + transaction.nonce = nonce + if (self.web3?.provider.network != nil) { + transaction.chainID = self.web3?.provider.network?.chainID + } + try keystoreManager.signTX(transaction: &transaction, password: password, account: from) + print(transaction) + guard let request = EthereumTransaction.createRawTransaction(transaction: transaction) else {return nil} + let response = self.web3?.provider.send(request: request) + if response == nil { + return nil + } + guard let res = response else {return nil} + if let error = res["error"] as? String { + print(error as String) + return nil + } + guard let resultString = res["result"] as? String else {return nil} + let hash = resultString.addHexPrefix().lowercased() + return ["txhash": hash as Any, "txhashCalculated" : transaction.txhash as Any] + } + catch { + return nil + } + } + + public func estimateGas(_ transactionJSON: [String: Any]) -> BigUInt? { + guard let transaction = EthereumTransaction.fromJSON(transactionJSON) else {return nil} + guard let options = Web3Options.fromJSON(transactionJSON) else {return nil} + return self.estimateGas(transaction, options: options) + } + + public func estimateGas(_ transaction: EthereumTransaction, options: Web3Options) -> BigUInt? { + return self.web3?.eth.estimateGas(transaction, options: options) + } + + public func prepareTxForApproval(_ transactionJSON: [String: Any]) -> (transaction: EthereumTransaction?, options: Web3Options?) { + guard let transaction = EthereumTransaction.fromJSON(transactionJSON) else {return (nil, nil)} + guard let options = Web3Options.fromJSON(transactionJSON) else {return (nil, nil)} + return self.prepareTxForApproval(transaction, options: options) + } + + public func prepareTxForApproval(_ trans: EthereumTransaction, options opts: Web3Options) -> (transaction: EthereumTransaction?, options: Web3Options?) { + var transaction = trans + var options = opts + guard let from = options.from else {return (nil, nil)} + guard let keystoreManager = self.web3?.provider.attachedKeystoreManager else {return (nil, nil)} + guard let _ = keystoreManager.walletForAddress(from) else {return (nil, nil)} + guard let gasPrice = self.web3?.eth.getGasPrice() else {return (nil, nil)} + transaction.gasPrice = gasPrice + options.gasPrice = gasPrice + guard let gasEstimate = self.estimateGas(transaction, options: options) else {return (nil, nil)} + transaction.gasLimit = gasEstimate + options.gasLimit = gasEstimate + print(transaction) + return (transaction, options) + } + + public func signPreparedTransaction(_ trans: EthereumTransaction, options: Web3Options, password: String = "BANKEXFOUNDATION") -> String? { + do { + var transaction = trans + guard let from = options.from else {return nil} + guard let keystoreManager = self.web3?.provider.attachedKeystoreManager else {return nil} + guard let nonce = self.web3?.eth.getTransactionCount(address: from, onBlock: "pending") else {return nil} + transaction.nonce = nonce + if (self.web3?.provider.network != nil) { + transaction.chainID = self.web3?.provider.network?.chainID + } + guard let keystore = keystoreManager.walletForAddress(from) else {return nil} + try keystore.signTX(transaction: &transaction, password: password, account: from) + print(transaction) + let signedData = transaction.encode(forSignature: false, chainID: nil)?.toHexString().addHexPrefix() + return signedData + } + catch { + return nil + } + } + + + public func signTransaction(_ transactionJSON: [String: Any], password: String = "BANKEXFOUNDATION") -> String? { + guard let transaction = EthereumTransaction.fromJSON(transactionJSON) else {return nil} + guard let options = Web3Options.fromJSON(transactionJSON) else {return nil} + return self.signTransaction(transaction, options: options, password: password) + } + + public func signTransaction(_ trans: EthereumTransaction, options: Web3Options, password: String = "BANKEXFOUNDATION") -> String? { + do { + var transaction = trans + guard let from = options.from else {return nil} + guard let keystoreManager = self.web3?.provider.attachedKeystoreManager else {return nil} + + guard let gasPrice = self.web3?.eth.getGasPrice() else {return nil} + transaction.gasPrice = gasPrice + + guard let gasEstimate = self.estimateGas(transaction, options: options) else {return nil} + transaction.gasLimit = gasEstimate + + guard let nonce = self.web3?.eth.getTransactionCount(address: from, onBlock: "pending") else {return nil} + transaction.nonce = nonce + if (self.web3?.provider.network != nil) { + transaction.chainID = self.web3?.provider.network?.chainID + } + guard let keystore = keystoreManager.walletForAddress(from) else {return nil} + try keystore.signTX(transaction: &transaction, password: password, account: from) + print(transaction) + let signedData = transaction.encode(forSignature: false, chainID: nil)?.toHexString().addHexPrefix() + return signedData + } + catch { + return nil + } + } +} diff --git a/web3swift/KeystoreManager/Classes/AbstractKeystore.swift b/web3swift/KeystoreManager/Classes/AbstractKeystore.swift index 89f256aa..bc48c70e 100644 --- a/web3swift/KeystoreManager/Classes/AbstractKeystore.swift +++ b/web3swift/KeystoreManager/Classes/AbstractKeystore.swift @@ -14,16 +14,18 @@ public typealias TransactionIntermediate = web3.web3contract.TransactionIntermed public protocol AbstractKeystore { var addresses: [EthereumAddress]? {get} var isHDKeystore: Bool {get} - func signedTX(transaction:EthereumTransaction, password: String, account: EthereumAddress) throws -> EthereumTransaction? - func signTX( transaction:inout EthereumTransaction, password: String, account: EthereumAddress) throws - func signIntermediate(intermediate: TransactionIntermediate, password: String, account: EthereumAddress) throws - func signPersonalMessage(_ personalMessage: Data, password: String, account: EthereumAddress) throws -> Data? + func UNSAFE_getPrivateKeyData(password: String, account: EthereumAddress) throws -> Data +// func signedTX(transaction:EthereumTransaction, password: String, account: EthereumAddress) throws -> EthereumTransaction? +// func signTX(transaction:inout EthereumTransaction, password: String, account: EthereumAddress) throws +// func signIntermediate(intermediate: TransactionIntermediate, password: String, account: EthereumAddress) throws +// func signPersonalMessage(_ personalMessage: Data, password: String, account: EthereumAddress) throws -> Data? } -enum AbstractKeystoreError: Error { +public enum AbstractKeystoreError: Error { case noEntropyError case keyDerivationError case aesError case invalidAccountError + case invalidPasswordError case encryptionError(String) } diff --git a/web3swift/KeystoreManager/Classes/AbstractSigner.swift b/web3swift/KeystoreManager/Classes/AbstractSigner.swift new file mode 100644 index 00000000..0008d521 --- /dev/null +++ b/web3swift/KeystoreManager/Classes/AbstractSigner.swift @@ -0,0 +1,38 @@ +// +// AbstractSigner.swift +// web3swift-iOS +// +// Created by Alexander Vlasov on 26.02.2018. +// Copyright © 2018 Bankex Foundation. All rights reserved. +// + +import Foundation + +//public struct AbstractSigner { +// public var keystore: AbstractKeystore +// +// public static func signedTX(transaction:EthereumTransaction, privateKey: Data) throws -> EthereumTransaction? { +// var newTX = transaction +// guard newTX.sign(privateKey: privateKey) else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} +// return newTX +// } +// public static func signTX(transaction:inout EthereumTransaction, privateKey: Data) throws { +// guard transaction.sign(privateKey: privateKey) else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} +// } +// public static func signIntermediate(intermediate: TransactionIntermediate, privateKey: Data) throws { +// try intermediate.sign(privateKey) +// } +// public static func signPersonalMessage(_ personalMessage: Data, privateKey: Data) throws -> Data? { +// var hash: Data +// if personalMessage.count == 32 { +// print("Most likely it's hash already, allow for now") +// hash = personalMessage +// } else { +// guard let h = Web3.Utils.hashPersonalMessage(personalMessage) else {return nil} +// hash = h +// } +// let (compressedSignature, _) = SECP256K1.signForRecovery(hash: hash, privateKey: privateKey) +// return compressedSignature +// } +//} + diff --git a/web3swift/KeystoreManager/Classes/BIP32Keystore.swift b/web3swift/KeystoreManager/Classes/BIP32Keystore.swift index 8e86586d..c89daae1 100644 --- a/web3swift/KeystoreManager/Classes/BIP32Keystore.swift +++ b/web3swift/KeystoreManager/Classes/BIP32Keystore.swift @@ -29,54 +29,67 @@ public class BIP32Keystore: AbstractKeystore { public var isHDKeystore: Bool = false - public func signedTX(transaction: EthereumTransaction, password: String, account: EthereumAddress) throws -> EthereumTransaction? { + public func UNSAFE_getPrivateKeyData(password: String, account: EthereumAddress) throws -> Data { if let key = self.paths.keyForValue(value: account) { guard let decryptedRootNode = try? self.getPrefixNodeData(password), decryptedRootNode != nil else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} guard let rootNode = HDNode(decryptedRootNode!) else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} guard rootNode.depth == HDNode.defaultPathPrefix.components(separatedBy: "/").count else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} guard let index = UInt32(key.components(separatedBy: "/").last!) else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} guard let keyNode = rootNode.derive(index: index, derivePrivateKey: true) else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} - return try Web3AbstractSigner.signedTX(transaction: transaction, privateKey: keyNode.privateKey!) + guard let privateKey = keyNode.privateKey else {throw AbstractKeystoreError.invalidAccountError} + return privateKey } throw AbstractKeystoreError.invalidAccountError } - public func signTX(transaction: inout EthereumTransaction, password: String, account: EthereumAddress) throws { - if let key = self.paths.keyForValue(value: account) { - guard let decryptedRootNode = try? self.getPrefixNodeData(password), decryptedRootNode != nil else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} - guard let rootNode = HDNode(decryptedRootNode!) else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} - guard rootNode.depth == HDNode.defaultPathPrefix.components(separatedBy: "/").count else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} - guard let index = UInt32(key.components(separatedBy: "/").last!) else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} - guard let keyNode = rootNode.derive(index: index, derivePrivateKey: true) else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} - try Web3AbstractSigner.signTX(transaction: &transaction, privateKey: keyNode.privateKey!) - return - } - throw AbstractKeystoreError.invalidAccountError - } - - public func signIntermediate(intermediate: TransactionIntermediate, password: String, account: EthereumAddress) throws { - if let key = self.paths.keyForValue(value: account) { - guard let decryptedRootNode = try? self.getPrefixNodeData(password), decryptedRootNode != nil else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} - guard let rootNode = HDNode(decryptedRootNode!) else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} - guard rootNode.depth == HDNode.defaultPathPrefix.components(separatedBy: "/").count else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} - guard let index = UInt32(key.components(separatedBy: "/").last!) else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} - guard let keyNode = rootNode.derive(index: index, derivePrivateKey: true) else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} - try Web3AbstractSigner.signIntermediate(intermediate: intermediate, privateKey: keyNode.privateKey!) - } - throw AbstractKeystoreError.invalidAccountError - } - - public func signPersonalMessage(_ personalMessage: Data, password: String, account: EthereumAddress) throws -> Data? { - if let key = self.paths.keyForValue(value: account) { - guard let decryptedRootNode = try? self.getPrefixNodeData(password), decryptedRootNode != nil else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} - guard let rootNode = HDNode(decryptedRootNode!) else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} - guard rootNode.depth == HDNode.defaultPathPrefix.components(separatedBy: "/").count else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} - guard let index = UInt32(key.components(separatedBy: "/").last!) else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} - guard let keyNode = rootNode.derive(index: index, derivePrivateKey: true) else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} - return try Web3AbstractSigner.signPersonalMessage(personalMessage, privateKey: keyNode.privateKey!) - } - throw AbstractKeystoreError.invalidAccountError - } +// public func signedTX(transaction: EthereumTransaction, password: String, account: EthereumAddress) throws -> EthereumTransaction? { +// if let key = self.paths.keyForValue(value: account) { +// guard let decryptedRootNode = try? self.getPrefixNodeData(password), decryptedRootNode != nil else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} +// guard let rootNode = HDNode(decryptedRootNode!) else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} +// guard rootNode.depth == HDNode.defaultPathPrefix.components(separatedBy: "/").count else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} +// guard let index = UInt32(key.components(separatedBy: "/").last!) else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} +// guard let keyNode = rootNode.derive(index: index, derivePrivateKey: true) else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} +// return try Web3AbstractSigner.signedTX(transaction: transaction, privateKey: keyNode.privateKey!) +// } +// throw AbstractKeystoreError.invalidAccountError +// } +// +// public func signTX(transaction: inout EthereumTransaction, password: String, account: EthereumAddress) throws { +// if let key = self.paths.keyForValue(value: account) { +// guard let decryptedRootNode = try? self.getPrefixNodeData(password), decryptedRootNode != nil else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} +// guard let rootNode = HDNode(decryptedRootNode!) else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} +// guard rootNode.depth == HDNode.defaultPathPrefix.components(separatedBy: "/").count else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} +// guard let index = UInt32(key.components(separatedBy: "/").last!) else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} +// guard let keyNode = rootNode.derive(index: index, derivePrivateKey: true) else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} +// try Web3AbstractSigner.signTX(transaction: &transaction, privateKey: keyNode.privateKey!) +// return +// } +// throw AbstractKeystoreError.invalidAccountError +// } +// +// public func signIntermediate(intermediate: TransactionIntermediate, password: String, account: EthereumAddress) throws { +// if let key = self.paths.keyForValue(value: account) { +// guard let decryptedRootNode = try? self.getPrefixNodeData(password), decryptedRootNode != nil else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} +// guard let rootNode = HDNode(decryptedRootNode!) else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} +// guard rootNode.depth == HDNode.defaultPathPrefix.components(separatedBy: "/").count else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} +// guard let index = UInt32(key.components(separatedBy: "/").last!) else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} +// guard let keyNode = rootNode.derive(index: index, derivePrivateKey: true) else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} +// try Web3AbstractSigner.signIntermediate(intermediate: intermediate, privateKey: keyNode.privateKey!) +// } +// throw AbstractKeystoreError.invalidAccountError +// } +// +// public func signPersonalMessage(_ personalMessage: Data, password: String, account: EthereumAddress) throws -> Data? { +// if let key = self.paths.keyForValue(value: account) { +// guard let decryptedRootNode = try? self.getPrefixNodeData(password), decryptedRootNode != nil else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} +// guard let rootNode = HDNode(decryptedRootNode!) else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} +// guard rootNode.depth == HDNode.defaultPathPrefix.components(separatedBy: "/").count else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} +// guard let index = UInt32(key.components(separatedBy: "/").last!) else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} +// guard let keyNode = rootNode.derive(index: index, derivePrivateKey: true) else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} +// return try Web3AbstractSigner.signPersonalMessage(personalMessage, privateKey: keyNode.privateKey!) +// } +// throw AbstractKeystoreError.invalidAccountError +// } // -------------- diff --git a/web3swift/KeystoreManager/Classes/EthereumKeystoreV3.swift b/web3swift/KeystoreManager/Classes/EthereumKeystoreV3.swift index 2e0f68fa..63c2216e 100644 --- a/web3swift/KeystoreManager/Classes/EthereumKeystoreV3.swift +++ b/web3swift/KeystoreManager/Classes/EthereumKeystoreV3.swift @@ -40,55 +40,65 @@ public class EthereumKeystoreV3: AbstractKeystore { } public var isHDKeystore: Bool = false - public func signedTX(transaction: EthereumTransaction, password: String, account: EthereumAddress) throws -> EthereumTransaction? { + public func UNSAFE_getPrivateKeyData(password: String, account: EthereumAddress) throws -> Data { if self.addresses?.count == 1 && account == self.addresses?.last { - guard let pk = try? self.getKeyData(password) else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} - guard var privateKey = pk else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} - defer {Data.zero(&privateKey)} - let signedTX = try Web3AbstractSigner.signedTX(transaction: transaction, privateKey: privateKey) - return signedTX - } - else { - throw AbstractKeystoreError.invalidAccountError - } - } - - public func signTX(transaction: inout EthereumTransaction, password: String, account: EthereumAddress) throws { - if self.address == account { - guard let pk = try? self.getKeyData(password) else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} - guard var privateKey = pk else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} - defer {Data.zero(&privateKey)} - try Web3AbstractSigner.signTX(transaction: &transaction, privateKey: privateKey) - } - else { - throw AbstractKeystoreError.invalidAccountError - } - } - - public func signIntermediate(intermediate: TransactionIntermediate, password: String, account: EthereumAddress) throws { - if self.address == account { - guard let pk = try? self.getKeyData(password) else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} - guard var privateKey = pk else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} - defer {Data.zero(&privateKey)} - try Web3AbstractSigner.signIntermediate(intermediate: intermediate, privateKey: privateKey) - } - else { - throw AbstractKeystoreError.invalidAccountError - } - } - - public func signPersonalMessage(_ personalMessage: Data, password: String, account: EthereumAddress) throws -> Data? { - if self.address == account { - guard let pk = try? self.getKeyData(password) else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} - guard var privateKey = pk else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} - defer {Data.zero(&privateKey)} - let signature = try Web3AbstractSigner.signPersonalMessage(personalMessage, privateKey: privateKey) - return signature - } - else { - throw AbstractKeystoreError.invalidAccountError + guard let pk = try? self.getKeyData(password) else {throw AbstractKeystoreError.invalidPasswordError} + guard let privateKey = pk else {throw AbstractKeystoreError.invalidAccountError} + return privateKey } + throw AbstractKeystoreError.invalidAccountError } + + +// public func signedTX(transaction: EthereumTransaction, password: String, account: EthereumAddress) throws -> EthereumTransaction? { +// if self.addresses?.count == 1 && account == self.addresses?.last { +// guard let pk = try? self.getKeyData(password) else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} +// guard var privateKey = pk else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} +// defer {Data.zero(&privateKey)} +// let signedTX = try Web3AbstractSigner.signedTX(transaction: transaction, privateKey: privateKey) +// return signedTX +// } +// else { +// throw AbstractKeystoreError.invalidAccountError +// } +// } +// +// public func signTX(transaction: inout EthereumTransaction, password: String, account: EthereumAddress) throws { +// if self.address == account { +// guard let pk = try? self.getKeyData(password) else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} +// guard var privateKey = pk else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} +// defer {Data.zero(&privateKey)} +// try Web3AbstractSigner.signTX(transaction: &transaction, privateKey: privateKey) +// } +// else { +// throw AbstractKeystoreError.invalidAccountError +// } +// } +// +// public func signIntermediate(intermediate: TransactionIntermediate, password: String, account: EthereumAddress) throws { +// if self.address == account { +// guard let pk = try? self.getKeyData(password) else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} +// guard var privateKey = pk else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} +// defer {Data.zero(&privateKey)} +// try Web3AbstractSigner.signIntermediate(intermediate: intermediate, privateKey: privateKey) +// } +// else { +// throw AbstractKeystoreError.invalidAccountError +// } +// } +// +// public func signPersonalMessage(_ personalMessage: Data, password: String, account: EthereumAddress) throws -> Data? { +// if self.address == account { +// guard let pk = try? self.getKeyData(password) else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} +// guard var privateKey = pk else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} +// defer {Data.zero(&privateKey)} +// let signature = try Web3AbstractSigner.signPersonalMessage(personalMessage, privateKey: privateKey) +// return signature +// } +// else { +// throw AbstractKeystoreError.invalidAccountError +// } +// } // -------------- private var address: EthereumAddress? diff --git a/web3swift/KeystoreManager/Classes/KeystoreManager.swift b/web3swift/KeystoreManager/Classes/KeystoreManager.swift index a0a12efd..2fcefe45 100644 --- a/web3swift/KeystoreManager/Classes/KeystoreManager.swift +++ b/web3swift/KeystoreManager/Classes/KeystoreManager.swift @@ -24,25 +24,30 @@ public class KeystoreManager: AbstractKeystore { } } - public func signedTX(transaction: EthereumTransaction, password: String, account: EthereumAddress) throws -> EthereumTransaction? { - guard let keystore = self.walletForAddress(account) else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} - return try keystore.signedTX(transaction:transaction, password:password, account:account) + public func UNSAFE_getPrivateKeyData(password: String, account: EthereumAddress) throws -> Data { + guard let keystore = self.walletForAddress(account) else {throw AbstractKeystoreError.invalidAccountError} + return try keystore.UNSAFE_getPrivateKeyData(password: password, account: account) } - public func signTX(transaction: inout EthereumTransaction, password: String, account: EthereumAddress) throws { - guard let keystore = self.walletForAddress(account) else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} - try keystore.signTX(transaction: &transaction, password: password, account: account) - } - - public func signIntermediate(intermediate: TransactionIntermediate, password: String, account: EthereumAddress) throws { - guard let keystore = self.walletForAddress(account) else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} - try keystore.signIntermediate(intermediate:intermediate, password:password, account:account) - } - - public func signPersonalMessage(_ personalMessage: Data, password: String, account: EthereumAddress) throws -> Data? { - guard let keystore = self.walletForAddress(account) else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} - return try keystore.signPersonalMessage(personalMessage, password:password, account:account) - } +// public func signedTX(transaction: EthereumTransaction, password: String, account: EthereumAddress) throws -> EthereumTransaction? { +// guard let keystore = self.walletForAddress(account) else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} +// return try keystore.signedTX(transaction:transaction, password:password, account:account) +// } +// +// public func signTX(transaction: inout EthereumTransaction, password: String, account: EthereumAddress) throws { +// guard let keystore = self.walletForAddress(account) else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} +// try keystore.signTX(transaction: &transaction, password: password, account: account) +// } +// +// public func signIntermediate(intermediate: TransactionIntermediate, password: String, account: EthereumAddress) throws { +// guard let keystore = self.walletForAddress(account) else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} +// try keystore.signIntermediate(intermediate:intermediate, password:password, account:account) +// } +// +// public func signPersonalMessage(_ personalMessage: Data, password: String, account: EthereumAddress) throws -> Data? { +// guard let keystore = self.walletForAddress(account) else {throw AbstractKeystoreError.encryptionError("Failed to sign transaction")} +// return try keystore.signPersonalMessage(personalMessage, password:password, account:account) +// } public static var allManagers = [KeystoreManager]() @@ -54,23 +59,8 @@ public class KeystoreManager: AbstractKeystore { } public static func managerForPath(_ path: String, scanForHDwallets: Bool = false, suffix: String? = nil) -> KeystoreManager? { -// if KeystoreManager.allManagers.count == 0 { - guard let newManager = try? KeystoreManager(path, scanForHDwallets: scanForHDwallets, suffix: suffix), let manager = newManager else {return nil} -// KeystoreManager.allManagers.append(manager) - return manager -// } else { -// let foundManager = KeystoreManager.allManagers.filter({ (manager:KeystoreManager) -> Bool in -// return manager.path == path && manager.isHDKeystore == scanForHDwallets -// }) -// if foundManager.count == 0 { -// guard let newManager = try? KeystoreManager(path, scanForHDwallets: scanForHDwallets, suffix: suffix), let manager = newManager else {return nil} -// KeystoreManager.allManagers.append(manager) -// return manager -// } else if (foundManager.count == 1) { -// return foundManager[0] -// } -// } -// return nil + guard let newManager = try? KeystoreManager(path, scanForHDwallets: scanForHDwallets, suffix: suffix), let manager = newManager else {return nil} + return manager } public var path: String diff --git a/web3swift/Transaction/Classes/EthereumTransaction.swift b/web3swift/Transaction/Classes/EthereumTransaction.swift index e64d1f07..1d45f2a6 100644 --- a/web3swift/Transaction/Classes/EthereumTransaction.swift +++ b/web3swift/Transaction/Classes/EthereumTransaction.swift @@ -21,6 +21,24 @@ public struct EthereumTransaction: CustomStringConvertible { public var s: BigUInt = BigUInt(0) public var chainID: BigUInt? = nil + public var inferedChainID: BigUInt? { + get{ + if (self.r == BigUInt(0) && self.s == BigUInt(0)) { + return self.v + } else if (self.v == BigUInt(27) || self.v == BigUInt(28)) { + return nil + } else { + return ((self.v - BigUInt(1)) / BigUInt(2)) - BigUInt(17) + } + } + } + + public var hash: Data? { + guard let encoded = self.encode(forSignature: false, chainID: self.chainID) else {return nil} + let hash = encoded.sha3(.keccak256) + return hash + } + public init (nonce: BigUInt, to: EthereumAddress, value: BigUInt, data: Data, chainID: BigUInt) { self.nonce = nonce self.to = to @@ -41,22 +59,11 @@ public struct EthereumTransaction: CustomStringConvertible { public init(to: EthereumAddress, data: Data, options: Web3Options) { let defaults = Web3Options.defaultOptions() + let merged = Web3Options.merge(defaults, with: options) self.nonce = BigUInt(0) - if options.gasPrice != nil { - self.gasPrice = options.gasPrice! - } else { - self.gasPrice = defaults.gasPrice! - } - if options.gas != nil { - self.gasLimit = options.gas! - } else { - self.gasLimit = defaults.gas! - } - if options.value != nil { - self.value = options.value! - } else { - self.value = defaults.value! - } + self.gasLimit = merged!.gasLimit! + self.gasPrice = merged!.gasPrice! + self.value = merged!.value! self.to = to self.data = data } @@ -74,18 +81,6 @@ public struct EthereumTransaction: CustomStringConvertible { self.s = s } - public var inferedChainID: BigUInt? { - get{ - if (self.r == BigUInt(0) && self.s == BigUInt(0)) { - return self.v - } else if (self.v == BigUInt(27) || self.v == BigUInt(28)) { - return nil - } else { - return ((self.v - BigUInt(1)) / BigUInt(2)) - BigUInt(17) - } - } - } - public var description: String { get { var toReturn = "" @@ -127,7 +122,7 @@ public struct EthereumTransaction: CustomStringConvertible { guard let rData = r.serialize().setLengthLeft(32) else {return nil} guard let sData = s.serialize().setLengthLeft(32) else {return nil} guard let signatureData = SECP256K1.marshalSignature(v: vData, r: rData, s: sData) else {return nil} - guard let hash = self.hash(forSignature: true, chainID: self.chainID) else {return nil} + guard let hash = self.hashForSignature(chainID: self.chainID) else {return nil} guard let publicKey = SECP256K1.recoverPublicKey(hash: hash, signature: signatureData) else {return nil} return publicKey } @@ -135,7 +130,7 @@ public struct EthereumTransaction: CustomStringConvertible { public var txhash: String? { get{ guard self.sender != nil else {return nil} - guard let hash = self.hash(forSignature: false, chainID: self.chainID) else {return nil} + guard let hash = self.hash else {return nil} let txid = hash.toHexString().addHexPrefix().lowercased() return txid } @@ -187,48 +182,14 @@ public struct EthereumTransaction: CustomStringConvertible { return params } - public func hash(forSignature:Bool = false, chainID: BigUInt? = nil) -> Data? { - guard let encoded = self.encode(forSignature: forSignature, chainID: chainID) else {return nil} + + + public func hashForSignature(chainID: BigUInt? = nil) -> Data? { + guard let encoded = self.encode(forSignature: true, chainID: chainID) else {return nil} let hash = encoded.sha3(.keccak256) return hash } - private mutating func attemptSignature(privateKey: Data, chainID: BigUInt? = nil) -> Bool { - guard let hash = self.hash(forSignature: true, chainID: chainID) else { - return false - } - let signature = SECP256K1.signForRecovery(hash: hash, privateKey: privateKey) - guard let compressedSignature = signature.compressed else {return false} - guard let unmarshalledSignature = SECP256K1.unmarshalSignature(signatureData: compressedSignature) else { - return false - } - if (chainID != nil ) { - self.v = BigUInt(unmarshalledSignature.v) + BigUInt(35) + chainID! + chainID! - } else if (self.chainID != nil ) { - self.v = BigUInt(unmarshalledSignature.v) + BigUInt(35) + self.chainID! + self.chainID! - } else { - self.v = BigUInt(unmarshalledSignature.v) + BigUInt(27) - } - self.r = BigUInt(Data(unmarshalledSignature.r)) - self.s = BigUInt(Data(unmarshalledSignature.s)) - let originalPublicKey = SECP256K1.privateToPublic(privateKey: privateKey) - let recoveredPublicKey = self.recoverPublicKey() - if (originalPublicKey != recoveredPublicKey) { - return false - } - return true - } - - public mutating func sign(privateKey: Data, chainID: BigUInt? = nil) -> Bool { - for _ in 0..<1024 { - let result = self.attemptSignature(privateKey: privateKey, chainID: chainID) - if (result) { - return true - } - } - return false - } - static func fromJSON(_ json: [String: Any]) -> EthereumTransaction? { guard let options = Web3Options.fromJSON(json) else {return nil} guard let toString = json["to"] as? String else {return nil} diff --git a/web3swift/Transaction/Classes/TransactionSigner.swift b/web3swift/Transaction/Classes/TransactionSigner.swift new file mode 100644 index 00000000..7934ff4a --- /dev/null +++ b/web3swift/Transaction/Classes/TransactionSigner.swift @@ -0,0 +1,78 @@ +// +// TransactionSigner.swift +// web3swift-iOS +// +// Created by Alexander Vlasov on 26.02.2018. +// Copyright © 2018 Bankex Foundation. All rights reserved. +// + +import Foundation +import Result +import BigInt + +public enum TransactionSignerError: Error { + case signatureError(String) +} + +public struct EIP155Signer { + public func sign(transaction:inout EthereumTransaction, privateKey: Data) throws { + for _ in 0..<1024 { + let result = self.attemptSignature(transaction: &transaction, privateKey: privateKey) + if (result) { + return + } + } + throw AbstractKeystoreError.invalidAccountError + } + + private func attemptSignature(transaction:inout EthereumTransaction, privateKey: Data) -> Bool { + guard let chainID = transaction.chainID else {return false} + guard let hash = transaction.hashForSignature(chainID: chainID) else {return false} + let signature = SECP256K1.signForRecovery(hash: hash, privateKey: privateKey) + guard let compressedSignature = signature.compressed else {return false} + guard let unmarshalledSignature = SECP256K1.unmarshalSignature(signatureData: compressedSignature) else { + return false + } + let originalPublicKey = SECP256K1.privateToPublic(privateKey: privateKey) + transaction.v = BigUInt(unmarshalledSignature.v) + BigUInt(35) + chainID + chainID + transaction.r = BigUInt(Data(unmarshalledSignature.r)) + transaction.s = BigUInt(Data(unmarshalledSignature.s)) + let recoveredPublicKey = transaction.recoverPublicKey() + if (!(originalPublicKey!.constantTimeComparisonTo(recoveredPublicKey))) { + return false + } + return true + } +} + +public struct FallbackSigner { + public func sign(transaction:inout EthereumTransaction, privateKey: Data) throws { + for _ in 0..<1024 { + let result = self.attemptSignature(transaction: &transaction, privateKey: privateKey) + if (result) { + return + } + } + throw AbstractKeystoreError.invalidAccountError + } + + private func attemptSignature(transaction:inout EthereumTransaction, privateKey: Data) -> Bool { + guard let hash = transaction.hashForSignature(chainID: nil) else {return false} + let signature = SECP256K1.signForRecovery(hash: hash, privateKey: privateKey) + guard let compressedSignature = signature.compressed else {return false} + guard let unmarshalledSignature = SECP256K1.unmarshalSignature(signatureData: compressedSignature) else { + return false + } + let originalPublicKey = SECP256K1.privateToPublic(privateKey: privateKey) + transaction.chainID = nil + transaction.v = BigUInt(unmarshalledSignature.v) + BigUInt(27) + transaction.r = BigUInt(Data(unmarshalledSignature.r)) + transaction.s = BigUInt(Data(unmarshalledSignature.s)) + let recoveredPublicKey = transaction.recoverPublicKey() + if (!(originalPublicKey!.constantTimeComparisonTo(recoveredPublicKey))) { + return false + } + return true + } +} + diff --git a/web3swift/Utils/Classes/LibSecp256k1Extension.swift b/web3swift/Utils/Classes/LibSecp256k1Extension.swift index 8ddfbe13..ed335bbd 100644 --- a/web3swift/Utils/Classes/LibSecp256k1Extension.swift +++ b/web3swift/Utils/Classes/LibSecp256k1Extension.swift @@ -45,7 +45,6 @@ extension SECP256K1 { } if result == 0 { continue -// return (nil, nil) } let uncompressedSignature = Data(toByteArray(uncompressed)) var compressedSignature = Data(count: 64) @@ -56,7 +55,6 @@ extension SECP256K1 { } if result == 0 { continue -// return (nil, nil) } let buffer = toByteArray(v) compressedSignature.append(buffer.last!) diff --git a/web3swift/Web3/Classes/Web3+AbstractSigner.swift b/web3swift/Web3/Classes/Web3+AbstractSigner.swift new file mode 100644 index 00000000..23a1c2be --- /dev/null +++ b/web3swift/Web3/Classes/Web3+AbstractSigner.swift @@ -0,0 +1,35 @@ +// +// Web3Swift+AbstractSigner.swift +// web3swift +// +// Created by Alexander Vlasov on 15.01.2018. +// Copyright © 2018 Bankex Foundation. All rights reserved. +// + +import Foundation + +public struct Web3Signer { +// public func + + public static func signTX(transaction:inout EthereumTransaction, keystore: AbstractKeystore, account: EthereumAddress, password: String) throws { + let privateKey = try keystore.UNSAFE_getPrivateKeyData(password: password, account: account) + if (transaction.chainID != nil) { + let signer = EIP155Signer() + try signer.sign(transaction: &transaction, privateKey: privateKey) + } else { + let signer = FallbackSigner() + try signer.sign(transaction: &transaction, privateKey: privateKey) + } + } + public static func signIntermediate(intermediate:inout TransactionIntermediate, keystore: AbstractKeystore, account: EthereumAddress, password: String) throws { + var tx = intermediate.transaction + try Web3Signer.signTX(transaction: &tx, keystore: keystore, account: account, password: password) + intermediate.transaction = tx + } + public static func signPersonalMessage(_ personalMessage: Data, keystore: AbstractKeystore, account: EthereumAddress, password: String) throws -> Data? { + let privateKey = try keystore.UNSAFE_getPrivateKeyData(password: password, account: account) + guard let hash = Web3.Utils.hashPersonalMessage(personalMessage) else {return nil} + let (compressedSignature, _) = SECP256K1.signForRecovery(hash: hash, privateKey: privateKey) + return compressedSignature + } +} diff --git a/web3swift/Web3/Classes/Web3+Contract.swift b/web3swift/Web3/Classes/Web3+Contract.swift new file mode 100644 index 00000000..2aef6e9f --- /dev/null +++ b/web3swift/Web3/Classes/Web3+Contract.swift @@ -0,0 +1,68 @@ + +// Web3+Contract.swift +// web3swift +// +// Created by Alexander Vlasov on 19.12.2017. +// Copyright © 2017 Bankex Foundation. All rights reserved. +// + +import Foundation +import Alamofire +import BigInt + +extension web3 { + + public func contract(_ abiString: String, at: EthereumAddress? = nil) -> web3contract? { + return web3contract(web3: self, abiString: abiString, at: at, options: self.options) + } + + public class web3contract { + var contract: Contract + var web3 : web3 + public var options: Web3Options? = nil + + public init?(web3 web3Instance:web3, abiString: String, at: EthereumAddress? = nil, options: Web3Options? = nil) { + do { + self.web3 = web3Instance + self.options = web3.options + let jsonData = abiString.data(using: .utf8) + let abi = try JSONDecoder().decode([ABIRecord].self, from: jsonData!) + let abiNative = try abi.map({ (record) -> ABIElement in + return try record.parse() + }) + var mergedOptions = Web3Options.merge(self.options, with: options) + contract = Contract(abi: abiNative) + if at != nil { + contract.address = at + mergedOptions?.to = at + } else if let addr = mergedOptions?.to { + contract.address = addr + } + self.options = mergedOptions + if contract.address == nil { + return nil + } + } + catch{ + print(error) + return nil + } + } + + public func method(_ method:String = "fallback", parameters: [AnyObject] = [AnyObject](), extraData: Data = Data(), options: Web3Options?) -> TransactionIntermediate? { + + let mergedOptions = Web3Options.merge(self.options, with: options) + guard var tx = self.contract.method(method, parameters: parameters, extraData: extraData, options: mergedOptions) else {return nil} + tx.chainID = self.web3.provider.network?.chainID + let intermediate = TransactionIntermediate(transaction: tx, web3: self.web3, contract: self.contract, method: method, options: mergedOptions) + return intermediate + } + + public func parseEvent(_ eventLog: EventLog) -> (eventName:String?, eventData:[String:Any]?) { + return self.contract.parseEvent(eventLog) + } + + + + } +} diff --git a/web3swift/Web3/Classes/Web3+Eth.swift b/web3swift/Web3/Classes/Web3+Eth.swift new file mode 100644 index 00000000..12634eb4 --- /dev/null +++ b/web3swift/Web3/Classes/Web3+Eth.swift @@ -0,0 +1,221 @@ +// +// Web3+Eth.swift +// web3swift +// +// Created by Alexander Vlasov on 22.12.2017. +// Copyright © 2017 Bankex Foundation. All rights reserved. +// + +import Foundation +import BigInt +import Result + +extension web3.Eth { + + func sendRawTransaction(_ transaction: EthereumTransaction) -> Result<[String: String], Web3Error> { + print(transaction) + guard let request = EthereumTransaction.createRawTransaction(transaction: transaction) else {return Result.failure(Web3Error.transactionSerializationError)} + let response = self.provider.send(request: request) + let result = ResultUnwrapper.getResponse(response) + switch result { + case .failure(let error): + return Result.failure(error) + case .success(let payload): + guard let resultString = payload as? String else { + return Result.failure(Web3Error.dataError) + } + let hash = resultString.addHexPrefix().lowercased() + return Result(["txhash": hash, "txhashCalculated" : transaction.hash!.toHexString()] as [String: String]) + } + + } + + public func getTransactionCount(address: EthereumAddress, onBlock: String = "latest") -> Result { + guard address.isValid else { + return Result.failure(Web3Error.inputError("Please check the supplied address")) + } + var request = JSONRPCrequest() + request.method = JSONRPCmethod.getTransactionCount + let params = [address.address.lowercased(), onBlock] as Array + let pars = JSONRPCparams(params: params) + request.params = pars + let response = self.provider.send(request: request) + let result = ResultUnwrapper.getResponse(response) + switch result { + case .failure(let error): + return Result.failure(error) + case .success(let payload): + guard let resultString = payload as? String else { + return Result.failure(Web3Error.dataError) + } + guard let biguint = BigUInt(resultString.stripHexPrefix().lowercased(), radix: 16) else { + return Result.failure(Web3Error.dataError) + } + return Result(biguint) + } + } + + public func getBalance(address: EthereumAddress, onBlock: String = "latest") -> Result { + guard address.isValid else { + return Result.failure(Web3Error.inputError("Please check the supplied address")) + } + var request = JSONRPCrequest() + request.method = JSONRPCmethod.getBalance + let params = [address.address.lowercased(), onBlock] as Array + let pars = JSONRPCparams(params: params) + request.params = pars + let response = self.provider.send(request: request) + let result = ResultUnwrapper.getResponse(response) + switch result { + case .failure(let error): + return Result.failure(error) + case .success(let payload): + guard let resultString = payload as? String else { + return Result.failure(Web3Error.dataError) + } + guard let biguint = BigUInt(resultString.stripHexPrefix().lowercased(), radix: 16) else { + return Result.failure(Web3Error.dataError) + } + return Result(biguint) + } + } + + public func getBlockNumber() -> Result { + var request = JSONRPCrequest() + request.method = JSONRPCmethod.blockNumber + let params = [] as Array + let pars = JSONRPCparams(params: params) + request.params = pars + let response = self.provider.send(request: request) + let result = ResultUnwrapper.getResponse(response) + switch result { + case .failure(let error): + return Result.failure(error) + case .success(let payload): + guard let resultString = payload as? String else { + return Result.failure(Web3Error.dataError) + } + guard let biguint = BigUInt(resultString.stripHexPrefix().lowercased(), radix: 16) else { + return Result.failure(Web3Error.dataError) + } + return Result(biguint) + } + } + + public func getGasPrice() -> Result { + var request = JSONRPCrequest() + request.method = JSONRPCmethod.gasPrice + let params = [] as Array + let pars = JSONRPCparams(params: params) + request.params = pars + let response = self.provider.send(request: request) + let result = ResultUnwrapper.getResponse(response) + switch result { + case .failure(let error): + return Result.failure(error) + case .success(let payload): + guard let resultString = payload as? String else { + return Result.failure(Web3Error.dataError) + } + guard let biguint = BigUInt(resultString.stripHexPrefix().lowercased(), radix: 16) else { + return Result.failure(Web3Error.dataError) + } + return Result(biguint) + } + } + + public func getTransactionDetails(_ txhash: String) -> Result { + var request = JSONRPCrequest() + request.method = JSONRPCmethod.getTransactionByHash + let params = [txhash] as Array + let pars = JSONRPCparams(params: params) + request.params = pars + let response = self.provider.send(request: request) + let result = ResultUnwrapper.getResponse(response) + switch result { + case .failure(let error): + return Result.failure(error) + case .success(let payload): + guard let resultJSON = payload as? [String: Any] else { + return Result.failure(Web3Error.dataError) + } + guard let details = TransactionDetails(resultJSON) else { + return Result.failure(Web3Error.dataError) + } + return Result(details) + } + } + + public func getTransactionReceipt(_ txhash: String) -> Result { + var request = JSONRPCrequest() + request.method = JSONRPCmethod.getTransactionReceipt + let params = [txhash] as Array + let pars = JSONRPCparams(params: params) + request.params = pars + let response = self.provider.send(request: request) + let result = ResultUnwrapper.getResponse(response) + switch result { + case .failure(let error): + return Result.failure(error) + case .success(let payload): + guard let resultJSON = payload as? [String: Any] else { + return Result.failure(Web3Error.dataError) + } + guard let details = TransactionReceipt(resultJSON) else { + return Result.failure(Web3Error.dataError) + } + return Result(details) + } + } + + public func estimateGas(_ transaction: EthereumTransaction, options: Web3Options?) -> Result { + let mergedOptions = Web3Options.merge(Web3Options.defaultOptions(), with: options) + guard let request = EthereumTransaction.createRequest(method: JSONRPCmethod.estimateGas, transaction: transaction, onBlock: nil, options: mergedOptions) else { + return Result.failure(Web3Error.inputError("Transaction serialization failed")) + } + let response = self.provider.send(request: request) + let result = ResultUnwrapper.getResponse(response) + switch result { + case .failure(let error): + return Result.failure(error) + case .success(let payload): + guard let resultString = payload as? String else { + return Result.failure(Web3Error.dataError) + } + guard let biguint = BigUInt(resultString.stripHexPrefix().lowercased(), radix: 16) else { + return Result.failure(Web3Error.dataError) + } + return Result(biguint) + } + } + + public func getAccounts() -> Result<[EthereumAddress],Web3Error> { +// if (self.provider.attachedKeystoreManager != nil) { +// return Result(self.provider.attachedKeystoreManager?.addresses) +// } + var request = JSONRPCrequest() + request.method = JSONRPCmethod.getAccounts + let params = [] as Array + let pars = JSONRPCparams(params: params) + request.params = pars + let response = self.provider.send(request: request) + let result = ResultUnwrapper.getResponse(response) + switch result { + case .failure(let error): + return Result.failure(error) + case .success(let payload): + guard let resultArray = payload as? [String] else { + return Result.failure(Web3Error.dataError) + } + var toReturn = [EthereumAddress]() + for addrString in resultArray { + let addr = EthereumAddress(addrString) + if (addr.isValid) { + toReturn.append(addr) + } + } + return Result(toReturn) + } + } + +} diff --git a/web3swift/Web3/Classes/Web3+HttpProvider.swift b/web3swift/Web3/Classes/Web3+HttpProvider.swift new file mode 100644 index 00000000..364b592e --- /dev/null +++ b/web3swift/Web3/Classes/Web3+HttpProvider.swift @@ -0,0 +1,76 @@ +// +// Web3+Provider.swift +// web3swift +// +// Created by Alexander Vlasov on 19.12.2017. +// Copyright © 2017 Bankex Foundation. All rights reserved. +// + +import Foundation +import Alamofire +import Alamofire_Synchronous +import BigInt + +public class Web3HttpProvider: Web3Provider { + public var url: URL + public var network: Networks? + public var attachedKeystoreManager: KeystoreManager? = nil + + public init?(_ httpProviderURL: URL, network net: Networks? = nil, keystoreManager manager: KeystoreManager? = nil) { + guard httpProviderURL.scheme == "http" || httpProviderURL.scheme == "https" else {return nil} + url = httpProviderURL + if net == nil { + var request = JSONRPCrequest() + request.method = JSONRPCmethod.getNetwork + let params = [] as Array + let pars = JSONRPCparams(params: params) + request.params = pars + let response = Web3HttpProvider.syncPost(request, providerURL: httpProviderURL) + if response == nil { + return nil + } + guard let res = response as? [String: Any] else {return nil} + if let error = res["error"] as? String { + print(error as String) + return nil + } + guard let result = res["result"] as? String, let intNetworkNumber = Int(result) else {return nil} + network = Networks.fromInt(intNetworkNumber) + if network == nil {return nil} + } else { + network = net + } + attachedKeystoreManager = manager + } + + public func send(request: JSONRPCrequest) -> [String: Any]? { + if request.method == nil { + return nil + } + guard let response = self.syncPost(request) else {return nil} + guard let res = response as? [String: Any] else {return nil} + print(res) + return res + } + + internal func syncPost(_ request: JSONRPCrequest) -> Any? { + return Web3HttpProvider.syncPost(request, providerURL: self.url) + } + + static func syncPost(_ request: JSONRPCrequest, providerURL: URL) -> Any? { + guard let _ = try? JSONEncoder().encode(request) else {return nil} + let headers: HTTPHeaders = [ + "Content-Type": "application/json", + "Accept": "application/json" + ] + let response = Alamofire.request(providerURL, method: .post, parameters: nil, encoding: request, headers: headers).responseJSON() + switch response.result { + case .success(let resp): + return resp + case .failure(let err): + print(err) + return nil + } + } +} + diff --git a/web3swift/Web3/Classes/Web3+Infura.swift b/web3swift/Web3/Classes/Web3+Infura.swift new file mode 100644 index 00000000..531fdf8e --- /dev/null +++ b/web3swift/Web3/Classes/Web3+Infura.swift @@ -0,0 +1,108 @@ +// +// Web3+Provider.swift +// web3swift +// +// Created by Alexander Vlasov on 19.12.2017. +// Copyright © 2017 Bankex Foundation. All rights reserved. +// + +import Foundation +import Alamofire +import Alamofire_Synchronous +import BigInt + +public class InfuraProvider: Web3HttpProvider { + public init?(_ net:Networks, accessToken token: String? = nil, keystoreManager manager: KeystoreManager? = nil) { + var requestURLstring = "https://" + net.name + ".infura.io/" + if token != nil { + requestURLstring = requestURLstring + token! + } + let providerURL = URL(string: requestURLstring) + super.init(providerURL!, network: net, keystoreManager: manager) + } + + enum supportedPostMethods: String { + case eth_estimateGas = "eth_estimateGas" + case eth_sendRawTransaction = "eth_sendRawTransaction" + } + + enum supportedGetMethods: String{ + case eth_call = "eth_call" + case eth_getTransactionCount = "eth_getTransactionCount" + } + +// public func send(request: JSONRPCrequest) -> Promise<[String: Any]?> { +// return async { +// if request.method == nil { +// return nil +// } +// let response = try await(self.postToInfura(request)!) +// guard let res = response as? [String: Any] else {return nil} +// print(res) +// return res +// } +// } + +// public func sendSync(request: JSONRPCrequest) -> [String: Any]? { +// if request.method == nil { +// return nil +// } +// guard let response = self.syncPostToInfura(request) else {return nil} +// guard let res = response as? [String: Any] else {return nil} +// print(res) +// return res +// } +// +// internal func syncPostToInfura(_ request: JSONRPCrequest) -> Any? { +// guard let network = self.network else {return nil} +// var requestURL = "https://" + network.name + ".infura.io/" +// if self.accessToken != nil { +// requestURL = requestURL + self.accessToken! +// } +// guard let _ = try? JSONEncoder().encode(request) else {return nil} +// let headers: HTTPHeaders = [ +// "Content-Type": "application/json", +// "Accept": "application/json" +// ] +// let response = Alamofire.request(requestURL, method: .post, parameters: nil, encoding: request, headers: headers).responseJSON() +// switch response.result { +// case .success(let resp): +// return resp +// case .failure(let err): +// print(err) +// return nil +// } +// } + + +// internal func getToInfura(_ request: JSONRPCrequest) -> Promise? { +// guard request.isValid else {return nil} +// guard let method = request.method else {return nil} +// let requestURL = "https://api.infura.io/v1/jsonrpc/"+(self.network?.name)!+"/"+method.rawValue +// guard let pars = request.params else {return nil} +// guard let encoded = try? JSONEncoder().encode(pars) else {return nil} +// guard let serialized = String(data: encoded, encoding: .utf8) else {return nil} +// var requestParameters = ["params" : serialized as Any] +// if self.accessToken != nil { +// requestParameters["token"] = self.accessToken! +// } +// return Alamofire.request(requestURL, parameters: requestParameters, encoding: URLEncoding.default).responseJSON() +// } +// +// internal func postToInfura(_ request: JSONRPCrequest) -> Promise? { +//// let requestURL = "https://api.infura.io/v1/jsonrpc/"+network.name +// var requestURL = "https://"+(self.network?.name)! + ".infura.io/" +// if self.accessToken != nil { +// requestURL = requestURL + self.accessToken! +// } +// guard let _ = try? JSONEncoder().encode(request) else {return nil} +//// print(String(data: requestJSON, encoding: .utf8)) +// let headers: HTTPHeaders = [ +// "Content-Type": "application/json", +// "Accept": "application/json" +// ] +// return Alamofire.request(requestURL, method: .post, parameters: nil, encoding: request, headers: headers).responseJSON() +// } + +} + diff --git a/web3swift/Web3/Classes/Web3+Instance.swift b/web3swift/Web3/Classes/Web3+Instance.swift new file mode 100644 index 00000000..40ae1d6e --- /dev/null +++ b/web3swift/Web3/Classes/Web3+Instance.swift @@ -0,0 +1,78 @@ +// +// Web3+Instance.swift +// web3swift +// +// Created by Alexander Vlasov on 19.12.2017. +// Copyright © 2017 Bankex Foundation. All rights reserved. +// + +import Foundation +import BigInt + +public class web3: Web3OptionsInheritable { + public var provider : Web3Provider + public var options : Web3Options = Web3Options.defaultOptions() + public func send(request: JSONRPCrequest) -> [String: Any]? { + return self.provider.send(request: request) + } + + public init(provider prov: Web3Provider) { + provider = prov + } + public func addKeystoreManager(_ manager: KeystoreManager?) { + self.provider.attachedKeystoreManager = manager + } + + var ethInstance: web3.Eth? + public var eth: web3.Eth { + if (self.ethInstance != nil) { + return self.ethInstance! + } + self.ethInstance = web3.Eth(provider : self.provider) + return self.ethInstance! + } + + public class Eth { + var provider:Web3Provider + public init(provider prov: Web3Provider) { + provider = prov + } + } + + var walletInstance: web3.Web3Wallet? + public var wallet: web3.Web3Wallet { + if (self.walletInstance != nil) { + return self.walletInstance! + } + self.walletInstance = web3.Web3Wallet(provider : self.provider, web3: self) + return self.walletInstance! + } + + public class Web3Wallet { + var provider:Web3Provider + weak var web3: web3? + public init(provider prov: Web3Provider, web3 web3instance: web3) { + provider = prov + web3 = web3instance + } + } + + var browserFunctionsInstance: web3.BrowserFunctions? + public var browserFunctionsFunctions: web3.BrowserFunctions { + if (self.browserFunctionsInstance != nil) { + return self.browserFunctionsInstance! + } + self.browserFunctionsInstance = web3.BrowserFunctions(provider : self.provider, web3: self) + return self.browserFunctionsInstance! + } + + public class BrowserFunctions { + var provider:Web3Provider + weak var web3: web3? + public init(provider prov: Web3Provider, web3 web3instance: web3) { + provider = prov + web3 = web3instance + } + } + +} diff --git a/web3swift/Web3/Classes/Web3+JSONRPC.swift b/web3swift/Web3/Classes/Web3+JSONRPC.swift new file mode 100644 index 00000000..19baa19e --- /dev/null +++ b/web3swift/Web3/Classes/Web3+JSONRPC.swift @@ -0,0 +1,79 @@ +// +// Web3+JSONRPC.swift +// web3swift +// +// Created by Alexander Vlasov on 21.12.2017. +// Copyright © 2017 Bankex Foundation. All rights reserved. +// + +import Foundation +import Alamofire + +public struct JSONRPCrequest: Encodable, ParameterEncoding { + var jsonrpc: String = "2.0" + var method: JSONRPCmethod? + var params: JSONRPCparams? + var id: Int = Int(floor(Date().timeIntervalSince1970)) + + enum CodingKeys: String, CodingKey { + case jsonrpc + case method + case params + case id + } + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encode(jsonrpc, forKey: .jsonrpc) + try container.encode(method?.rawValue, forKey: .method) + try container.encode(params, forKey: .params) + try container.encode(id, forKey: .id) + } + + public func encode(_ urlRequest: URLRequestConvertible, with parameters: Parameters?) throws -> URLRequest { + let jsonSerialization = try JSONEncoder().encode(self) + var request = try urlRequest.asURLRequest() + request.httpBody = jsonSerialization + return request + } + + public var isValid: Bool { + get { + if self.method == nil { + return false + } + guard let method = self.method else {return false} + return method.requiredNumOfParameter == self.params?.params.count + } + } +} + + +public struct TransactionParameters: Codable { + public var data: String? + public var from: String + public var gas: String? + public var gasPrice: String? + public var to: String + public var value: String? = "0x0" + + public init(from _from:String, to _to:String) { + from = _from + to = _to + } +} + +public struct JSONRPCparams: Encodable{ + public var params = [Any]() + + public func encode(to encoder: Encoder) throws { + var container = encoder.unkeyedContainer() + for par in params { + if let p = par as? TransactionParameters { + try container.encode(p) + } else if let p = par as? String { + try container.encode(p) + } + } + } +} diff --git a/web3swift/Web3/Classes/Web3+Methods.swift b/web3swift/Web3/Classes/Web3+Methods.swift new file mode 100644 index 00000000..697e6b6a --- /dev/null +++ b/web3swift/Web3/Classes/Web3+Methods.swift @@ -0,0 +1,53 @@ +// +// Web3+Methods.swift +// web3swift +// +// Created by Alexander Vlasov on 21.12.2017. +// Copyright © 2017 Bankex Foundation. All rights reserved. +// + +import Foundation + +public enum JSONRPCmethod: String, Encodable { + + case gasPrice = "eth_gasPrice" + case blockNumber = "eth_blockNumber" + case getNetwork = "net_version" + case sendRawTransaction = "eth_sendRawTransaction" + case estimateGas = "eth_estimateGas" + case call = "eth_call" + case getTransactionCount = "eth_getTransactionCount" + case getBalance = "eth_getBalance" + case getCode = "eth_getCode" + case getStorageAt = "eth_getStorageAt" + case getTransactionByHash = "eth_getTransactionByHash" + case getTransactionReceipt = "eth_getTransactionReceipt" + case getAccounts = "eth_accounts" + + public var requiredNumOfParameter: Int { + get { + switch self { + case .call: + return 2 + case .getTransactionCount: + return 2 + case .getBalance: + return 2 + case .getStorageAt: + return 2 + case .getCode: + return 2 + case .gasPrice: + return 0 + case .blockNumber: + return 0 + case .getNetwork: + return 0 + case .getAccounts: + return 0 + default: + return 1 + } + } + } +} diff --git a/web3swift/Web3/Classes/Web3+Options.swift b/web3swift/Web3/Classes/Web3+Options.swift new file mode 100644 index 00000000..72c7277d --- /dev/null +++ b/web3swift/Web3/Classes/Web3+Options.swift @@ -0,0 +1,86 @@ +// +// Web3+Options.swift +// web3swift-iOS +// +// Created by Alexander Vlasov on 26.02.2018. +// Copyright © 2018 Bankex Foundation. All rights reserved. +// + +import Foundation +import BigInt + +public protocol Web3OptionsInheritable { + var options: Web3Options {get} +} + +public struct Web3Options { + public var to: EthereumAddress? = nil + public var from: EthereumAddress? = nil + public var gasLimit: BigUInt? = nil + public var gasPrice: BigUInt? = nil + public var value: BigUInt? = nil + + public init() { + } + + public static func defaultOptions() -> Web3Options{ + var options = Web3Options() + options.gasLimit = BigUInt("90000", radix: 10)! + options.gasPrice = BigUInt("5000000000", radix:10)! + options.value = BigUInt(0) + return options + } + + public static func fromJSON(_ json: [String: Any]) -> Web3Options? { + var options = Web3Options() + if let gas = json["gas"] as? String, let gasBiguint = BigUInt(gas.stripHexPrefix().lowercased(), radix: 16) { + options.gasLimit = gasBiguint + } + if let gasPrice = json["gasPrice"] as? String, let gasPriceBiguint = BigUInt(gasPrice.stripHexPrefix().lowercased(), radix: 16) { + options.gasLimit = gasPriceBiguint + } + if let value = json["value"] as? String, let valueBiguint = BigUInt(value.stripHexPrefix().lowercased(), radix: 16) { + options.value = valueBiguint + } + if let fromString = json["from"] as? String { + let addressFrom = EthereumAddress(fromString) + if addressFrom.isValid { + options.from = addressFrom + } + } + return options + } + + public static func merge(_ options:Web3Options?, with other:Web3Options?) -> Web3Options? { + if (other == nil && options == nil) { + return Web3Options.defaultOptions() + } + var newOptions = Web3Options.defaultOptions() + if (other?.to != nil) { + newOptions.to = other?.to + } else { + newOptions.to = options?.to + } + if (other?.from != nil) { + newOptions.from = other?.from + } else { + newOptions.from = options?.from + } + if (other?.gasLimit != nil) { + newOptions.gasLimit = other?.gasLimit + } else { + newOptions.gasLimit = options?.gasLimit + } + if (other?.gasPrice != nil) { + newOptions.gasPrice = other?.gasPrice + } else { + newOptions.gasPrice = options?.gasPrice + } + if (other?.value != nil) { + newOptions.value = other?.value + } else { + newOptions.value = options?.value + } + return newOptions + } +} diff --git a/web3swift/Web3/Classes/Web3+Protocols.swift b/web3swift/Web3/Classes/Web3+Protocols.swift new file mode 100644 index 00000000..db102102 --- /dev/null +++ b/web3swift/Web3/Classes/Web3+Protocols.swift @@ -0,0 +1,62 @@ +// +// Web3+Protocols.swift +// web3swift-iOS +// +// Created by Alexander Vlasov on 26.02.2018. +// Copyright © 2018 Bankex Foundation. All rights reserved. +// + +import Foundation +import BigInt + +public protocol Web3Provider { + func send(request: JSONRPCrequest) -> [String:Any]? + var network: Networks? {get} + var attachedKeystoreManager: KeystoreManager? {get set} + var url: URL {get} +} + +public enum Networks { + case Rinkeby + case Mainnet + case Ropsten + case Kovan + case Custom(networkID: BigUInt) + + var name: String { + switch self { + case .Rinkeby: return "rinkeby" + case .Ropsten: return "ropsten" + case .Mainnet: return "mainnet" + case .Kovan: return "kovan" + case .Custom: return "" + } + } + + var chainID: BigUInt { + switch self { + case .Custom(let networkID): return networkID + case .Mainnet: return BigUInt(1) + case .Ropsten: return BigUInt(3) + case .Rinkeby: return BigUInt(4) + case .Kovan: return BigUInt(42) + } + } + + static let allValues = [Mainnet, Ropsten, Kovan, Rinkeby] + + static func fromInt(_ networkID:Int) -> Networks? { + switch networkID { + case 1: + return Networks.Mainnet + case 3: + return Networks.Ropsten + case 4: + return Networks.Rinkeby + case 42: + return Networks.Kovan + default: + return Networks.Custom(networkID: BigUInt(networkID)) + } + } +} diff --git a/web3swift/Web3/Classes/Web3+Structures.swift b/web3swift/Web3/Classes/Web3+Structures.swift new file mode 100644 index 00000000..1e7e1ea5 --- /dev/null +++ b/web3swift/Web3/Classes/Web3+Structures.swift @@ -0,0 +1,140 @@ +// +// Web3+Structures.swift +// Alamofire +// +// Created by Alexander Vlasov on 26.12.2017. +// + +import Foundation +import BigInt + +public struct TransactionDetails { + public var hash: String + public var nonce: BigUInt + public var blockHash: String? + public var blockNumber: BigUInt? + public var transactionIndex: BigUInt? + public var from: EthereumAddress + public var to: EthereumAddress + public var value: BigUInt + public var gas: BigUInt + public var gasPrice: BigUInt + public var input: Data + + public init? (_ json: [String: Any]) { + guard let h = json["hash"] as? String else {return nil} + guard let n = json["nonce"] as? String else {return nil} + let bh = json["blockHash"] as? String + let bn = json["blockNumber"] as? String + let ti = json["transactionIndex"] as? String + guard let f = json["from"] as? String else {return nil} + guard let t = json["to"] as? String else {return nil} + guard let v = json["value"] as? String else {return nil} + guard let g = json["gas"] as? String else {return nil} + guard let gp = json["gasPrice"] as? String else {return nil} + guard let i = json["input"] as? String else {return nil} + + hash = h + guard let nUnwrapped = BigUInt(n.stripHexPrefix(), radix: 16) else {return nil} + nonce = nUnwrapped + blockHash = bh + if bn != nil { + blockNumber = BigUInt(bn!.stripHexPrefix(), radix: 16) + } + if ti != nil { + transactionIndex = BigUInt(ti!.stripHexPrefix(), radix: 16) + } + + from = EthereumAddress(f) + to = EthereumAddress(t) + guard let vUnwrapped = BigUInt(v.stripHexPrefix(), radix: 16) else {return nil} + guard let gUnwrapped = BigUInt(g.stripHexPrefix(), radix: 16) else {return nil} + guard let gpUnwrapped = BigUInt(gp.stripHexPrefix(), radix: 16) else {return nil} + value = vUnwrapped + gas = gUnwrapped + gasPrice = gpUnwrapped + input = Data(Array(hex: i.lowercased().stripHexPrefix())) + } +} + +public struct TransactionReceipt { + public var transactionHash: String + public var blockHash: String + public var blockNumber: BigUInt + public var transactionIndex: BigUInt + public var contractAddress: EthereumAddress? + public var cumulativeGasUsed: BigUInt + public var gasUsed: BigUInt + public var logs: [EventLog] + public var status: TXStatus + + public enum TXStatus { + case ok + case failed + } + + public init? (_ json: [String: Any]) { + guard let h = json["transactionHash"] as? String else {return nil} + guard let bh = json["blockHash"] as? String else {return nil} + guard let bn = json["blockNumber"] as? String else {return nil} + guard let ti = json["transactionIndex"] as? String else {return nil} + let ca = json["contractAddress"] as? String + guard let cgu = json["cumulativeGasUsed"] as? String else {return nil} + guard let gu = json["gasUsed"] as? String else {return nil} + guard let ls = json["logs"] as? Array<[String:Any]> else {return nil} + guard let st = json["status"] as? String else {return nil} + + transactionHash = h + blockHash = bh + guard let bnUnwrapped = BigUInt(bn.stripHexPrefix(), radix: 16) else {return nil} + blockNumber = bnUnwrapped + guard let tiUnwrapped = BigUInt(ti.stripHexPrefix(), radix: 16) else {return nil} + transactionIndex = tiUnwrapped + if ca != nil { + contractAddress = EthereumAddress(ca!.addHexPrefix()) + } + guard let cguUnwrapped = BigUInt(cgu.stripHexPrefix(), radix: 16) else {return nil} + cumulativeGasUsed = cguUnwrapped + guard let guUnwrapped = BigUInt(gu.stripHexPrefix(), radix: 16) else {return nil} + gasUsed = guUnwrapped + var allLogs = [EventLog]() + for l in ls { + guard let log = EventLog(l) else {return nil} + allLogs.append(log) + } + logs = allLogs + if st == "0x1" { + status = TXStatus.ok + } else { + status = TXStatus.failed + } + } +} + +public struct EventLog { + public var address: EthereumAddress + public var data: Data + public var logIndex: BigUInt + public var removed: Bool + public var topics: [Data] + + public init? (_ json: [String: Any]) { + guard let ad = json["address"] as? String else {return nil} + guard let d = json["data"] as? String else {return nil} + guard let li = json["logIndex"] as? String else {return nil} + guard let rm = json["removed"] as? Int else {return nil} + guard let tpc = json["topics"] as? [String] else {return nil} + address = EthereumAddress(ad) + data = Data.fromHex(d)! + guard let liUnwrapped = BigUInt(li.stripHexPrefix(), radix: 16) else {return nil} + logIndex = liUnwrapped + removed = rm == 1 ? true : false + var tops = [Data]() + for t in tpc { + let topic = Data(Array(hex: t.lowercased().stripHexPrefix())) + tops.append(topic) + } + topics = tops + } +} + diff --git a/web3swift/Web3/Classes/Web3+TransactionIntermediate.swift b/web3swift/Web3/Classes/Web3+TransactionIntermediate.swift new file mode 100644 index 00000000..f610f1c7 --- /dev/null +++ b/web3swift/Web3/Classes/Web3+TransactionIntermediate.swift @@ -0,0 +1,140 @@ +// +// Web3+TransactionIntermediate.swift +// web3swift-iOS +// +// Created by Alexander Vlasov on 26.02.2018. +// Copyright © 2018 Bankex Foundation. All rights reserved. +// + +import Foundation +import Result +import BigInt + +extension web3.web3contract { + + public class TransactionIntermediate{ + public var transaction:EthereumTransaction + public var contract: Contract + public var method: String + public var options: Web3Options? = Web3Options.defaultOptions() + var web3: web3 + public init (transaction: EthereumTransaction, web3 web3Instance: web3, contract: Contract, method: String, options: Web3Options?) { + self.transaction = transaction + self.web3 = web3Instance + self.contract = contract + self.contract.options = options + self.method = method + self.options = Web3Options.merge(web3.options, with: options) + if self.web3.provider.network != nil { + self.transaction.chainID = self.web3.provider.network?.chainID + } + } + + public func setNonce(_ nonce: BigUInt) throws { + self.transaction.nonce = nonce + if (self.web3.provider.network != nil) { + self.transaction.chainID = self.web3.provider.network?.chainID + } + } + + // public func sign(_ privateKey: Data, network: Networks? = nil) throws { + // if (network != nil) { + // self.transaction.chainID = network?.chainID + // } else if (self.web3.provider.network != nil) { + // self.transaction.chainID = self.web3.provider.network?.chainID + // } + // let _ = self.transaction.sign(privateKey: privateKey) + // } + + public func send(password: String = "BANKEXFOUNDATION", options: Web3Options? = nil) -> Result<[String:String], Web3Error> { + do { + guard var mergedOptions = Web3Options.merge(self.options, with: options) else + { + return Result.failure(Web3Error.inputError("Invalid options supplied")) + } + guard let from = mergedOptions.from else + { + return Result.failure(Web3Error.inputError("Invalid options supplied")) + } + let nonceResult = self.web3.eth.getTransactionCount(address: from, onBlock: "pending") + if case .failure(let err) = nonceResult { + return Result.failure(err) + } + try self.setNonce(nonceResult.value!) + let estimatedGasResult = self.estimateGas(options: self.options) + if case .failure(let err) = estimatedGasResult { + return Result.failure(err) + } + if mergedOptions.gasLimit == nil { + mergedOptions.gasLimit = estimatedGasResult.value! + } else { + if (mergedOptions.gasLimit! > estimatedGasResult.value!) { + return Result.failure(Web3Error.inputError("Estimated gas is larger than the gas limit")) + } + } + self.options = mergedOptions + if let keystoreManager = self.web3.provider.attachedKeystoreManager { + try Web3Signer.signTX(transaction: &self.transaction, keystore: keystoreManager, account: from, password: password) +// try keystoreManager.signIntermediate(intermediate: self, password: password, account: from) + print(self.transaction) + return self.web3.eth.sendRawTransaction(self.transaction) + } + } + catch { + return Result.failure(Web3Error.generalError(error)) + } + return Result.failure(Web3Error.unknownError) + } + + public func sendSigned() -> Result<[String:String], Web3Error> { + print(self.transaction) + return self.web3.eth.sendRawTransaction(self.transaction) + } + + + public func call(options: Web3Options?, onBlock: String = "latest") -> Result<[String:Any], Web3Error> { + let mergedOptions = Web3Options.merge(self.options, with: options) + guard let request = EthereumTransaction.createRequest(method: JSONRPCmethod.call, transaction: self.transaction, onBlock: onBlock, options: mergedOptions) else + { + return Result.failure(Web3Error.inputError("Transaction or options are malformed")) + } + let response = self.web3.provider.send(request: request) + let result = ResultUnwrapper.getResponse(response) + switch result { + case .failure(let error): + return Result.failure(error) + case .success(let payload): + guard let resultString = payload as? String else { + return Result.failure(Web3Error.dataError) + } + if (self.method == "fallback") { + let resultAsBigUInt = BigUInt(resultString.stripHexPrefix(), radix : 16) + return Result(["result": resultAsBigUInt as Any]) + } + let foundMethod = self.contract.methods.filter { (key, value) -> Bool in + return key == self.method + } + guard foundMethod.count == 1 else + { + return Result.failure(Web3Error.dataError) + } + let abiMethod = foundMethod[self.method] + guard let responseData = Data.fromHex(resultString) else + { + return Result.failure(Web3Error.dataError) + } + guard let decodedData = abiMethod?.decodeReturnData(responseData) else + { + return Result.failure(Web3Error.dataError) + } + return Result(decodedData) + } + + } + + public func estimateGas(options: Web3Options?) -> Result { + let mergedOptions = Web3Options.merge(self.options, with: options) + return self.web3.eth.estimateGas(self.transaction, options: mergedOptions) + } + } +} diff --git a/web3swift/Web3/Classes/Web3+Utils.swift b/web3swift/Web3/Classes/Web3+Utils.swift new file mode 100644 index 00000000..a6e52c50 --- /dev/null +++ b/web3swift/Web3/Classes/Web3+Utils.swift @@ -0,0 +1,164 @@ +// +// web3utils.swift +// web3swift +// +// Created by Alexander Vlasov on 18.12.2017. +// Copyright © 2017 Bankex Foundation. All rights reserved. +// + +import Foundation +import BigInt + +extension Web3 { + public struct Utils{ + } +} + +extension Web3.Utils { + public enum Units { + case eth + case wei + + var decimals:Int { + get { + switch self { + case .eth: + return 18 + case .wei: + return 0 + default: + return 18 + } + } + } + } + + public static var coldWalletABI = "[{\"payable\":true,\"type\":\"fallback\"}]" + public static var erc20ABI = "[{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"balance\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"approveAndCall\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"remaining\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"inputs\":[{\"name\":\"_initialAmount\",\"type\":\"uint256\"},{\"name\":\"_tokenName\",\"type\":\"string\"},{\"name\":\"_decimalUnits\",\"type\":\"uint8\"},{\"name\":\"_tokenSymbol\",\"type\":\"string\"}],\"type\":\"constructor\"},{\"payable\":false,\"type\":\"fallback\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},]" +} + +extension Web3.Utils { + + public static func privateToPublic(_ privateKey: Data, compressed: Bool = false) -> Data? { + guard let publicKey = SECP256K1.privateToPublic(privateKey: privateKey, compressed: compressed) else {return nil} + return publicKey + } + + public static func publicToAddressData(_ publicKey: Data) -> Data? { + if publicKey.count == 33 { + guard let decompressedKey = SECP256K1.combineSerializedPublicKeys(keys: [publicKey], outputCompressed: false) else {return nil} + return publicToAddressData(decompressedKey) + } + var stipped = publicKey + if (stipped.count == 65) { + if (stipped[0] != 4) { + return nil + } + stipped = stipped[1...64] + } + if (stipped.count != 64) { + return nil + } + let sha3 = stipped.sha3(.keccak256) + let addressData = sha3[12...31] + return addressData + } + + public static func publicToAddress(_ publicKey: Data) -> EthereumAddress? { + guard let addressData = Web3.Utils.publicToAddressData(publicKey) else {return nil} + let address = addressData.toHexString().addHexPrefix().lowercased() + return EthereumAddress(address) + } + + public static func publicToAddressString(_ publicKey: Data) -> String? { + guard let addressData = Web3.Utils.publicToAddressData(publicKey) else {return nil} + let address = addressData.toHexString().addHexPrefix().lowercased() + return address + } + + public static func addressDataToString(_ addressData: Data) -> String { + return addressData.toHexString().addHexPrefix().lowercased() + } + + public static func hashPersonalMessage(_ personalMessage: Data) -> Data? { + var prefix = "\u{19}Ethereum Signed Message:\n" + prefix += String(personalMessage.count) + guard let prefixData = prefix.data(using: .ascii) else {return nil} + var data = Data() + if personalMessage.count >= prefixData.count && prefixData == personalMessage[0 ..< prefixData.count] { + data.append(personalMessage) + } else { + data.append(prefixData) + data.append(personalMessage) + } + let hash = data.sha3(.keccak256) + return hash + } + + public static func parseToBigUInt(_ amount: String, toUnits: Web3.Utils.Units = .eth) -> BigUInt? { + let separators = CharacterSet(charactersIn: ".,") + let components = amount.trimmingCharacters(in: .whitespacesAndNewlines).components(separatedBy: separators) + guard components.count == 1 || components.count == 2 else {return nil} + let unitDecimals = toUnits.decimals + guard let beforeDecPoint = BigUInt(components[0], radix: 10) else {return nil} + var mainPart = beforeDecPoint*BigUInt(10).power(unitDecimals) + if (components.count == 2) { + let numDigits = components[1].count + guard numDigits <= unitDecimals else {return nil} + guard let afterDecPoint = BigUInt(components[1], radix: 10) else {return nil} + let extraPart = afterDecPoint*BigUInt(10).power(unitDecimals-numDigits) + mainPart = mainPart + extraPart + } + return mainPart + } + + public static func formatToEthereumUnits(_ bigNumber: BigInt, toUnits: Web3.Utils.Units = .eth, decimals: Int = 4) -> String? { + let magnitude = bigNumber.magnitude + guard let formatted = formatToEthereumUnits(magnitude, toUnits: toUnits, decimals: decimals) else {return nil} + switch bigNumber.sign { + case .plus: + return formatted + case .minus: + return "-" + formatted + } + } + + public static func formatToEthereumUnits(_ bigNumber: BigUInt, toUnits: Web3.Utils.Units = .eth, decimals: Int = 4) -> String? { + let unitDecimals = toUnits.decimals + var toDecimals = decimals + if unitDecimals < toDecimals { + toDecimals = unitDecimals + } + let divisor = BigUInt(10).power(unitDecimals) + let (quotient, remainder) = bigNumber.quotientAndRemainder(dividingBy: divisor) + let remainderPadded = String(remainder).leftPadding(toLength: unitDecimals, withPad: "0")[0.. EthereumAddress? { + guard let data = Data.fromHex(personalMessage) else {return nil} + guard let sig = Data.fromHex(signature) else {return nil} + return Web3.Utils.personalECRecover(data, signature:sig) + } + + static public func personalECRecover(_ personalMessage: Data, signature: Data) -> EthereumAddress? { + if signature.count != 65 { return nil} + let rData = signature[0..<32].bytes + let sData = signature[32..<64].bytes + let vData = signature[64] + guard let signatureData = SECP256K1.marshalSignature(v: vData, r: rData, s: sData) else {return nil} + var hash: Data + if personalMessage.count == 32 { + print("Most likely it's hash already, allow for now") + hash = personalMessage + } else { + guard let h = Web3.Utils.hashPersonalMessage(personalMessage) else {return nil} + hash = h + } + guard let publicKey = SECP256K1.recoverPublicKey(hash: hash, signature: signatureData) else {return nil} + return Web3.Utils.publicToAddress(publicKey) + } +} diff --git a/web3swift/Web3/Classes/Web3.swift b/web3swift/Web3/Classes/Web3.swift new file mode 100644 index 00000000..b834aa3e --- /dev/null +++ b/web3swift/Web3/Classes/Web3.swift @@ -0,0 +1,68 @@ +// +// Web3.swift +// web3swift +// +// Created by Alexander Vlasov on 11.12.2017. +// Copyright © 2017 Bankex Foundation. All rights reserved. +// + +import Foundation +import Result +import BigInt + +public enum Web3Error: Error { + case transactionSerializationError + case connectionError + case dataError + case walletError + case inputError(String) + case nodeError(String) + case keystoreError(AbstractKeystoreError) + case generalError(Error) + case unknownError +} + +public struct Web3 { + public static func new(_ providerURL: URL) -> web3? { + guard let provider = Web3HttpProvider(providerURL) else {return nil} + return web3(provider: provider) + } + + public static func InfuraRinkebyWeb3(accessToken: String? = nil) -> web3 { + let infura = InfuraProvider(Networks.Rinkeby, accessToken: accessToken)! + return web3(provider: infura) + } + public static func InfuraMainnetWeb3(accessToken: String? = nil) -> web3 { + let infura = InfuraProvider(Networks.Mainnet, accessToken: accessToken)! + return web3(provider: infura) + } +} + +struct ResultUnwrapper { + static func getResponse(_ response: [String: Any]?) -> Result { + guard response != nil, let res = response else { + return Result.failure(Web3Error.connectionError) + } + if let error = res["error"] { + let errString = error as? String + if (errString != nil) { + return Result.failure(Web3Error.nodeError(errString!)) + } + return Result.failure(Web3Error.unknownError) + } + guard let result = res["result"] else { + return Result.failure(Web3Error.dataError) + } + return Result(result) + } +} + +func isInstanceOf (instance: Any, of kind: T.Type) -> Bool { + return instance is T; +} + + + + + + diff --git a/web3swiftTests/web3swiftTests.swift b/web3swiftTests/web3swiftTests.swift index 0f064a61..bece3f63 100644 --- a/web3swiftTests/web3swiftTests.swift +++ b/web3swiftTests/web3swiftTests.swift @@ -11,7 +11,7 @@ import XCTest import CryptoSwift import BigInt -@testable import web3swift +@testable import web3swift_iOS class web3swiftTests: XCTestCase { @@ -39,8 +39,9 @@ class web3swiftTests: XCTestCase { return try record.parse() }) print(abiNative) - XCTAssert(abiNative != nil, "Can't parse some real-world ABI") + XCTAssert(abiNative.count > 0, "Can't parse some real-world ABI") } catch { + XCTFail() print(error) } } @@ -294,134 +295,138 @@ class web3swiftTests: XCTestCase { // } // } // -// func testABIdecoding() { -// let jsonString = "[{\"type\":\"constructor\",\"payable\":false,\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"testInt\",\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"foo\",\"constant\":false,\"payable\":false,\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"b\",\"type\":\"uint256\"},{\"name\":\"c\",\"type\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]},{\"type\":\"event\",\"name\":\"Event\",\"inputs\":[{\"indexed\":true,\"name\":\"b\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"c\",\"type\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Event2\",\"inputs\":[{\"indexed\":true,\"name\":\"b\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"c\",\"type\":\"bytes32\"}],\"anonymous\":false}]" -// do { -// let jsonData = jsonString.data(using: .utf8) -// let abi = try JSONDecoder().decode([ABIRecord].self, from: jsonData!) -//// let abi0 = try abi[0].parse() -//// let abi1 = try abi[1].parse() -//// let abi2 = try abi[2].parse() -//// let abi3 = try abi[3].parse() -// let abiNative = try abi.map({ (record) -> ABIElement in -// return try record.parse() -// }) -// print(abiNative) -// XCTAssert(true, "Failed to parse ABI") -// } catch { -// print(error) -// } -// } -// -// func testABIdecoding2() { -// let jsonString = "[{\"type\":\"function\",\"name\":\"balance\",\"constant\":true},{\"type\":\"function\",\"name\":\"send\",\"constant\":false,\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"test\",\"constant\":false,\"inputs\":[{\"name\":\"number\",\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"string\",\"constant\":false,\"inputs\":[{\"name\":\"inputs\",\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"bool\",\"constant\":false,\"inputs\":[{\"name\":\"inputs\",\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"address\",\"constant\":false,\"inputs\":[{\"name\":\"inputs\",\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"uint64[2]\",\"constant\":false,\"inputs\":[{\"name\":\"inputs\",\"type\":\"uint64[2]\"}]},{\"type\":\"function\",\"name\":\"uint64[]\",\"constant\":false,\"inputs\":[{\"name\":\"inputs\",\"type\":\"uint64[]\"}]},{\"type\":\"function\",\"name\":\"foo\",\"constant\":false,\"inputs\":[{\"name\":\"inputs\",\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"bar\",\"constant\":false,\"inputs\":[{\"name\":\"inputs\",\"type\":\"uint32\"},{\"name\":\"string\",\"type\":\"uint16\"}]},{\"type\":\"function\",\"name\":\"slice\",\"constant\":false,\"inputs\":[{\"name\":\"inputs\",\"type\":\"uint32[2]\"}]},{\"type\":\"function\",\"name\":\"slice256\",\"constant\":false,\"inputs\":[{\"name\":\"inputs\",\"type\":\"uint256[2]\"}]},{\"type\":\"function\",\"name\":\"sliceAddress\",\"constant\":false,\"inputs\":[{\"name\":\"inputs\",\"type\":\"address[]\"}]},{\"type\":\"function\",\"name\":\"sliceMultiAddress\",\"constant\":false,\"inputs\":[{\"name\":\"a\",\"type\":\"address[]\"},{\"name\":\"b\",\"type\":\"address[]\"}]}]" -// do { -// let jsonData = jsonString.data(using: .utf8) -// let abi = try JSONDecoder().decode([ABIRecord].self, from: jsonData!) -// // let abi0 = try abi[0].parse() -// // let abi1 = try abi[1].parse() -// // let abi2 = try abi[2].parse() -// // let abi3 = try abi[3].parse() -// let abiNative = try abi.map({ (record) -> ABIElement in -// return try record.parse() -// }) -// print(abiNative) -// XCTAssert(true, "Failed to parse ABI") -// } catch { -// print(error) -// } -// } -// -// func testRLPencodeShortString() { -// let testString = "dog" -// let encoded = RLP.encode(testString) -// var expected = Data([UInt8(0x83)]) -// expected.append(testString.data(using: .ascii)!) -// XCTAssert(encoded == expected, "Failed to RLP encode short string") -// } -// -// func testRLPencodeListOfShortStrings() { -// let testInput = ["cat","dog"] -// let encoded = RLP.encode(testInput) -// var expected = Data() -// expected.append(Data([UInt8(0xc8)])) -// expected.append(Data([UInt8(0x83)])) -// expected.append("cat".data(using: .ascii)!) -// expected.append(Data([UInt8(0x83)])) -// expected.append("dog".data(using: .ascii)!) -// XCTAssert(encoded == expected, "Failed to RLP encode list of short strings") -// } -// -// func testRLPencodeLongString() { -// let testInput = "Lorem ipsum dolor sit amet, consectetur adipisicing elit" -// let encoded = RLP.encode(testInput) -// var expected = Data() -// expected.append(Data([UInt8(0xb8)])) -// expected.append(Data([UInt8(0x38)])) -// expected.append("Lorem ipsum dolor sit amet, consectetur adipisicing elit".data(using: .ascii)!) -// XCTAssert(encoded == expected, "Failed to RLP encode long string") -// } -// -// func testRLPencodeEmptyString() { -// let testInput = "" -// let encoded = RLP.encode(testInput) -// var expected = Data() -// expected.append(Data([UInt8(0x80)])) -// XCTAssert(encoded == expected, "Failed to RLP encode empty string") -// } -// -// func testRLPencodeEmptyArray() { -// let testInput = [Data]() -// let encoded = RLP.encode(testInput) -// var expected = Data() -// expected.append(Data([UInt8(0xc0)])) -// XCTAssert(encoded == expected, "Failed to RLP encode empty array") -// } -// -// func testRLPencodeShortInt() { -// let testInput = 15 -// let encoded = RLP.encode(testInput) -// let expected = Data([UInt8(0x0f)]) -// XCTAssert(encoded == expected, "Failed to RLP encode short int") -// } -// -// func testRLPencodeLargeInt() { -// let testInput = 1024 -// let encoded = RLP.encode(testInput) -// var expected = Data() -// expected.append(Data([UInt8(0x82)])) -// expected.append(Data([UInt8(0x04)])) -// expected.append(Data([UInt8(0x00)])) -// XCTAssert(encoded == expected, "Failed to RLP encode large int") -// } -// -// func testChecksubAddress() { -// let input = "0xfb6916095ca1df60bb79ce92ce3ea74c37c5d359" -// let output = EthereumAddress.toChecksumAddress(input); -// XCTAssert(output == "0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359", "Failed to checksum address") -// } -// -// func testTransaction1() { -// var transaction = EthereumTransaction(nonce: BigUInt(9), -// gasPrice: BigUInt(20000000000), -// gasLimit: BigUInt(21000), -// to: EthereumAddress("0x3535353535353535353535353535353535353535"), -// value: BigUInt("1000000000000000000")!, -// data: Data(), -// v: BigUInt(0), -// r: BigUInt(0), -// s: BigUInt(0)) -// let privateKeyData = Data(Array(hex: "0x4646464646464646464646464646464646464646464646464646464646464646")) -// let hash = transaction.hash(forSignature: true, chainID: BigUInt(1)) -// let expectedHash = "0xdaf5a779ae972f972197303d7b574746c7ef83eadac0f2791ad23db92e4c8e53".stripHexPrefix() -// XCTAssert(hash!.toHexString() == expectedHash, "Transaction signature failed") -// let success = transaction.sign(privateKey: privateKeyData, chainID: BigUInt(1)) -// XCTAssert(success) -// XCTAssert(transaction.v == UInt8(37), "Transaction signature failed") -// XCTAssert(transaction.r == BigUInt("18515461264373351373200002665853028612451056578545711640558177340181847433846"), "Transaction signature failed") -// XCTAssert(transaction.s == BigUInt("46948507304638947509940763649030358759909902576025900602547168820602576006531"), "Transaction signature failed") -// } -// + func testABIdecoding() { + let jsonString = "[{\"type\":\"constructor\",\"payable\":false,\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"testInt\",\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"foo\",\"constant\":false,\"payable\":false,\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"b\",\"type\":\"uint256\"},{\"name\":\"c\",\"type\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]},{\"type\":\"event\",\"name\":\"Event\",\"inputs\":[{\"indexed\":true,\"name\":\"b\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"c\",\"type\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Event2\",\"inputs\":[{\"indexed\":true,\"name\":\"b\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"c\",\"type\":\"bytes32\"}],\"anonymous\":false}]" + do { + let jsonData = jsonString.data(using: .utf8) + let abi = try JSONDecoder().decode([ABIRecord].self, from: jsonData!) + let abiNative = try abi.map({ (record) -> ABIElement in + return try record.parse() + }) + print(abiNative) + XCTAssert(true, "Failed to parse ABI") + } catch { + print(error) + XCTFail() + } + } + + func testABIdecoding2() { + let jsonString = "[{\"type\":\"function\",\"name\":\"balance\",\"constant\":true},{\"type\":\"function\",\"name\":\"send\",\"constant\":false,\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"test\",\"constant\":false,\"inputs\":[{\"name\":\"number\",\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"string\",\"constant\":false,\"inputs\":[{\"name\":\"inputs\",\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"bool\",\"constant\":false,\"inputs\":[{\"name\":\"inputs\",\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"address\",\"constant\":false,\"inputs\":[{\"name\":\"inputs\",\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"uint64[2]\",\"constant\":false,\"inputs\":[{\"name\":\"inputs\",\"type\":\"uint64[2]\"}]},{\"type\":\"function\",\"name\":\"uint64[]\",\"constant\":false,\"inputs\":[{\"name\":\"inputs\",\"type\":\"uint64[]\"}]},{\"type\":\"function\",\"name\":\"foo\",\"constant\":false,\"inputs\":[{\"name\":\"inputs\",\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"bar\",\"constant\":false,\"inputs\":[{\"name\":\"inputs\",\"type\":\"uint32\"},{\"name\":\"string\",\"type\":\"uint16\"}]},{\"type\":\"function\",\"name\":\"slice\",\"constant\":false,\"inputs\":[{\"name\":\"inputs\",\"type\":\"uint32[2]\"}]},{\"type\":\"function\",\"name\":\"slice256\",\"constant\":false,\"inputs\":[{\"name\":\"inputs\",\"type\":\"uint256[2]\"}]},{\"type\":\"function\",\"name\":\"sliceAddress\",\"constant\":false,\"inputs\":[{\"name\":\"inputs\",\"type\":\"address[]\"}]},{\"type\":\"function\",\"name\":\"sliceMultiAddress\",\"constant\":false,\"inputs\":[{\"name\":\"a\",\"type\":\"address[]\"},{\"name\":\"b\",\"type\":\"address[]\"}]}]" + do { + let jsonData = jsonString.data(using: .utf8) + let abi = try JSONDecoder().decode([ABIRecord].self, from: jsonData!) + let abiNative = try abi.map({ (record) -> ABIElement in + return try record.parse() + }) + print(abiNative) + XCTAssert(true, "Failed to parse ABI") + } catch { + print(error) + XCTFail() + } + } + + func testRLPencodeShortString() { + let testString = "dog" + let encoded = RLP.encode(testString) + var expected = Data([UInt8(0x83)]) + expected.append(testString.data(using: .ascii)!) + XCTAssert(encoded == expected, "Failed to RLP encode short string") + } + + func testRLPencodeListOfShortStrings() { + let testInput = ["cat","dog"] + let encoded = RLP.encode(testInput) + var expected = Data() + expected.append(Data([UInt8(0xc8)])) + expected.append(Data([UInt8(0x83)])) + expected.append("cat".data(using: .ascii)!) + expected.append(Data([UInt8(0x83)])) + expected.append("dog".data(using: .ascii)!) + XCTAssert(encoded == expected, "Failed to RLP encode list of short strings") + } + + func testRLPencodeLongString() { + let testInput = "Lorem ipsum dolor sit amet, consectetur adipisicing elit" + let encoded = RLP.encode(testInput) + var expected = Data() + expected.append(Data([UInt8(0xb8)])) + expected.append(Data([UInt8(0x38)])) + expected.append("Lorem ipsum dolor sit amet, consectetur adipisicing elit".data(using: .ascii)!) + XCTAssert(encoded == expected, "Failed to RLP encode long string") + } + + func testRLPencodeEmptyString() { + let testInput = "" + let encoded = RLP.encode(testInput) + var expected = Data() + expected.append(Data([UInt8(0x80)])) + XCTAssert(encoded == expected, "Failed to RLP encode empty string") + } + + func testRLPencodeEmptyArray() { + let testInput = [Data]() + let encoded = RLP.encode(testInput) + var expected = Data() + expected.append(Data([UInt8(0xc0)])) + XCTAssert(encoded == expected, "Failed to RLP encode empty array") + } + + func testRLPencodeShortInt() { + let testInput = 15 + let encoded = RLP.encode(testInput) + let expected = Data([UInt8(0x0f)]) + XCTAssert(encoded == expected, "Failed to RLP encode short int") + } + + func testRLPencodeLargeInt() { + let testInput = 1024 + let encoded = RLP.encode(testInput) + var expected = Data() + expected.append(Data([UInt8(0x82)])) + expected.append(Data([UInt8(0x04)])) + expected.append(Data([UInt8(0x00)])) + XCTAssert(encoded == expected, "Failed to RLP encode large int") + } + + func testChecksubAddress() { + let input = "0xfb6916095ca1df60bb79ce92ce3ea74c37c5d359" + let output = EthereumAddress.toChecksumAddress(input); + XCTAssert(output == "0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359", "Failed to checksum address") + } + + func testTransaction() { + do { + var transaction = EthereumTransaction(nonce: BigUInt(9), + gasPrice: BigUInt(20000000000), + gasLimit: BigUInt(21000), + to: EthereumAddress("0x3535353535353535353535353535353535353535"), + value: BigUInt("1000000000000000000")!, + data: Data(), + v: BigUInt(0), + r: BigUInt(0), + s: BigUInt(0)) + let privateKeyData = Data.fromHex("0x4646464646464646464646464646464646464646464646464646464646464646")! + let publicKey = Web3.Utils.privateToPublic(privateKeyData, compressed: false) + let sender = Web3.Utils.publicToAddress(publicKey!) + transaction.chainID = BigUInt(1) + print(transaction) + let hash = transaction.hashForSignature(chainID: BigUInt(1)) + let expectedHash = "0xdaf5a779ae972f972197303d7b574746c7ef83eadac0f2791ad23db92e4c8e53".stripHexPrefix() + XCTAssert(hash!.toHexString() == expectedHash, "Transaction signature failed") + let signer = EIP155Signer() + try signer.sign(transaction: &transaction, privateKey: privateKeyData) + print(transaction.encode(forSignature: false, chainID: BigUInt(1))?.toHexString()) + XCTAssert(transaction.v == UInt8(37), "Transaction signature failed") + XCTAssert(sender == transaction.sender) + } + catch { + print(error) + XCTFail() + } + } + func testERC20Encode() { let jsonString = "[{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"balance\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"approveAndCall\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"remaining\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"inputs\":[{\"name\":\"_initialAmount\",\"type\":\"uint256\"},{\"name\":\"_tokenName\",\"type\":\"string\"},{\"name\":\"_decimalUnits\",\"type\":\"uint8\"},{\"name\":\"_tokenSymbol\",\"type\":\"string\"}],\"type\":\"constructor\"},{\"payable\":false,\"type\":\"fallback\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},]" do { @@ -449,7 +454,6 @@ class web3swiftTests: XCTestCase { let dummyTrue = BigUInt(1).abiEncode(bits: 256) let data = dummyTrue.head! let decoded = method[0].decodeReturnData(data) - print(decoded) let ret1 = decoded!["0"] as? Bool let ret2 = decoded!["success"] as? Bool XCTAssert(ret1 == true, "Failed to encode ERC20") @@ -500,7 +504,6 @@ class web3swiftTests: XCTestCase { let transaction = contract.method("balanceOf", parameters:parameters, options: options) XCTAssert(transaction != nil, "Failed plasma funding transaction") let requestDictionary = transaction!.encodeAsDictionary(from: EthereumAddress("0xE6877A4d8806e9A9F12eB2e8561EA6c1db19978d")) - print(requestDictionary) XCTAssert(requestDictionary != nil, "Can't read ERC20 balance") } catch { print(error) @@ -523,14 +526,14 @@ class web3swiftTests: XCTestCase { let transaction = contract.method("name", parameters:parameters, options: options) XCTAssert(transaction != nil, "Failed to create ERC20 name transaction") let requestDictionary = transaction!.encodeAsDictionary(from: EthereumAddress("0xE6877A4d8806e9A9F12eB2e8561EA6c1db19978d")) - print(requestDictionary) XCTAssert(requestDictionary != nil, "Failed to create ERC20 name transaction") let resultData = Data.fromHex("0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000a534f4e4d20546f6b656e00000000000000000000000000000000000000000000") let method = contract.methods["name"] let result = method!.decodeReturnData(resultData!) - print(result) - XCTAssert(result != nil, "Failed to create ERC20 name transaction") + let res = result!["0"] as! String + XCTAssert(res == "SONM Token", "Failed to create ERC20 name transaction") } catch { + XCTFail() print(error) } } @@ -541,30 +544,27 @@ class web3swiftTests: XCTestCase { XCTAssert(biguint == BigUInt("126978086000000000")) } + func testInfuraERC20name() { + let jsonString = "[{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"balance\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"approveAndCall\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"remaining\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"inputs\":[{\"name\":\"_initialAmount\",\"type\":\"uint256\"},{\"name\":\"_tokenName\",\"type\":\"string\"},{\"name\":\"_decimalUnits\",\"type\":\"uint8\"},{\"name\":\"_tokenSymbol\",\"type\":\"string\"}],\"type\":\"constructor\"},{\"payable\":false,\"type\":\"fallback\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},]" + let web3 = Web3.InfuraMainnetWeb3() + let contractAddress = EthereumAddress("0x45245bc59219eeaaf6cd3f382e078a461ff9de7b") + let contract = web3.contract(jsonString, at: contractAddress) + XCTAssert(contract != nil, "Failed to create ERC20 contract from ABI") + var options = Web3Options.defaultOptions() + options.from = EthereumAddress("0xE6877A4d8806e9A9F12eB2e8561EA6c1db19978d") + let parameters = [] as [AnyObject] + let transactionIntermediate = contract?.method("name", parameters:parameters, options: options) + let result = transactionIntermediate!.call(options: options) + switch result { + case .failure(let error): + print(error) + XCTFail() + case .success(let response): + let name = response["0"] as? String + XCTAssert(name == "\"BANKEX\" project utility token", "Failed to create ERC20 name transaction") + } + } // -// func testInfuraERC20name() { -// let sodium = Sodium() -// let jsonString = "[{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"balance\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"approveAndCall\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"remaining\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"inputs\":[{\"name\":\"_initialAmount\",\"type\":\"uint256\"},{\"name\":\"_tokenName\",\"type\":\"string\"},{\"name\":\"_decimalUnits\",\"type\":\"uint8\"},{\"name\":\"_tokenSymbol\",\"type\":\"string\"}],\"type\":\"constructor\"},{\"payable\":false,\"type\":\"fallback\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},]" -// do { -// let jsonData = jsonString.data(using: .utf8) -// let abi = try JSONDecoder().decode([ABIRecord].self, from: jsonData!) -// let abiNative = try abi.map({ (record) -> ABIElement in -// return try record.parse() -// }) -// let constractAddress = EthereumAddress("0x86fa049857e0209aa7d9e616f7eb3b3b78ecfdb0") -// let contract = Contract(abi: abiNative, at: constractAddress) -// var options = Web3Options() -// options.gas = BigUInt(250000) -// options.gasPrice = BigUInt(0) -// let parameters = [] as [AnyObject] -// let transaction = contract.method("name", parameters:parameters, options: options) -// let result = try! await((transaction?.call(options: options))!) -// XCTAssert(transaction != nil, "Failed to create ERC20 name transaction") -// } catch { -// print(error) -// } -// } -// // func testKeystoreManager(){ // let testBundle = Bundle(for: type(of: self)) // let testResourcePath = testBundle.url(forResource:"keystore", withExtension: "ks")