diff --git a/Podfile b/Podfile index d6df7955..dffe80c2 100644 --- a/Podfile +++ b/Podfile @@ -10,6 +10,7 @@ target 'web3swift' do pod 'CryptoSwift' pod 'Sodium' pod 'libsodium' + pod 'secp256k1_ios' target 'web3swiftTests' do inherit! :search_paths end diff --git a/Podfile.lock b/Podfile.lock index 7e61e27d..fae419cb 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -20,6 +20,7 @@ PODS: - PromiseKit/CorePromise - PromiseKit/UIKit (4.5.0): - PromiseKit/CorePromise + - secp256k1_ios (0.0.4) - SipHash (1.2.0) - Sodium (0.6) @@ -31,6 +32,7 @@ DEPENDENCIES: - libsodium - PromiseKit (~> 4.4) - PromiseKit/Alamofire (~> 4.0) + - secp256k1_ios - Sodium SPEC CHECKSUMS: @@ -40,9 +42,10 @@ SPEC CHECKSUMS: CryptoSwift: f81907430ebbe38b8404b4f6fb40f3c576a8755f libsodium: 9a8faa5ef2fa0d2d57bd7f7d79bf8fb7c1a9f0ea PromiseKit: 9c1d9f6d7b65e3951a90bea7f407c56972be5d8e + secp256k1_ios: e41c69ba611925984d183bffb70109eb48162ff4 SipHash: c6e9e43e9c531b5bc6602545130c26194a6d31ce Sodium: bf524b0a3d5ad6870dcf343205cca7e659c15ad5 -PODFILE CHECKSUM: 646d35c61c427c6244540da82e9a244e99954006 +PODFILE CHECKSUM: b7e3342b3886fb758c9969fb39a7970d47f8d515 COCOAPODS: 1.3.1 diff --git a/Pods/Manifest.lock b/Pods/Manifest.lock index 7e61e27d..fae419cb 100644 --- a/Pods/Manifest.lock +++ b/Pods/Manifest.lock @@ -20,6 +20,7 @@ PODS: - PromiseKit/CorePromise - PromiseKit/UIKit (4.5.0): - PromiseKit/CorePromise + - secp256k1_ios (0.0.4) - SipHash (1.2.0) - Sodium (0.6) @@ -31,6 +32,7 @@ DEPENDENCIES: - libsodium - PromiseKit (~> 4.4) - PromiseKit/Alamofire (~> 4.0) + - secp256k1_ios - Sodium SPEC CHECKSUMS: @@ -40,9 +42,10 @@ SPEC CHECKSUMS: CryptoSwift: f81907430ebbe38b8404b4f6fb40f3c576a8755f libsodium: 9a8faa5ef2fa0d2d57bd7f7d79bf8fb7c1a9f0ea PromiseKit: 9c1d9f6d7b65e3951a90bea7f407c56972be5d8e + secp256k1_ios: e41c69ba611925984d183bffb70109eb48162ff4 SipHash: c6e9e43e9c531b5bc6602545130c26194a6d31ce Sodium: bf524b0a3d5ad6870dcf343205cca7e659c15ad5 -PODFILE CHECKSUM: 646d35c61c427c6244540da82e9a244e99954006 +PODFILE CHECKSUM: b7e3342b3886fb758c9969fb39a7970d47f8d515 COCOAPODS: 1.3.1 diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj index 461c1c99..cf591f1c 100644 --- a/Pods/Pods.xcodeproj/project.pbxproj +++ b/Pods/Pods.xcodeproj/project.pbxproj @@ -7,661 +7,733 @@ objects = { /* Begin PBXBuildFile section */ - 001A9A48E508A5D7158070D6606EE959 /* crypto_onetimeauth_poly1305.h in Headers */ = {isa = PBXBuildFile; fileRef = A55B26E912C39914E13AC2C69B72D917 /* crypto_onetimeauth_poly1305.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 016E85B37A49B4EDDBBFB35EC067AC96 /* argon2-fill-block-ssse3.c in Sources */ = {isa = PBXBuildFile; fileRef = 4428840BB518C94A83A7C5028A5AD8C9 /* argon2-fill-block-ssse3.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 0321D550F95E64A01E54EF7CA841C9CE /* u4.h in Headers */ = {isa = PBXBuildFile; fileRef = B867717ADA4ABC98597E839AAA3CF5B3 /* u4.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0368EFAF491E6E17CEE49347ADE935E5 /* aead_xchacha20poly1305.c in Sources */ = {isa = PBXBuildFile; fileRef = 506DD7EC4AEFA9ABC3A8270D0F5B6728 /* aead_xchacha20poly1305.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 012DDFA95318C4FCAD1DCA3DAA1E24BF /* ecmult_const.h in Headers */ = {isa = PBXBuildFile; fileRef = D4E9B5F5ACE5E1E134A1B24C7B4979C4 /* ecmult_const.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 016E85B37A49B4EDDBBFB35EC067AC96 /* argon2-fill-block-ssse3.c in Sources */ = {isa = PBXBuildFile; fileRef = 21FBAEF445B99A996E4ED13AF5290411 /* argon2-fill-block-ssse3.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 0305B411A8C748A5B71440A30309AA18 /* Pods-web3swift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6023F205D9959B2DEA3718EAAE91B6D1 /* Pods-web3swift-dummy.m */; }; + 0321D550F95E64A01E54EF7CA841C9CE /* u4.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A1463FF304439085E5AE7F102A78F8C /* u4.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0368EFAF491E6E17CEE49347ADE935E5 /* aead_xchacha20poly1305.c in Sources */ = {isa = PBXBuildFile; fileRef = D480F5CE7805F1FBFDFF1DC3BA9A6259 /* aead_xchacha20poly1305.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 0389A9F6E102942B967021CA3E5D5D6F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5A9A555A4CB5C94FF77876AD171CBBB4 /* Foundation.framework */; }; - 04056851010D25CFD03211572FEAEF64 /* Primitive Types.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7BE4D1E91920CC385DF4FDFBCB9CA797 /* Primitive Types.swift */; }; - 041324D9E63975573A8091DFDDEF1C65 /* RandomAccessBlockModeWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDFF7C1B4FD61764E6C681162ED9C397 /* RandomAccessBlockModeWorker.swift */; }; - 054718E70C6B5BB7A88AD0EC867372D0 /* crypto_stream_xchacha20.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B589E74E26DBF1F82FA947C9530E57E /* crypto_stream_xchacha20.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 0803A773F58649748DA383F428EBD7DD /* after.m in Sources */ = {isa = PBXBuildFile; fileRef = A385FD5BD4160D26B15DC59E0C0A4684 /* after.m */; }; - 0842A55A6C2FF1F7682024A5258CF492 /* beforenm_aes128ctr.c in Sources */ = {isa = PBXBuildFile; fileRef = EEC9DC121948BAC1B3BEDBC65EBED54B /* beforenm_aes128ctr.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 0853B4573417B4EA70C3E5868D9F2B79 /* x25519_ref10.h in Headers */ = {isa = PBXBuildFile; fileRef = 66D47623B03864DAB77ABD331BEA3EEB /* x25519_ref10.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 08999F3EE37AFF49BD22796A2B909743 /* after.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53E02D0F59804EFA620F2B47137F186B /* after.swift */; }; - 0C057F605156BADF076E230EA43AAEE6 /* curve25519_donna_c64.c in Sources */ = {isa = PBXBuildFile; fileRef = C927C0606CA4E95D31493BDD651DFFF7 /* curve25519_donna_c64.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 0C8A2D86647DF8D8B66DCFA60181A438 /* mutex.h in Headers */ = {isa = PBXBuildFile; fileRef = 03D40C34CE63BBF60440B06C22257316 /* mutex.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0C9F76EAB3D5C99ED2EAD2C422D53856 /* Floating Point Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B73EA5BC0B20FE37AFF7799A68BCB8B /* Floating Point Conversion.swift */; }; - 0D88FE4F5E550BFC99CCC87CE477FC45 /* stream_aes128ctr_nacl.c in Sources */ = {isa = PBXBuildFile; fileRef = 87BF8DF99F1BD2A2258103C0E9B3BBD2 /* stream_aes128ctr_nacl.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 0DE4DFA6DD9B6808CDF186C55CA63BB5 /* Authenticator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 317DFACAC8499FE790B2F62585685EBD /* Authenticator.swift */; }; - 0E12D8586AFB79F410044DE1381AAAD0 /* shorthash_siphash24.c in Sources */ = {isa = PBXBuildFile; fileRef = CFA150240F4B99D3A6A82F8047F9803A /* shorthash_siphash24.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 0E52FD7BF26B784DA73413BA19CC4AEE /* pbkdf2-sha256.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CEA11E5873E67E86630A39D7EB8B2A3 /* pbkdf2-sha256.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0EB915029F9BFF4FD7311D4FBF84DF01 /* Utils+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89339D9342B89117FD496824477E24C2 /* Utils+Foundation.swift */; }; - 0F85C22525EF69923FAD0F9EFB419751 /* onetimeauth_poly1305.h in Headers */ = {isa = PBXBuildFile; fileRef = F882C900F84E7B9D312C9A225A61F98F /* onetimeauth_poly1305.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0FBDCD21AD05262C3FC4D88B558E7B8E /* u1.h in Headers */ = {isa = PBXBuildFile; fileRef = A46198638D03BEC8C33A4E5958F20D1C /* u1.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 10EB23E9ECC4B33E16933BB1EA560B6A /* Timeline.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53E2FF4CDFE83A52651978AE5802CDB6 /* Timeline.swift */; }; - 125E16E032D9EB73B86DE9EE85E7C283 /* CALayer+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = E8135EB8B8AA793953230E6D9CA06C59 /* CALayer+AnyPromise.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 13319D017D26653501E0FA331833EC3C /* Random.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5485CC081D9484806CB46750B04EF2F8 /* Random.swift */; }; - 13BB6F19DF709C2863E04523CCB49D50 /* AES+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = A53D3BD819E7DFC8FDA251FE78F3231C /* AES+Foundation.swift */; }; - 13F6AB7435F9F3AB5D92EDDF8ECF8A78 /* crypto_onetimeauth_poly1305.h in Headers */ = {isa = PBXBuildFile; fileRef = 704BDB95EE949F84EA5F569832FEBFC6 /* crypto_onetimeauth_poly1305.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 14394D453C66CF848631DC85CBCE9D34 /* Process+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF2DF7C9806BA9E6C5D4C33A56D92F65 /* Process+Promise.swift */; }; - 159DD145BC492A8EFF8F47B2935D3106 /* crypto_kdf.h in Headers */ = {isa = PBXBuildFile; fileRef = E8EB5BF78D0D556ECD423032A985D248 /* crypto_kdf.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 162DDB84B84DE23771AD4C5510C4BA53 /* ECB.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1F3A9314BB7DA0573B872D09703DF2 /* ECB.swift */; }; - 16EACCEBFC4C0A2857AB6CB05CA0C963 /* crypto_kx.c in Sources */ = {isa = PBXBuildFile; fileRef = C7BB5F73F6B8A2AAA4D3C65843ABCDD1 /* crypto_kx.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 1713C0B19771CA40FD724D1E8C3EBEF0 /* Box.swift in Sources */ = {isa = PBXBuildFile; fileRef = CAB1F376B16515A9363F01965D003074 /* Box.swift */; }; - 17ADA1C7EF49058148D0F39F103E252E /* crypto_hash_sha512.h in Headers */ = {isa = PBXBuildFile; fileRef = 927A4352588589EF77582F1D5D84EDA2 /* crypto_hash_sha512.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 17F8E260E7B7A42FFCA1E76A67DBAF35 /* Addition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8840D3CCF38D54B422D17767EF0C87FB /* Addition.swift */; }; - 18DE9674666D4B74FE13C2C1464D9AEC /* crypto_box.h in Headers */ = {isa = PBXBuildFile; fileRef = 88AA06E26654F8E7655E7820B11C5F75 /* crypto_box.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 19BBC48CB51A114FB2476440B1A7EA94 /* randombytes.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A149710EE462F517FD899263322B9D8 /* randombytes.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 1A0352B18582C6D4725C5FCEF13D828E /* Error.swift in Sources */ = {isa = PBXBuildFile; fileRef = F98B617BC076A2B70A723554D8944C87 /* Error.swift */; }; - 1AF2E5DFC1DC4C7AACE16B25C798860D /* Updatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEE962279D5BD5992AADE18B52E3F449 /* Updatable.swift */; }; - 1B9EDEDC964E6B08F78920B4F4B9DB84 /* Alamofire-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 9693AD64756A4595163D7F21843B6422 /* Alamofire-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1C2D35C43AF4D87AB023E81FC8E7D568 /* Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8CAC3E4D865F59B3ABFA31CC1BA97A13 /* Utils.swift */; }; - 1C2D5ED83EDD1CF7DB4D6691650A071B /* auth_hmacsha512256.c in Sources */ = {isa = PBXBuildFile; fileRef = CCD05FE6A8A976D047B064E0E36B2A44 /* auth_hmacsha512256.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 1D3C045869D071D68EF4441903512344 /* blake2.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E27AA7A536407EC3A92F647F5756C19 /* blake2.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1D44C163D50469DB2C82978E42CC999B /* stream_salsa2012.c in Sources */ = {isa = PBXBuildFile; fileRef = 63323E9B800FE8CDA25BC895FC1E3B2C /* stream_salsa2012.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 1DED6033980F6023435CF0E4C6C1173A /* Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = EF8D1AA8470987C23FD75AEB7493FE7C /* Utils.swift */; }; - 1E931FE365489D3C36B7D4B6DCD145FF /* DispatchQueue+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = C6A77F33B8864EAEC280D315E122F5B9 /* DispatchQueue+Promise.swift */; }; - 216568A70F11A87E1EA26D3A6AC75BB5 /* Collection+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D6F9FB030621398C9F85520B7DD17E0 /* Collection+Extension.swift */; }; - 21C97C03E4D9EC8B9379141BC0897B68 /* ladder_namespace.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E60F04E66BB9E412F4A4FD1576F34D9 /* ladder_namespace.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 220386C2111838454BBE3EE9E472813B /* argon2-encoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B1AA6462359C75E74DC3666A5C75355 /* argon2-encoding.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 22310173691C42A5074D27F405C96888 /* CBC.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7CB61F288E217D8C436CD35AAF7E8D4 /* CBC.swift */; }; - 225836AD15DDD554EF06403574523533 /* crypto_aead_xchacha20poly1305.h in Headers */ = {isa = PBXBuildFile; fileRef = 988D6765914684104FB3556B05FC6065 /* crypto_aead_xchacha20poly1305.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 225A176CFECFA263A2ED65276E628EBA /* aead_aes256gcm_aesni.c in Sources */ = {isa = PBXBuildFile; fileRef = BA26594019F4E949950B51C1AC8431AA /* aead_aes256gcm_aesni.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 22C24B6B462A7FB98F05223B0FE20BB5 /* wrap.swift in Sources */ = {isa = PBXBuildFile; fileRef = A446554429C8A51E8B7C216F83270456 /* wrap.swift */; }; - 23352C1BD2BD1915C66DA889CD1A9E2C /* crypto_generichash_blake2b.h in Headers */ = {isa = PBXBuildFile; fileRef = 4361D29DE3CC5313ADA5BCA037D2077D /* crypto_generichash_blake2b.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 237C89F8D0269D845FC1CD3B89296B43 /* pwhash_argon2i.c in Sources */ = {isa = PBXBuildFile; fileRef = 89CCB0B1A340C72ADAEDA8BC6025AEE5 /* pwhash_argon2i.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 23CC9E351BCEF25D42602F828D730CF9 /* crypto_core_hchacha20.h in Headers */ = {isa = PBXBuildFile; fileRef = B0019EB0E52DAD55C66459CE6151B772 /* crypto_core_hchacha20.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2416FCDF666799220692E0F1AD574E02 /* crypto_stream_chacha20.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D6C9B172D5F3AFF240C67087DC931E5 /* crypto_stream_chacha20.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2421518D91D550B954BA2BDDFACD79A9 /* poly1305_donna32.h in Headers */ = {isa = PBXBuildFile; fileRef = FDFD3F6F778C52F97699B36406BA738A /* poly1305_donna32.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 24273FC91B6774D7DEB29D3CF0E8DE81 /* Pods-web3swift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6023F205D9959B2DEA3718EAAE91B6D1 /* Pods-web3swift-dummy.m */; }; - 24634282D9828FFD11C2BD4C546BAD53 /* int128_aes128ctr.c in Sources */ = {isa = PBXBuildFile; fileRef = 169FEF91B9E37E23AA6E4328D4234C87 /* int128_aes128ctr.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 24ABD62828F7C2B470704860823FF864 /* blake2b-compress-avx2.h in Headers */ = {isa = PBXBuildFile; fileRef = 871EE5D967757BE6326B4EF8141344B5 /* blake2b-compress-avx2.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2530EE771CA3D179A6B84BF5B85BDB22 /* CFB.swift in Sources */ = {isa = PBXBuildFile; fileRef = A73C1E7F3AB6676FD25D13F20470CAFC /* CFB.swift */; }; - 25DC254F0F91AA1D23E52CFABA3C1B0D /* onetimeauth_poly1305.c in Sources */ = {isa = PBXBuildFile; fileRef = 41A4019745ECCE29DCA77B0C7A801C0B /* onetimeauth_poly1305.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 26464DC7AC5509B5F6C9FB480927CC74 /* crypto_auth_hmacsha512.h in Headers */ = {isa = PBXBuildFile; fileRef = E2B74125E27DA8D444DE24EB9F4953F6 /* crypto_auth_hmacsha512.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 2709CF513A4ABF4C895C6E3FE4CB5E8A /* hang.m in Sources */ = {isa = PBXBuildFile; fileRef = A388CED3C347A4DD974F069E34EEB032 /* hang.m */; }; - 2794CAB200DDF53433F9078B5CA43B49 /* blake2b-compress-ssse3.c in Sources */ = {isa = PBXBuildFile; fileRef = D29FB119763086DC8AEE0D47EC4BFC72 /* blake2b-compress-ssse3.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 27A81607F812846904D6F15BDA729DD7 /* runtime.h in Headers */ = {isa = PBXBuildFile; fileRef = 2057792A91F668E3AF4D7B96579D73E2 /* runtime.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 28086C0B08C2D9EE76BB631C3F6A8ECB /* crypto_core_hsalsa20.h in Headers */ = {isa = PBXBuildFile; fileRef = AB2DF9FD64F1C8CCB4DE8BE9DEB14EBF /* crypto_core_hsalsa20.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 29196944F97910D49D7A4647010C1220 /* verify.c in Sources */ = {isa = PBXBuildFile; fileRef = 58C76624A45228A50EBA19A00433E427 /* verify.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 2A850CB2521CCF63206C98B1AD9CC183 /* base2.h in Headers */ = {isa = PBXBuildFile; fileRef = 485FD4248C3F35857951295FC75BEEA4 /* base2.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2B6AEC2328D5C7204F03D3A477089C5D /* SipHashable.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6A32356029CA16B9B0EB9DE4E017172 /* SipHashable.swift */; }; - 2BC35333C65977D8CC82056E07428A2F /* HMAC+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E492F9F107AE43CB50CAF2658C3D1F9 /* HMAC+Foundation.swift */; }; - 2DC344BC76550F546299454C6980DAEC /* Hashable.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7FEC28F3DBFD25BCA60F3E7C8D6FF15 /* Hashable.swift */; }; - 2E0AC14311F0BA8AB0889866A070A324 /* crypto_box.h in Headers */ = {isa = PBXBuildFile; fileRef = A6DCA6AC369C0BCAE9A5CBB1B8D62CB7 /* crypto_box.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2E6CD21CD44D5C5A7AE64FC2855A05B4 /* crypto_aead_chacha20poly1305.h in Headers */ = {isa = PBXBuildFile; fileRef = 1920F8834A4EC1BE93F02EB6F4A974E2 /* crypto_aead_chacha20poly1305.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 2E87C1D283D28C61FAB08B36FEBCBE11 /* chacha20_dolbeau-avx2.c in Sources */ = {isa = PBXBuildFile; fileRef = 96142A4E5AE61FA6DE86A0FFAB459299 /* chacha20_dolbeau-avx2.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 2ED198E9CD25FD62702F73006CA5A137 /* ladder_base_namespace.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BA0B7FF20263E9F074910358BC1FF12 /* ladder_base_namespace.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2F6D106A08CCC7337A033DBA66E82B70 /* crypto_stream_salsa20.h in Headers */ = {isa = PBXBuildFile; fileRef = DBC05BB39007CF3D59B462B7595BDFAD /* crypto_stream_salsa20.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 301F8EB752CCD9BB9DD75E0CCAC4169F /* crypto_kdf.h in Headers */ = {isa = PBXBuildFile; fileRef = 66FA87445DE5FDF4005EE48476B2F018 /* crypto_kdf.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 30AA0CB65A0C2ECB33366C5BE6B9675D /* crypto_kdf.c in Sources */ = {isa = PBXBuildFile; fileRef = B6901EF722C6C5B3E00C2D18518E9E28 /* crypto_kdf.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 31D9CCCECC0EEAB5E1CDA07F806FADBA /* box_curve25519xsalsa20poly1305.c in Sources */ = {isa = PBXBuildFile; fileRef = E29715822318F05AE76DDCD18B9539DA /* box_curve25519xsalsa20poly1305.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 333171BA934355EACBEDB924CEAF8640 /* Comparable.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD1B910902B731C788D4438432C1AF02 /* Comparable.swift */; }; - 335F58B2D473F606BD9857559B348BD7 /* Array+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 884A07B6837356CA64FAF158BADA4B38 /* Array+Extension.swift */; }; - 33C6400354FD62EBB412A930162F3AF1 /* crypto_stream_salsa2012.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A536463390FA2F304312DD11AC8EB7 /* crypto_stream_salsa2012.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 35E471ED57984AE320D0F646D62E0128 /* crypto_box_seal.c in Sources */ = {isa = PBXBuildFile; fileRef = 36AB04E1564A9C0592D75F115A0AABB9 /* crypto_box_seal.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 3626B94094672CB1C9DEA32B9F9502E1 /* TaskDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8458DD49204B0E21C7055CB05FAFAC19 /* TaskDelegate.swift */; }; - 36403880474BB3D9AFFEDA5401DB79CD /* base.h in Headers */ = {isa = PBXBuildFile; fileRef = BA50C6FD6AD4118DA0989A5BB014306D /* base.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 36C1874BB7D075DB54486AF6527079F4 /* randombytes_sysrandom.c in Sources */ = {isa = PBXBuildFile; fileRef = 36F010C412B0464B6D658002BEDF5723 /* randombytes_sysrandom.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 36E8B09B7AE86A747F4BB58FDF1A5326 /* crypto_shorthash_siphash24.h in Headers */ = {isa = PBXBuildFile; fileRef = 2454490E1007FB369BF6BFAD4868AADC /* crypto_shorthash_siphash24.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 36EFBA3A9ACD02D86DE3622B190BE326 /* salsa20_xmm6int-sse2.h in Headers */ = {isa = PBXBuildFile; fileRef = 324F91F63FDDC4B0E982B1F2725216EF /* salsa20_xmm6int-sse2.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3700B0C1A40AECC1F99E58C2A01F30F5 /* NSURLSession+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1DD0E98E1907020FE22D43E0F3DE0EF1 /* NSURLSession+Promise.swift */; }; - 37372EDFF413EE037F3969B279917FC9 /* chacha20_dolbeau-ssse3.h in Headers */ = {isa = PBXBuildFile; fileRef = 8ED755447807B06F68746037A5C18431 /* chacha20_dolbeau-ssse3.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3A04F2935519271B1EC935CA165294A2 /* RandomBytesSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC378F885805A36731D06E74B6D435B /* RandomBytesSequence.swift */; }; - 3AA03018A6C0C68851C8CDB15F9470B6 /* RandomAccessCryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88AD05DB9B5296F0B6746762D9BB788A /* RandomAccessCryptor.swift */; }; - 3B134360BD98618091867140CF80A3AE /* Sodium-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E67050266B4560B8D795D8784F3A6F0 /* Sodium-dummy.m */; }; - 3B398F53E01A88D0FAD37752321F8429 /* crypto_stream_salsa2012.h in Headers */ = {isa = PBXBuildFile; fileRef = 24E31EE2027B84080F63B9DC43E99C53 /* crypto_stream_salsa2012.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 3B60C456D9492DE11E88242A9FE2B46F /* AnyPromise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 083AD0902035CAA57413CC1FBC6B5B8A /* AnyPromise.swift */; }; - 3BCF683D46EE12F6D6C91FB34102C081 /* fe.h in Headers */ = {isa = PBXBuildFile; fileRef = 9552E59D92B6A40FAB30C5F80273227B /* fe.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3C00073FFC1672ECAB81588D56B68DE2 /* AwaitKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF21F9017E9A93F72F694260565C10CE /* AwaitKit.swift */; }; - 3C45EFBC434F614C32D7B7071ECE31C9 /* DispatchQueue+Async.swift in Sources */ = {isa = PBXBuildFile; fileRef = 760B26E0B47A6F1464A65A0AD98AEF89 /* DispatchQueue+Async.swift */; }; - 3C5BAFA66961B3B9562AD37C5CF00938 /* crypto_core_hsalsa20.h in Headers */ = {isa = PBXBuildFile; fileRef = A006D517257D1C97A7961745A149F8A6 /* crypto_core_hsalsa20.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3D133071AF42DFDA7E1D2D2A2414B700 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5A9A555A4CB5C94FF77876AD171CBBB4 /* Foundation.framework */; }; - 3F008F8C946814A02F02D10DA54158EB /* ZeroPadding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F2161AAD28EFFA2135EF3FEDAAC07F9 /* ZeroPadding.swift */; }; - 3F3F94338B88E56A811EE42FBC4AA4D3 /* crypto_secretbox_easy.c in Sources */ = {isa = PBXBuildFile; fileRef = 0FE4F50E6FB25D4E9A1B79D609D10D21 /* crypto_secretbox_easy.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 3F42F7E13FEFC594196AEDC87482FBD5 /* version.c in Sources */ = {isa = PBXBuildFile; fileRef = 7D08F082492906EB2BD8456D2230104C /* version.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 40028920CEDB06BD4A068BA87527490C /* AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 115FAFF9F15D3D7F4835CB4EA1207223 /* AnyPromise.m */; }; - 4048FB3E06D542865BC2F966C8DA21CF /* crypto_auth_hmacsha256.h in Headers */ = {isa = PBXBuildFile; fileRef = BDE2D53A097AE2EBCD4B1EE9D4423155 /* crypto_auth_hmacsha256.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 405399419B157DF8EF37D56349523B94 /* blake2b-compress-avx2.c in Sources */ = {isa = PBXBuildFile; fileRef = 09D297A455F948F73953BA77E47C7A92 /* blake2b-compress-avx2.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 41C2FA1F4D0080553E9123A51A805F88 /* sse2_64_32.h in Headers */ = {isa = PBXBuildFile; fileRef = 04A37EE3399FFC51092457C51A04D374 /* sse2_64_32.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4321841108FEE455C008A9D8667795AA /* crypto_hash_sha512.h in Headers */ = {isa = PBXBuildFile; fileRef = 94C51EFE53D059A0A494ACB765C78A10 /* crypto_hash_sha512.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 43BD49FBF2F61B795CBA8A300148A773 /* stream_salsa2012_ref.c in Sources */ = {isa = PBXBuildFile; fileRef = C882186B076DB2CEE3935BF84AF992AC /* stream_salsa2012_ref.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 43FA7875FC5643FFF8657DF52D2AF4A0 /* Sodium.h in Headers */ = {isa = PBXBuildFile; fileRef = F03999B5FD8FC48C689AADA8853A188B /* Sodium.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4468FC3E35360ADB85AEFB29324AD6BF /* stream_salsa208_ref.c in Sources */ = {isa = PBXBuildFile; fileRef = 34DDE3DB766969661F353977F4893D4E /* stream_salsa208_ref.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 456DF8BB249E816B978781844021EE90 /* race.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81AD82C45A2CFB1E14DF352809C728A9 /* race.swift */; }; - 4588D2AC75968B78C7153936F67A189E /* blake2b-long.c in Sources */ = {isa = PBXBuildFile; fileRef = 467F8FFA42FBDCA2CD2D7F0C4F19D974 /* blake2b-long.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 462E11A980823607DB4D49AAFD2C38BF /* BigUInt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E8D5843CA14BE50903DA3C0FD314890 /* BigUInt.swift */; }; - 4729E24D0A59E95857DF580A9C4BF958 /* Poly1305.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0418853173CC001617AE605CE8BA0145 /* Poly1305.swift */; }; - 474F58CD29432580FA00DCFB7AF51DF1 /* Blowfish+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8FC06162177A3707CD7DA1DB9FEAB2F7 /* Blowfish+Foundation.swift */; }; - 478916B9BC96B5FA426DB920157E0235 /* SHA3.swift in Sources */ = {isa = PBXBuildFile; fileRef = 890A4347F32948BEC7573D6A8BC4AF68 /* SHA3.swift */; }; - 479141C11D002FE02691083F29E8AD0A /* BlockModeOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = E759F7D4B2094E694B942243481FAE26 /* BlockModeOptions.swift */; }; - 4856104E402235169F42552A1F92322A /* salsa20_ref.c in Sources */ = {isa = PBXBuildFile; fileRef = 5D6880B39A46D38EDFC3673C6F03942F /* salsa20_ref.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 49F9EFDBDB511740FD4E7B83844A6B6F /* PBKDF1.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0ABA4E3E67D289FE88CA8143C4A30D7 /* PBKDF1.swift */; }; - 4A288E55691247566255D243AE5A8095 /* Sodium.swift in Sources */ = {isa = PBXBuildFile; fileRef = 86F4390692335E8406575A4CE4C4C02D /* Sodium.swift */; }; - 4A6A4851CC23D2D5B20AF274EC85F04D /* Padding.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA853ECD5B6B683B24B64E2342FCF25F /* Padding.swift */; }; - 4A9757E18105065850C029144674483A /* crypto_stream_xchacha20.h in Headers */ = {isa = PBXBuildFile; fileRef = ACA4A70D7B5E06B51DCA6AEDF3B3CAC2 /* crypto_stream_xchacha20.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4AA1BD53D2D4BC46569E1C1DCFA9DB3A /* salsa20_xmm6.h in Headers */ = {isa = PBXBuildFile; fileRef = 818C8B149FF7EE7C277809CF9F4D17E3 /* salsa20_xmm6.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4AFE85213948DEAD418E98CFAA4A7918 /* fwd.h in Headers */ = {isa = PBXBuildFile; fileRef = 15AADC1A0ED4397158A6183AC0091358 /* fwd.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4B2DF1BFB6BF1DB60BD30E0133D3EF05 /* argon2-core.c in Sources */ = {isa = PBXBuildFile; fileRef = 921B4A2ED93FF4913140DF4A82FCD2B7 /* argon2-core.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 04056851010D25CFD03211572FEAEF64 /* Primitive Types.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE376550A8CBEF1C9BC27EFF4801B346 /* Primitive Types.swift */; }; + 041324D9E63975573A8091DFDDEF1C65 /* RandomAccessBlockModeWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 855995B5835DD243A809024B6BB3E44F /* RandomAccessBlockModeWorker.swift */; }; + 05A24A6FEA8337F285D66E1421DBC88C /* ecmult_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = E24ED0404E0A0DA4DDA672473B5C99B8 /* ecmult_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 05D6BC823A6E5A38215301A817578BD2 /* Sodium.swift in Sources */ = {isa = PBXBuildFile; fileRef = 200C7AA5438C49D9F2F8520247F40DA5 /* Sodium.swift */; }; + 0749E590EADD797569435BC82AF11E85 /* ecmult_const_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 91DA9B1984A76808340777213870CDA1 /* ecmult_const_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0803A773F58649748DA383F428EBD7DD /* after.m in Sources */ = {isa = PBXBuildFile; fileRef = C04F62431EDF8408731465821FAB17AA /* after.m */; }; + 0842A55A6C2FF1F7682024A5258CF492 /* beforenm_aes128ctr.c in Sources */ = {isa = PBXBuildFile; fileRef = A6EB93EB92398F82FABCCCD853710937 /* beforenm_aes128ctr.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 0853B4573417B4EA70C3E5868D9F2B79 /* x25519_ref10.h in Headers */ = {isa = PBXBuildFile; fileRef = D176FC18B34D481AB25938E55CD4418B /* x25519_ref10.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 08999F3EE37AFF49BD22796A2B909743 /* after.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38A21D6E87EA6D6A62BE8872B1832BD6 /* after.swift */; }; + 09F93153C909B2AB3749991F58400186 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5A9A555A4CB5C94FF77876AD171CBBB4 /* Foundation.framework */; }; + 0A973822FB822707E356D5D3D153B16C /* crypto_pwhash_argon2id.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BB5D6A2398A86AEE160E6CC065A9743 /* crypto_pwhash_argon2id.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0AB8ACB20DB740B9EB096E9C67865963 /* crypto_aead_xchacha20poly1305.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A7A32794631740B74DB60445F9E3D3C /* crypto_aead_xchacha20poly1305.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0C057F605156BADF076E230EA43AAEE6 /* curve25519_donna_c64.c in Sources */ = {isa = PBXBuildFile; fileRef = 6E74EC7BB0D56771EDD3E24321F7BBF9 /* curve25519_donna_c64.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 0C8A2D86647DF8D8B66DCFA60181A438 /* mutex.h in Headers */ = {isa = PBXBuildFile; fileRef = FD5110BF64D11F842134688BBED75E60 /* mutex.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0C9F76EAB3D5C99ED2EAD2C422D53856 /* Floating Point Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1351083D8F2D315FDE0DAE3A0508C0F /* Floating Point Conversion.swift */; }; + 0D88FE4F5E550BFC99CCC87CE477FC45 /* stream_aes128ctr_nacl.c in Sources */ = {isa = PBXBuildFile; fileRef = 0061CDB4EDC26178A3D56DF93FC2F48A /* stream_aes128ctr_nacl.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 0DE4DFA6DD9B6808CDF186C55CA63BB5 /* Authenticator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B32079A83AC320B219446AE2531508C /* Authenticator.swift */; }; + 0E11C14847BB2B889EFF991E7416B51B /* ecmult.h in Headers */ = {isa = PBXBuildFile; fileRef = 194CFD6780762E2D8DD14651CEF1F13B /* ecmult.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0E12D8586AFB79F410044DE1381AAAD0 /* shorthash_siphash24.c in Sources */ = {isa = PBXBuildFile; fileRef = AC97701660A1C57C612C75C8885B9B5F /* shorthash_siphash24.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 0E3F650A24B8775FEB581E0A3180C356 /* crypto_stream_chacha20.h in Headers */ = {isa = PBXBuildFile; fileRef = D6D2DE33877F1E1F525ADA572F7E2C31 /* crypto_stream_chacha20.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0E52FD7BF26B784DA73413BA19CC4AEE /* pbkdf2-sha256.h in Headers */ = {isa = PBXBuildFile; fileRef = 89975C5155547E680A0451EA87C09C21 /* pbkdf2-sha256.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0EB915029F9BFF4FD7311D4FBF84DF01 /* Utils+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2769F723C3DE1F56C3FF7E574EEEACD /* Utils+Foundation.swift */; }; + 0F85C22525EF69923FAD0F9EFB419751 /* onetimeauth_poly1305.h in Headers */ = {isa = PBXBuildFile; fileRef = DE205A1A1516149F559DCA26CBFA94B0 /* onetimeauth_poly1305.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0FBDCD21AD05262C3FC4D88B558E7B8E /* u1.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D9D11493E3EE35AD3B313FF74EA7557 /* u1.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 10EB23E9ECC4B33E16933BB1EA560B6A /* Timeline.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCAF291B241373EFC19176F0FBBEABC2 /* Timeline.swift */; }; + 1249BB62F728D86D3D317B159B2FCE17 /* main_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = BB1C4BA760DD6389E4504F84209E46FD /* main_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 125E16E032D9EB73B86DE9EE85E7C283 /* CALayer+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 126388EA10F6ED929188914116A9A351 /* CALayer+AnyPromise.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 12A0F7C78F14733B25C9F3C61ED1C8D6 /* Sign.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E9C8E6D6E8B32B5AB5E0A3A44D0ADB1 /* Sign.swift */; }; + 13319D017D26653501E0FA331833EC3C /* Random.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7585A4AC74E781A65EB8FD64C1DEB0AD /* Random.swift */; }; + 1367FBD6D5822DE229FF9B087C3FCC3D /* crypto_secretbox_xchacha20poly1305.h in Headers */ = {isa = PBXBuildFile; fileRef = A122608E3EA15CE162B320153E50FD1C /* crypto_secretbox_xchacha20poly1305.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 13BB6F19DF709C2863E04523CCB49D50 /* AES+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = D12F9A14671F713C138E36D1BFBB4368 /* AES+Foundation.swift */; }; + 13F6AB7435F9F3AB5D92EDDF8ECF8A78 /* crypto_onetimeauth_poly1305.h in Headers */ = {isa = PBXBuildFile; fileRef = DB0C9B099068852FF502081301B6AEA6 /* crypto_onetimeauth_poly1305.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 14394D453C66CF848631DC85CBCE9D34 /* Process+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97512CDF813ACB43088555F5E9D997E6 /* Process+Promise.swift */; }; + 14F3610176E736D8406BCBDB091A8FD0 /* GenericHash.swift in Sources */ = {isa = PBXBuildFile; fileRef = 82921EC6A1730DE76CF5F6B5482AE67A /* GenericHash.swift */; }; + 1525FFDEA43B705E29333EC0469DD57F /* field_5x52.h in Headers */ = {isa = PBXBuildFile; fileRef = D4BB87ACC78B3A8FC305B1A154ED6056 /* field_5x52.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 159DD145BC492A8EFF8F47B2935D3106 /* crypto_kdf.h in Headers */ = {isa = PBXBuildFile; fileRef = 061E985595B1F655DF2773164CCF9585 /* crypto_kdf.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 162DDB84B84DE23771AD4C5510C4BA53 /* ECB.swift in Sources */ = {isa = PBXBuildFile; fileRef = E27CDA0F2A2A95F9F26ABD98551BF5F1 /* ECB.swift */; }; + 16EACCEBFC4C0A2857AB6CB05CA0C963 /* crypto_kx.c in Sources */ = {isa = PBXBuildFile; fileRef = 665F4D2AD8D7E4A14F95CB57C022B375 /* crypto_kx.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 17F8E260E7B7A42FFCA1E76A67DBAF35 /* Addition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 941C4C199B0BD01B309D824EA561D297 /* Addition.swift */; }; + 19EA5697FC7235880778983748423872 /* Pods-web3swift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A5ECE6EA5AADEAC703873C853FF56253 /* Pods-web3swift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1A0352B18582C6D4725C5FCEF13D828E /* Error.swift in Sources */ = {isa = PBXBuildFile; fileRef = 48325FEA6DA709500C1D9FBD8D2F4152 /* Error.swift */; }; + 1AF2E5DFC1DC4C7AACE16B25C798860D /* Updatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 149D31681CD859BFA868AF02E0207D98 /* Updatable.swift */; }; + 1B9EDEDC964E6B08F78920B4F4B9DB84 /* Alamofire-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A3324A5954A5BB93394BBFD5710817D7 /* Alamofire-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1C2D5ED83EDD1CF7DB4D6691650A071B /* auth_hmacsha512256.c in Sources */ = {isa = PBXBuildFile; fileRef = A624E79873D85DBBA0B99408C1057430 /* auth_hmacsha512256.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 1D3C045869D071D68EF4441903512344 /* blake2.h in Headers */ = {isa = PBXBuildFile; fileRef = D5E447044BE8E846F5491C860AE71506 /* blake2.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1D44C163D50469DB2C82978E42CC999B /* stream_salsa2012.c in Sources */ = {isa = PBXBuildFile; fileRef = AEA1BB0659091BE909860B67DC5AC347 /* stream_salsa2012.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 1DED6033980F6023435CF0E4C6C1173A /* Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80603D9A2EE0D52DA2833C2709FC17A7 /* Utils.swift */; }; + 1E931FE365489D3C36B7D4B6DCD145FF /* DispatchQueue+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 86E2BF2097E0611E9F0BBAA6BCA0B3F7 /* DispatchQueue+Promise.swift */; }; + 203B6892E2160863372E1552AE624C66 /* crypto_auth_hmacsha256.h in Headers */ = {isa = PBXBuildFile; fileRef = 0EEFE57ACD69B006019558A2F179D7C4 /* crypto_auth_hmacsha256.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 20A83FB46A142FC9EB9D0DD802642735 /* field_5x52_int128_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 4605154FE7FA01D775E382F72BB7E19C /* field_5x52_int128_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 216568A70F11A87E1EA26D3A6AC75BB5 /* Collection+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D3A67C3CF08A886A95F5A1283C7322D /* Collection+Extension.swift */; }; + 21C97C03E4D9EC8B9379141BC0897B68 /* ladder_namespace.h in Headers */ = {isa = PBXBuildFile; fileRef = D9724CFE2F9521E0559D3D4F8A48B7DD /* ladder_namespace.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 220386C2111838454BBE3EE9E472813B /* argon2-encoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B04022934D52B8088218535AC8ED661 /* argon2-encoding.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 22310173691C42A5074D27F405C96888 /* CBC.swift in Sources */ = {isa = PBXBuildFile; fileRef = A806138470021A30F1FDF370500E7405 /* CBC.swift */; }; + 225836AD15DDD554EF06403574523533 /* crypto_aead_xchacha20poly1305.h in Headers */ = {isa = PBXBuildFile; fileRef = 7939E635B1B11605171D4005B536B633 /* crypto_aead_xchacha20poly1305.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 225A176CFECFA263A2ED65276E628EBA /* aead_aes256gcm_aesni.c in Sources */ = {isa = PBXBuildFile; fileRef = 66AB214C94A062D30EE83206E4961AC7 /* aead_aes256gcm_aesni.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 22C24B6B462A7FB98F05223B0FE20BB5 /* wrap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6B9C3B5A326486FB7260424DEAFA0C2B /* wrap.swift */; }; + 237C89F8D0269D845FC1CD3B89296B43 /* pwhash_argon2i.c in Sources */ = {isa = PBXBuildFile; fileRef = 07AB0F9D3D4BF834352986B5643E0154 /* pwhash_argon2i.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 23CC9E351BCEF25D42602F828D730CF9 /* crypto_core_hchacha20.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C196DE93DF11E6172D895A33FBD32CE /* crypto_core_hchacha20.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 23E508BFEBB81D74E7D26E4CD08B81CD /* crypto_sign_edwards25519sha512batch.h in Headers */ = {isa = PBXBuildFile; fileRef = 0EB415CD3D551173C0775C0C806F4AF8 /* crypto_sign_edwards25519sha512batch.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 2416FCDF666799220692E0F1AD574E02 /* crypto_stream_chacha20.h in Headers */ = {isa = PBXBuildFile; fileRef = C38BCC86401EC1098D276129407562CC /* crypto_stream_chacha20.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2421518D91D550B954BA2BDDFACD79A9 /* poly1305_donna32.h in Headers */ = {isa = PBXBuildFile; fileRef = 4EAA1484F58CBC589EE7F19BE6A71816 /* poly1305_donna32.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 24634282D9828FFD11C2BD4C546BAD53 /* int128_aes128ctr.c in Sources */ = {isa = PBXBuildFile; fileRef = B1408CD377151BAD54BD7E2219731C25 /* int128_aes128ctr.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 2477742F207C9784B02262F14C087C57 /* crypto_box.h in Headers */ = {isa = PBXBuildFile; fileRef = E974A7C8E586D5D228C7459016BEAA2C /* crypto_box.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 24ABD62828F7C2B470704860823FF864 /* blake2b-compress-avx2.h in Headers */ = {isa = PBXBuildFile; fileRef = 7715AEC23705AE0548E8D82B38137082 /* blake2b-compress-avx2.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 24AED1447A9581AB5D9F5CE1F3F1D2C3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5A9A555A4CB5C94FF77876AD171CBBB4 /* Foundation.framework */; }; + 2530EE771CA3D179A6B84BF5B85BDB22 /* CFB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D8E821905DA6F9616C0E6CA4699A3F3 /* CFB.swift */; }; + 25963E3748861982148896098F8FAB3E /* crypto_sign.h in Headers */ = {isa = PBXBuildFile; fileRef = 95498B857B79AAF3B0D8C50476345603 /* crypto_sign.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 25DC254F0F91AA1D23E52CFABA3C1B0D /* onetimeauth_poly1305.c in Sources */ = {isa = PBXBuildFile; fileRef = 930721CFCA4B7636184D238056AC1CE1 /* onetimeauth_poly1305.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 26B69655F4A2A56393D206A2FA429E80 /* randombytes.h in Headers */ = {isa = PBXBuildFile; fileRef = 789B599CCA6C037989115E6E029B4694 /* randombytes.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 2709CF513A4ABF4C895C6E3FE4CB5E8A /* hang.m in Sources */ = {isa = PBXBuildFile; fileRef = E74A8CFCF1827026C6E4899D6DB42DB2 /* hang.m */; }; + 2794CAB200DDF53433F9078B5CA43B49 /* blake2b-compress-ssse3.c in Sources */ = {isa = PBXBuildFile; fileRef = 8833EB488DC8FC2CFF384479F1B8EF77 /* blake2b-compress-ssse3.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 27A81607F812846904D6F15BDA729DD7 /* runtime.h in Headers */ = {isa = PBXBuildFile; fileRef = 369A7ABD70E1D20F324E17B213F315DD /* runtime.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2838405845DCBBC3003306B282D05000 /* secp256k1.h in Headers */ = {isa = PBXBuildFile; fileRef = AAC3E46F1E1BAF03DF6FC016BBFC8B0C /* secp256k1.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 29196944F97910D49D7A4647010C1220 /* verify.c in Sources */ = {isa = PBXBuildFile; fileRef = 82A2437B6C6C3672ABE44F418374365B /* verify.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 29C08E6554E7F687FC3A87C769B0388E /* secp256k1.c in Sources */ = {isa = PBXBuildFile; fileRef = EF2B473B6FD8B03E940D2CDA6878B720 /* secp256k1.c */; }; + 2A850CB2521CCF63206C98B1AD9CC183 /* base2.h in Headers */ = {isa = PBXBuildFile; fileRef = B04D3B26CA2B1E9B3FDDCB69DEC64FFF /* base2.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2B6AEC2328D5C7204F03D3A477089C5D /* SipHashable.swift in Sources */ = {isa = PBXBuildFile; fileRef = A0D4A370C25E9C534700F68F261CC9D8 /* SipHashable.swift */; }; + 2BC35333C65977D8CC82056E07428A2F /* HMAC+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ED5B2A162192FC4D529A1D45A6FFF7D /* HMAC+Foundation.swift */; }; + 2D86160D7E2E6E2BC28774EF3AC178B4 /* crypto_stream_salsa208.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E1889A8DC1C478F64035CFE6C4913A8 /* crypto_stream_salsa208.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 2DC344BC76550F546299454C6980DAEC /* Hashable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55404F2D8B8FC884ACE8D8CDD8C416EC /* Hashable.swift */; }; + 2E0AC14311F0BA8AB0889866A070A324 /* crypto_box.h in Headers */ = {isa = PBXBuildFile; fileRef = DE9DF7CDD6CFCDFF62F76D27201B2BBC /* crypto_box.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2E87C1D283D28C61FAB08B36FEBCBE11 /* chacha20_dolbeau-avx2.c in Sources */ = {isa = PBXBuildFile; fileRef = 5432D637C176B1115030CFBB2964B8E0 /* chacha20_dolbeau-avx2.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 2ED198E9CD25FD62702F73006CA5A137 /* ladder_base_namespace.h in Headers */ = {isa = PBXBuildFile; fileRef = 67338E52E3E15864C350471B7C9D0C9F /* ladder_base_namespace.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 30AA0CB65A0C2ECB33366C5BE6B9675D /* crypto_kdf.c in Sources */ = {isa = PBXBuildFile; fileRef = FAD8B1A0353421019632DFAA69E13A02 /* crypto_kdf.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 30E951F5A4CBA3273E9D6E5D0D1617E2 /* crypto_hash_sha512.h in Headers */ = {isa = PBXBuildFile; fileRef = 12053A4209496A4A19A160E28F961618 /* crypto_hash_sha512.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 31D9CCCECC0EEAB5E1CDA07F806FADBA /* box_curve25519xsalsa20poly1305.c in Sources */ = {isa = PBXBuildFile; fileRef = D89C57FF4DCF499E2C6D50E0F7516A68 /* box_curve25519xsalsa20poly1305.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 333171BA934355EACBEDB924CEAF8640 /* Comparable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A41CAC38257F5E0E39E1C873BBC8023 /* Comparable.swift */; }; + 335F58B2D473F606BD9857559B348BD7 /* Array+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68CA01C773F279980B3D1A83F49CA3D3 /* Array+Extension.swift */; }; + 33BF9F1DE05037736D39FED12D4D2FDB /* crypto_shorthash_siphash24.h in Headers */ = {isa = PBXBuildFile; fileRef = 09FCF4661FE7FF5B713712D229D4A21F /* crypto_shorthash_siphash24.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 33C6400354FD62EBB412A930162F3AF1 /* crypto_stream_salsa2012.h in Headers */ = {isa = PBXBuildFile; fileRef = 3694D1B6FE33F2B7975341353EE2BE29 /* crypto_stream_salsa2012.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 351B10EBDF18411F92B659FF06D5B246 /* num_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = CE5203F63A8342E95DB0C719FF689B9B /* num_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 357EB8B1BB5D85FAD59682CF5109F9CE /* scalar_low_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 9142468A95060DE3D1E549AFD67F7404 /* scalar_low_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 35E471ED57984AE320D0F646D62E0128 /* crypto_box_seal.c in Sources */ = {isa = PBXBuildFile; fileRef = 00964D8968EC73CECB3D05AFB39B25BD /* crypto_box_seal.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 3626B94094672CB1C9DEA32B9F9502E1 /* TaskDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D7A617C500889B011493D21FE7A4788 /* TaskDelegate.swift */; }; + 36403880474BB3D9AFFEDA5401DB79CD /* base.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D4648EE27E146BB24C2C0966CCCFC90 /* base.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 36C1874BB7D075DB54486AF6527079F4 /* randombytes_sysrandom.c in Sources */ = {isa = PBXBuildFile; fileRef = 599471E29D2F9AB475B89739038C567A /* randombytes_sysrandom.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 36E8B09B7AE86A747F4BB58FDF1A5326 /* crypto_shorthash_siphash24.h in Headers */ = {isa = PBXBuildFile; fileRef = D3F0134ED7A7C9535A7EA63014F8B211 /* crypto_shorthash_siphash24.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 36EFBA3A9ACD02D86DE3622B190BE326 /* salsa20_xmm6int-sse2.h in Headers */ = {isa = PBXBuildFile; fileRef = B89C0B253B5F6C24C45013381E2CAC99 /* salsa20_xmm6int-sse2.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3700B0C1A40AECC1F99E58C2A01F30F5 /* NSURLSession+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A2928D5D2EDB93525D5CFBB8CDF92F9 /* NSURLSession+Promise.swift */; }; + 37372EDFF413EE037F3969B279917FC9 /* chacha20_dolbeau-ssse3.h in Headers */ = {isa = PBXBuildFile; fileRef = A19A92D697511E33B378801748F55BC9 /* chacha20_dolbeau-ssse3.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3788C59CF8BF800DC51C0405311DF213 /* ShortHash.swift in Sources */ = {isa = PBXBuildFile; fileRef = C12185645CFC421A07B700064AA478AD /* ShortHash.swift */; }; + 39208519CE8FFD849408C08D057871F4 /* crypto_aead_chacha20poly1305.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D663C0CDF436D17D90A04E052218AFB /* crypto_aead_chacha20poly1305.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 3A04F2935519271B1EC935CA165294A2 /* RandomBytesSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1C1E539D98D15BE30F81B0597792FD3 /* RandomBytesSequence.swift */; }; + 3A4123BFDE61B390A32BA653862F2CB2 /* secp256k1_ios.h in Headers */ = {isa = PBXBuildFile; fileRef = B277EC7B1F52D372514A1F5C1CA729AB /* secp256k1_ios.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 3AA03018A6C0C68851C8CDB15F9470B6 /* RandomAccessCryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33C6D53C98D84EC5EC20B99CAFC911E7 /* RandomAccessCryptor.swift */; }; + 3B60C456D9492DE11E88242A9FE2B46F /* AnyPromise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26BB766A45376D4E7004CAD20B90ABCE /* AnyPromise.swift */; }; + 3BCF683D46EE12F6D6C91FB34102C081 /* fe.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D45A9CD3E26DA47608CD8C21DDFAAB /* fe.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3C00073FFC1672ECAB81588D56B68DE2 /* AwaitKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43E1A11E65ED2701A473D9D471EBE10C /* AwaitKit.swift */; }; + 3C45EFBC434F614C32D7B7071ECE31C9 /* DispatchQueue+Async.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDCD1A7265B03C270E306C6ECFC708F2 /* DispatchQueue+Async.swift */; }; + 3C5BAFA66961B3B9562AD37C5CF00938 /* crypto_core_hsalsa20.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FC8A2C990AE17FED3B361AF7FDA5FF2 /* crypto_core_hsalsa20.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3D01EE4C585437945F6ACF95D41A7985 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5A9A555A4CB5C94FF77876AD171CBBB4 /* Foundation.framework */; }; + 3EAE849E4B06B04D889E1139831F4E08 /* ecmult_gen_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = D957C62883D0C9D288754C24EAF62339 /* ecmult_gen_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3F008F8C946814A02F02D10DA54158EB /* ZeroPadding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 523BD1513B740E697C87C0ABCEB0C9DC /* ZeroPadding.swift */; }; + 3F3F94338B88E56A811EE42FBC4AA4D3 /* crypto_secretbox_easy.c in Sources */ = {isa = PBXBuildFile; fileRef = 59B9314071BF7E772E3F9AD3830A9783 /* crypto_secretbox_easy.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 3F42F7E13FEFC594196AEDC87482FBD5 /* version.c in Sources */ = {isa = PBXBuildFile; fileRef = 8BA98C5324ABAD49AD501CEDDE791E1F /* version.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 40028920CEDB06BD4A068BA87527490C /* AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = BF36A3F9796A65CF8CC87C6A3B847FEE /* AnyPromise.m */; }; + 4048FB3E06D542865BC2F966C8DA21CF /* crypto_auth_hmacsha256.h in Headers */ = {isa = PBXBuildFile; fileRef = 772E661C30FFBAF7A90E1ABEB7A11491 /* crypto_auth_hmacsha256.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 405399419B157DF8EF37D56349523B94 /* blake2b-compress-avx2.c in Sources */ = {isa = PBXBuildFile; fileRef = A7A96E7A2334264B3F3EC5EC35C42925 /* blake2b-compress-avx2.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 41C2FA1F4D0080553E9123A51A805F88 /* sse2_64_32.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B8348274CAB798E07D8F385C4F70F0C /* sse2_64_32.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 427172CE079A56C1D120F62050C5110D /* group.h in Headers */ = {isa = PBXBuildFile; fileRef = E2CA5E67E0AA450FE288FF9234B143D2 /* group.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4321841108FEE455C008A9D8667795AA /* crypto_hash_sha512.h in Headers */ = {isa = PBXBuildFile; fileRef = E08589A3E265B3B8A45AAE1054F48429 /* crypto_hash_sha512.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 43BD49FBF2F61B795CBA8A300148A773 /* stream_salsa2012_ref.c in Sources */ = {isa = PBXBuildFile; fileRef = 408A09BECC450F94D68EF6470996054D /* stream_salsa2012_ref.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 43F75E11104D9694F9B38DE4507693CE /* field_10x26.h in Headers */ = {isa = PBXBuildFile; fileRef = AD06B1F65EB15F6A0E4D35A756BA49F0 /* field_10x26.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 441C2F54E694AAF685BE9E4F20D30A25 /* crypto_auth_hmacsha512.h in Headers */ = {isa = PBXBuildFile; fileRef = FEB35885E0F16F5531B533C9621FCC1E /* crypto_auth_hmacsha512.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 4468FC3E35360ADB85AEFB29324AD6BF /* stream_salsa208_ref.c in Sources */ = {isa = PBXBuildFile; fileRef = 702D841E2DE003BE799230FEDCF3FA33 /* stream_salsa208_ref.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 456DF8BB249E816B978781844021EE90 /* race.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF9E21D371710F06647DC8AF6D073D56 /* race.swift */; }; + 4588D2AC75968B78C7153936F67A189E /* blake2b-long.c in Sources */ = {isa = PBXBuildFile; fileRef = 3B0CB1ED9DC473A77EC2A488CE972659 /* blake2b-long.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 462E11A980823607DB4D49AAFD2C38BF /* BigUInt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 907913A69CB4889AE525A8F5803F545D /* BigUInt.swift */; }; + 4729E24D0A59E95857DF580A9C4BF958 /* Poly1305.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FEBAD18AC0C32989F0D6DE435255E40 /* Poly1305.swift */; }; + 4742D839D1AEF69E442618C56453AF01 /* scalar_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = E88D8C10529622E9AB903834D20B37C9 /* scalar_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 474F58CD29432580FA00DCFB7AF51DF1 /* Blowfish+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 478BE0257179D940A8B8D1CDCEE3BCF8 /* Blowfish+Foundation.swift */; }; + 477F86693D3A7B956AF52920DFD6FCCB /* crypto_core_ed25519.h in Headers */ = {isa = PBXBuildFile; fileRef = 8116C4E6FB1D91DFAA4F811A17CA432A /* crypto_core_ed25519.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 478916B9BC96B5FA426DB920157E0235 /* SHA3.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE786DDC57924F9383758BECE7886086 /* SHA3.swift */; }; + 479141C11D002FE02691083F29E8AD0A /* BlockModeOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C79AC39B6CE0FD2E178E500D74CC7F27 /* BlockModeOptions.swift */; }; + 4856104E402235169F42552A1F92322A /* salsa20_ref.c in Sources */ = {isa = PBXBuildFile; fileRef = 88A3BBCF2F9645EE05B1249FC2165D45 /* salsa20_ref.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 49A8AA447258284FB62AA0316F3452DE /* scalar_8x32.h in Headers */ = {isa = PBXBuildFile; fileRef = B3FCA78B5FD3B288EDF169D9D45313CC /* scalar_8x32.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 49F9EFDBDB511740FD4E7B83844A6B6F /* PBKDF1.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C64D36651BD2BB25E90D404D20E911A /* PBKDF1.swift */; }; + 4A6A4851CC23D2D5B20AF274EC85F04D /* Padding.swift in Sources */ = {isa = PBXBuildFile; fileRef = C123A2EEC460F1EF453D014E83FA8C2A /* Padding.swift */; }; + 4A9757E18105065850C029144674483A /* crypto_stream_xchacha20.h in Headers */ = {isa = PBXBuildFile; fileRef = 5EE8E9BEE5CDCA8F1C6E53427F60D55C /* crypto_stream_xchacha20.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4AA1BD53D2D4BC46569E1C1DCFA9DB3A /* salsa20_xmm6.h in Headers */ = {isa = PBXBuildFile; fileRef = 56E0547174C288ED39F469015C8DE4AE /* salsa20_xmm6.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4AFE85213948DEAD418E98CFAA4A7918 /* fwd.h in Headers */ = {isa = PBXBuildFile; fileRef = DDE7F239B8D5113CABFDD4456739BC0E /* fwd.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4B2DF1BFB6BF1DB60BD30E0133D3EF05 /* argon2-core.c in Sources */ = {isa = PBXBuildFile; fileRef = E108AA36A595A6F2292E3A782A78EAEA /* argon2-core.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 4B36A95200ABC6EC8A3621121962CAEC /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 21BD0EA05E4040F3F97DB680C30FFBAB /* QuartzCore.framework */; }; - 4B85527A6F13AFEC019EDFC05A60B0DA /* join.swift in Sources */ = {isa = PBXBuildFile; fileRef = E17540CD69DC5F1BBC7B873764867CBB /* join.swift */; }; - 4C1FB8FF6F72F217D32E6CAD5F059DF7 /* poly1305_sse2.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F893CA360FAEDC549E5943F84B640DD /* poly1305_sse2.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4CD5DBEF0D0CCB1473E20AC8A4AE2050 /* crypto_stream_salsa208.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BB0A2E7525A07657002EF586F51CA7C /* crypto_stream_salsa208.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 4F00C709A5EE934B7CB9AF792679B027 /* KeyExchange.swift in Sources */ = {isa = PBXBuildFile; fileRef = 628C99C774EFD164B3BCD529B1CC9452 /* KeyExchange.swift */; }; - 500817BC3214266CF26FBBA1ABB40AF8 /* crypto_sign.h in Headers */ = {isa = PBXBuildFile; fileRef = A4D735C1D60367A6469C484F8473A4B8 /* crypto_sign.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 50E744F5BCD127D15C0DEE4DF318707C /* PromiseKit.h in Headers */ = {isa = PBXBuildFile; fileRef = C9D1DF849F2188CD9EA2EF66FAFCAF69 /* PromiseKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 51283CE7A3E24E90F7A0068CF8DFB910 /* crypto_aead_aes256gcm.h in Headers */ = {isa = PBXBuildFile; fileRef = B60EF11E77872012BDABF55C534ADFE3 /* crypto_aead_aes256gcm.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 51899868CD9B186A2D3CEDEDEF132D52 /* auth_hmacsha512.c in Sources */ = {isa = PBXBuildFile; fileRef = 62DB12E71BD7D9374B61B2B37A446894 /* auth_hmacsha512.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 4B46FDE20B971BEEE894378C79D772B5 /* core.h in Headers */ = {isa = PBXBuildFile; fileRef = F54B112723A72E3B144733F0E8D21EF4 /* core.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 4B85527A6F13AFEC019EDFC05A60B0DA /* join.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6217EDEF8B18BA426738F0C815CB5CEE /* join.swift */; }; + 4C1FB8FF6F72F217D32E6CAD5F059DF7 /* poly1305_sse2.h in Headers */ = {isa = PBXBuildFile; fileRef = 963D3BF07345B3BB4ABD73BF4A3F41A9 /* poly1305_sse2.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4D28FA14A9DA193C126DEA63C7D25A2E /* num_gmp_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = C8BC3A4F511CD3C13C0C128343DE3718 /* num_gmp_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 500817BC3214266CF26FBBA1ABB40AF8 /* crypto_sign.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BEFCB1B86F0CC8855D4CBE58F43F20C /* crypto_sign.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 50E744F5BCD127D15C0DEE4DF318707C /* PromiseKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 31F650A915064F1EAA12DA43F65AC6E7 /* PromiseKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 51899868CD9B186A2D3CEDEDEF132D52 /* auth_hmacsha512.c in Sources */ = {isa = PBXBuildFile; fileRef = 285FDAAFC04BE9833D508C8796BC95E7 /* auth_hmacsha512.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 5201918F6EFC183C88CAE2B46B53BF14 /* crypto_onetimeauth.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CDA2AED9BCEC68B3DB3554A8F1152BB /* crypto_onetimeauth.h */; settings = {ATTRIBUTES = (Private, ); }; }; 520277896BDB16DF0820331D1C828728 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5A9A555A4CB5C94FF77876AD171CBBB4 /* Foundation.framework */; }; - 52B580124EECC6A3FCE43AFD40E3A1EA /* crypto_box.c in Sources */ = {isa = PBXBuildFile; fileRef = CBCA7F502C5E7AC00B6F0A6821922B4B /* crypto_box.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 5387216E723A3C68E851CA15573CDD71 /* Request.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EEF66FB0714B796614B1D411FCA6804 /* Request.swift */; }; - 539683E1BE43B51D259946D0AF765610 /* core.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FD208919408B9824AEC4D29598D99BA /* core.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 542D91E98891DC5AF2DBB722862D6D9C /* Data+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7D58513B687622AA3CC3068EF7F4B9BC /* Data+Extension.swift */; }; - 54B4231212CDD46BE7EB214F64F6A612 /* UIViewController+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C586DDBF2C8228DF8C76E76E0AA3A23 /* UIViewController+AnyPromise.m */; }; - 55574A3260B3FE098E8116ADA6B9C25C /* Pods-web3swift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A5ECE6EA5AADEAC703873C853FF56253 /* Pods-web3swift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5605760D88BCCDCA8C43BA82E2DE7F3B /* Stream.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDBE22905E1628E164583709CBB88DB3 /* Stream.swift */; }; - 56FAF62E27B4754D4C80D249CF932846 /* Exponentiation.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8DFB4C58E652CD3849E3CDC9649EF72 /* Exponentiation.swift */; }; - 5718A4EA67229BCA48EA7D5F15B8227A /* crypto_onetimeauth.c in Sources */ = {isa = PBXBuildFile; fileRef = E5F65F987117D26FD9D9D32C68AB3750 /* crypto_onetimeauth.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 575C122140C18F0216A7EBFDB560CE9F /* Sodium-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = FA4358D582ABD1AB7473D3FF105A0BB9 /* Sodium-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 57A4EE979E8F6DB6E0D7F17D790664FA /* crypto_verify_16.h in Headers */ = {isa = PBXBuildFile; fileRef = E1B4717EF68E8258690059482072CBD6 /* crypto_verify_16.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 58C1CBA175A793C5E07FEF72B05EECA3 /* hash_sha256_cp.c in Sources */ = {isa = PBXBuildFile; fileRef = 69A82590A5422AE2BBD41399F35789A1 /* hash_sha256_cp.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 58DA1DD966DC183DA9C845E12E7D672A /* Prime Test.swift in Sources */ = {isa = PBXBuildFile; fileRef = 601D68425F844CE65F5C2B4CBB93BD2F /* Prime Test.swift */; }; - 5921F073F767DDC2129FEF09E19AA0B5 /* auth_hmacsha256.c in Sources */ = {isa = PBXBuildFile; fileRef = FFFAB920EA66166C023C323250EF7C79 /* auth_hmacsha256.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 59B4C5FF164144E005EAE0E547F6EACD /* UIViewController+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B4D328AB2960E93917ADA0F2DB5618F /* UIViewController+AnyPromise.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 59CB2FF91BBAA4F5E3A8E6D520A789ED /* RandomBytes.swift in Sources */ = {isa = PBXBuildFile; fileRef = C864C7864F697E7F4B1256982AB881CB /* RandomBytes.swift */; }; - 5A4C6FDD694EE65473E7311591774DE3 /* blake2b-load-avx2.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DA29FBF28B43695551B6A7FAA3F56E7 /* blake2b-load-avx2.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5A61ECF02B253714874524C7972BD609 /* chacha20_ref.c in Sources */ = {isa = PBXBuildFile; fileRef = C6EC2B99AF281438BA2E7BC6A71BDEBD /* chacha20_ref.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 5B105AB434D960466B6257072627FCB0 /* crypto_secretbox.h in Headers */ = {isa = PBXBuildFile; fileRef = E2DC45459F0F7F28AD7CF062AE6B3795 /* crypto_secretbox.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5BDFCC5B31798262237C6A3593914806 /* crypto_core_salsa208.h in Headers */ = {isa = PBXBuildFile; fileRef = 954BD2762EE1A6A0D0DBFD694BBBA6ED /* crypto_core_salsa208.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5C68B10C0B4F548030650792F3B2CE9C /* crypto_stream_chacha20.h in Headers */ = {isa = PBXBuildFile; fileRef = 60D55A072599984F595CA89E5548C732 /* crypto_stream_chacha20.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 5CFBCB9FDD14837FB9212E17DEE8BC09 /* CALayer+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 4FB2012EA92E6D60B1F8635B2365EFE3 /* CALayer+AnyPromise.m */; }; - 5D3F64C40D6B2C451B587D6DB2FD3DDD /* crypto_onetimeauth.h in Headers */ = {isa = PBXBuildFile; fileRef = 374F05E31597663B98E2142A133DCA73 /* crypto_onetimeauth.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5DC19BCA58649E61FF9428EB5A4B527C /* ChaCha20+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6CBAA67EDE1BDA9DEB56772016F528A /* ChaCha20+Foundation.swift */; }; - 5E451833987F5A69B03544C974E34991 /* PKCS7.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7886C5024CC7A555B54858183732C13B /* PKCS7.swift */; }; - 5E71E387C3DE1CED5F6347D6A46E732A /* stream_xsalsa20.c in Sources */ = {isa = PBXBuildFile; fileRef = C2562A587DC1E0BCF4B9898CD759C598 /* stream_xsalsa20.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 5E7CF6EDF24C8B62B355D3482C6AB11D /* scalarmult_curve25519.c in Sources */ = {isa = PBXBuildFile; fileRef = D0D19AE7C9B2A5D1ECE739022BB054B3 /* scalarmult_curve25519.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 5F80CB231A249C7D637C486E285AC957 /* sodium.h in Headers */ = {isa = PBXBuildFile; fileRef = A00B88E3CF87AAA10E89644218843056 /* sodium.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5213914009CC711308E39EE13041DBA4 /* crypto_pwhash_argon2i.h in Headers */ = {isa = PBXBuildFile; fileRef = 818E0694B30337BFF1853286160D3DE5 /* crypto_pwhash_argon2i.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 52B580124EECC6A3FCE43AFD40E3A1EA /* crypto_box.c in Sources */ = {isa = PBXBuildFile; fileRef = A5D9BA76E487C1D292FD730234B1AE25 /* crypto_box.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 535D1816DAA59D0FE16A368AB7AC40EB /* Pods-web3Swift-Demo-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 397EB2C01F8363686091EC4B3B79E908 /* Pods-web3Swift-Demo-dummy.m */; }; + 5387216E723A3C68E851CA15573CDD71 /* Request.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2C981F61422118967CBF03EF54FA026 /* Request.swift */; }; + 539683E1BE43B51D259946D0AF765610 /* core.h in Headers */ = {isa = PBXBuildFile; fileRef = 863BE8939BD666C28E64F211F716D980 /* core.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 542D91E98891DC5AF2DBB722862D6D9C /* Data+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF14233605F943940BCDCCD8F3629E8B /* Data+Extension.swift */; }; + 54B4231212CDD46BE7EB214F64F6A612 /* UIViewController+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A195FF30991D0863F1542B5325CC87F /* UIViewController+AnyPromise.m */; }; + 56FAF62E27B4754D4C80D249CF932846 /* Exponentiation.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE1AD3260782CB1A196B80F10E86C885 /* Exponentiation.swift */; }; + 5718A4EA67229BCA48EA7D5F15B8227A /* crypto_onetimeauth.c in Sources */ = {isa = PBXBuildFile; fileRef = 057CF786D0ACE9BDF0AC715364795AA8 /* crypto_onetimeauth.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 57A4EE979E8F6DB6E0D7F17D790664FA /* crypto_verify_16.h in Headers */ = {isa = PBXBuildFile; fileRef = B45709B61AE990A24C890267EA607C3E /* crypto_verify_16.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 57EC84D5433EAD90B294DB8A150029EF /* field_10x26_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = AEBD96DB688BDCF12921FAAB4CE7F9B1 /* field_10x26_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 58C1CBA175A793C5E07FEF72B05EECA3 /* hash_sha256_cp.c in Sources */ = {isa = PBXBuildFile; fileRef = E309D9CA14061B95F28432178D6866F7 /* hash_sha256_cp.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 58DA1DD966DC183DA9C845E12E7D672A /* Prime Test.swift in Sources */ = {isa = PBXBuildFile; fileRef = A270C77A8A74A29E5D488AC838839EB4 /* Prime Test.swift */; }; + 5921F073F767DDC2129FEF09E19AA0B5 /* auth_hmacsha256.c in Sources */ = {isa = PBXBuildFile; fileRef = 5CC242181B292323C1ADA4B0F3A8BBAA /* auth_hmacsha256.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 59B4C5FF164144E005EAE0E547F6EACD /* UIViewController+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A5105585840D80B41FA88318A5B7CB5 /* UIViewController+AnyPromise.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 59C3E4D65F0311F632F53C9EECE36D88 /* secp256k1_ios-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 54207FC409F4E18EF6FDDE2391BAE918 /* secp256k1_ios-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5A4C6FDD694EE65473E7311591774DE3 /* blake2b-load-avx2.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C4E243029F955B0F5A0A77B7CFBDB79 /* blake2b-load-avx2.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5A61ECF02B253714874524C7972BD609 /* chacha20_ref.c in Sources */ = {isa = PBXBuildFile; fileRef = 3C8A41071FD260C115DF94B6FBFE8CE9 /* chacha20_ref.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 5AFEC2A9C4E29C3ABAF2B32687D83D93 /* crypto_hash_sha256.h in Headers */ = {isa = PBXBuildFile; fileRef = 3431FE02FD7945DF82E6ECC08A7F354F /* crypto_hash_sha256.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 5B105AB434D960466B6257072627FCB0 /* crypto_secretbox.h in Headers */ = {isa = PBXBuildFile; fileRef = 5AEB5F7824D0BB82D60F77B677272440 /* crypto_secretbox.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5BDFCC5B31798262237C6A3593914806 /* crypto_core_salsa208.h in Headers */ = {isa = PBXBuildFile; fileRef = D0600F183C24625738DAC5C03F8C057D /* crypto_core_salsa208.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5CFBCB9FDD14837FB9212E17DEE8BC09 /* CALayer+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B56A24652AEE611B57462A41E3B7DB9 /* CALayer+AnyPromise.m */; }; + 5D3F64C40D6B2C451B587D6DB2FD3DDD /* crypto_onetimeauth.h in Headers */ = {isa = PBXBuildFile; fileRef = 912B295234C0661830A691A0A0E13685 /* crypto_onetimeauth.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5DC19BCA58649E61FF9428EB5A4B527C /* ChaCha20+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F47EB6037C20607C42605255B4058AC /* ChaCha20+Foundation.swift */; }; + 5E3E862329706E8FAC7E820C5CB36FD9 /* crypto_stream_salsa20.h in Headers */ = {isa = PBXBuildFile; fileRef = E0B78A2E8884D56F9139A00AA9FD8780 /* crypto_stream_salsa20.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 5E451833987F5A69B03544C974E34991 /* PKCS7.swift in Sources */ = {isa = PBXBuildFile; fileRef = D635AFC67550FFF6CFD9657596309E83 /* PKCS7.swift */; }; + 5E71E387C3DE1CED5F6347D6A46E732A /* stream_xsalsa20.c in Sources */ = {isa = PBXBuildFile; fileRef = 882874EBBE101D20E22D89E3650A14F9 /* stream_xsalsa20.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 5E7CF6EDF24C8B62B355D3482C6AB11D /* scalarmult_curve25519.c in Sources */ = {isa = PBXBuildFile; fileRef = 0DCD780F725AC53DAE778E3A129DCB51 /* scalarmult_curve25519.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 5ED81583FF317D7FA6DDD37032CF14E2 /* crypto_pwhash.h in Headers */ = {isa = PBXBuildFile; fileRef = C407320A4BC7D3AF6A889F53AD519F84 /* crypto_pwhash.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 5F80CB231A249C7D637C486E285AC957 /* sodium.h in Headers */ = {isa = PBXBuildFile; fileRef = 24B33607F207B7119B1626685203F8E3 /* sodium.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6018AED181431FEFB51B045CE8959180 /* PromiseKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7B797C5F77D4619E0CFBE4442D5D504B /* PromiseKit.framework */; }; - 60DD3FDE6F25F9072D0578B0F064AE2E /* Shifts.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA798B81B55F2665470AD5EBC76E6DB3 /* Shifts.swift */; }; - 61200D01A1855D7920CEF835C8BE00B0 /* DispatchQueue+Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB13FE01F203D4B1698DD35B67D00823 /* DispatchQueue+Alamofire.swift */; }; - 6160D76FB8BC4BD54958B119CF6406CC /* UInt16+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B1762C21A76FCE00B628962A9CFCAD7 /* UInt16+Extension.swift */; }; - 61EA94703F236B2C232D997C8FB6B2B3 /* stream_salsa20.h in Headers */ = {isa = PBXBuildFile; fileRef = A7C95F1AB2FF095B834BBEB1640500E3 /* stream_salsa20.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 62F65AD8DC4F0F9610F4B8B4738EC094 /* ServerTrustPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06473A7FEB53EFEC8578956155DAA880 /* ServerTrustPolicy.swift */; }; - 631A743704BAF7871625959CDD40EECC /* Bit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F181056A496433180F2706C91F92BF7 /* Bit.swift */; }; - 632BAB3E253AF15428A580B16B78D08F /* randombytes_salsa20_random.c in Sources */ = {isa = PBXBuildFile; fileRef = FF2D8B6F00BB672FC8F78DBFF26B786E /* randombytes_salsa20_random.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 634158DE515E733D732F841BE34E3DC9 /* u8.h in Headers */ = {isa = PBXBuildFile; fileRef = 150C1A3648B59850E33D0CCBBA907D56 /* u8.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 644FD003B2221515C980798B0E99B297 /* SHA1.swift in Sources */ = {isa = PBXBuildFile; fileRef = 144DBFCFA5BCF39EBE93195EEAB45EE1 /* SHA1.swift */; }; - 64B3E42FE371C8E162B7F15107C5BEDC /* ladder_base.h in Headers */ = {isa = PBXBuildFile; fileRef = 55B142AD0CA5A5FEA009BACDB3E833F4 /* ladder_base.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6500E42B52F51459015367B51B067FF0 /* AwaitKitExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 376EA041D80D70A5F6639E5C24CE02CF /* AwaitKitExtension.swift */; }; - 650CC1946601D525B4D8097706E8DB8B /* crypto_secretbox.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E42C73C44A8276D98700E6835108B24 /* crypto_secretbox.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 6648F912E87AB39E31FA1D7F8076D715 /* PMKUIKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B64FB102372A10F02A723C8DB324236 /* PMKUIKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 66B1FE7F88099D940FB20B51039490A0 /* crypto_generichash.c in Sources */ = {isa = PBXBuildFile; fileRef = AFDEA9B8108FD19B3C3B56020DC4665A /* crypto_generichash.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 6772491EA548B7A863BB5FC57C395F38 /* crypto_scalarmult_curve25519.h in Headers */ = {isa = PBXBuildFile; fileRef = 2340261E60C062A9E7523109A301DB57 /* crypto_scalarmult_curve25519.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 67B1A6C5C6B2C627593782E1BA5AFA88 /* argon2.c in Sources */ = {isa = PBXBuildFile; fileRef = C249E78AA58EB7BAF490FF75C2DEE293 /* argon2.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 67CFE2F1EB96F6B1347E26706B2269EE /* crypto_scrypt-common.c in Sources */ = {isa = PBXBuildFile; fileRef = 0BBB041BD70E156D98BF9883A1F5177B /* crypto_scrypt-common.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 6B182DBB8160703465DB01BC5594E185 /* curve25519_ref10.h in Headers */ = {isa = PBXBuildFile; fileRef = DE35A76091F603AAD6E14F1193928E56 /* curve25519_ref10.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6BFA07226ABD476129E3D04A205F6976 /* version.h in Headers */ = {isa = PBXBuildFile; fileRef = 816F8287AE67F71CED03AEA0081968F0 /* version.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 6C5202D8D10FE90280A1AF0A2F6FDDBB /* curve25519_sandy2x.h in Headers */ = {isa = PBXBuildFile; fileRef = 65C4E40F4D1A8FE089D576CA83CDEB57 /* curve25519_sandy2x.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6CDC25B8E6092CEBB6F5F06A74244859 /* SecretBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4409D6BE5E70AA79515BCE82C62E40B /* SecretBox.swift */; }; - 6DAC93A3F2805E6F1E096F48492BE714 /* crypto_box_curve25519xsalsa20poly1305.h in Headers */ = {isa = PBXBuildFile; fileRef = D878F47BD0BBDE5E21B803E9DB7521A6 /* crypto_box_curve25519xsalsa20poly1305.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 6DE02DC93DD96D7F4F31A06A9BA9A797 /* crypto_aead_xchacha20poly1305.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C781EDE8A34E27850F8974D8A562DE2 /* crypto_aead_xchacha20poly1305.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 6EB74E98F6A4FEA3044AC51730B96706 /* crypto_secretbox_xsalsa20poly1305.h in Headers */ = {isa = PBXBuildFile; fileRef = 810A660458029BAF298E260DAEC7F97B /* crypto_secretbox_xsalsa20poly1305.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6F1B338E3DF84718C1A2C653917F7A9F /* BigInt-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = FB0404E0EA931A72E9DA7795B9222090 /* BigInt-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6F7A0609FC20A850288B91F15AD6B4A4 /* HMAC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7EA5E5D26A7382662FEB3DC5931A0ADA /* HMAC.swift */; }; - 6FFCEB922EC2EBD0FCD2E931ABE38841 /* pwhash_scryptsalsa208sha256_sse.c in Sources */ = {isa = PBXBuildFile; fileRef = E04C873C03647589F53D4F42C5DBA07B /* pwhash_scryptsalsa208sha256_sse.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 70652B3AC99E44C8E40AE0ABE5860393 /* UIView+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE00FE26614EF8C662EB5B0420C45D20 /* UIView+Promise.swift */; }; - 7069495412710E5B345B7AB715051788 /* AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 699FF09F4E5D5928D4DE8CB8D495B093 /* AnyPromise.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 70984CCF4D0C43AB451DF86E0B101A5C /* ShortHash.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FCD34BC6761243908EA45C63260AC14 /* ShortHash.swift */; }; - 72860544DE4C59E2BD5AEE234E45E611 /* stream_xchacha20.c in Sources */ = {isa = PBXBuildFile; fileRef = 617FCEDFE88862D121167BCFAD12C8F1 /* stream_xchacha20.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 729CB093A91CD6012940038A7FC5F2A6 /* kdf_blake2b.c in Sources */ = {isa = PBXBuildFile; fileRef = C36232150A443296F0FDFEB3EF1184B7 /* kdf_blake2b.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 72A2181477D505C9BB1F0B11B87AE025 /* argon2-encoding.c in Sources */ = {isa = PBXBuildFile; fileRef = 012E3D677F3A8015D34F5CF43E031129 /* argon2-encoding.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 602281F61213DD4517FE75C0D6FC699B /* SecretBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4BC008AC2104E0AB8D617C76C7E1937 /* SecretBox.swift */; }; + 60DD3FDE6F25F9072D0578B0F064AE2E /* Shifts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F1731254D7AC27611BF2A5B5BC102E9 /* Shifts.swift */; }; + 61200D01A1855D7920CEF835C8BE00B0 /* DispatchQueue+Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 705280A66E79CB7004A3FECADFB45240 /* DispatchQueue+Alamofire.swift */; }; + 6160D76FB8BC4BD54958B119CF6406CC /* UInt16+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66DB1566220A991E843B1BEDEAE5CEC6 /* UInt16+Extension.swift */; }; + 61EA94703F236B2C232D997C8FB6B2B3 /* stream_salsa20.h in Headers */ = {isa = PBXBuildFile; fileRef = 5300D14CE117C7D7545FFBE8333A53C3 /* stream_salsa20.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 62F65AD8DC4F0F9610F4B8B4738EC094 /* ServerTrustPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00C1912A756C1AF4395038B9F09664A2 /* ServerTrustPolicy.swift */; }; + 631A743704BAF7871625959CDD40EECC /* Bit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B48F416E53A88C68ACD28CCF2D8DD04 /* Bit.swift */; }; + 632BAB3E253AF15428A580B16B78D08F /* randombytes_salsa20_random.c in Sources */ = {isa = PBXBuildFile; fileRef = 110F156EAD191CCDD7B6C8E6DB48480E /* randombytes_salsa20_random.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 633D8CEF12B48BE3B35CD9D347F02811 /* Box.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC0C74D474FB6473137A07FDCEC76FF2 /* Box.swift */; }; + 634158DE515E733D732F841BE34E3DC9 /* u8.h in Headers */ = {isa = PBXBuildFile; fileRef = 9CD74735540355253E1F4AD6C8AD0B01 /* u8.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 644FD003B2221515C980798B0E99B297 /* SHA1.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29C85F1725416148DAAF74A954DEED0A /* SHA1.swift */; }; + 64B3E42FE371C8E162B7F15107C5BEDC /* ladder_base.h in Headers */ = {isa = PBXBuildFile; fileRef = A8B44B93FD18F128EFFD84EEDB9EEE7C /* ladder_base.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6500E42B52F51459015367B51B067FF0 /* AwaitKitExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 835C70D7E6E084D1BBE284B20D872A00 /* AwaitKitExtension.swift */; }; + 657F19B9D83A8063420F04B2819114BB /* crypto_core_hsalsa20.h in Headers */ = {isa = PBXBuildFile; fileRef = 4076C429A743BB72EE5B4A1674E99D7C /* crypto_core_hsalsa20.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 6648F912E87AB39E31FA1D7F8076D715 /* PMKUIKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 71692031281C2400AE2BAE861C032B9A /* PMKUIKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 66B1FE7F88099D940FB20B51039490A0 /* crypto_generichash.c in Sources */ = {isa = PBXBuildFile; fileRef = 855C520CA23CB8E3A12110E26AE36677 /* crypto_generichash.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 67B1A6C5C6B2C627593782E1BA5AFA88 /* argon2.c in Sources */ = {isa = PBXBuildFile; fileRef = 2DA7D90EA2B7510EFF2CEB30737874BA /* argon2.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 67CFE2F1EB96F6B1347E26706B2269EE /* crypto_scrypt-common.c in Sources */ = {isa = PBXBuildFile; fileRef = 2FCAB85CB8673F7720318C665549604D /* crypto_scrypt-common.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 69E4CB0D417E58396E5811D6635731ED /* hash_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = CFAFB8DE7471D2B574E10DB53EF93647 /* hash_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 69EF5DADFAAC67975C6F8AFFB9CB5443 /* runtime.h in Headers */ = {isa = PBXBuildFile; fileRef = D8B09469916027AEBD69A005947711C3 /* runtime.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 6A7074F9CFE374AA7DC8FED869A7B668 /* Pods-web3swiftTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E52D64EBBCD6AA9FB168ACD9FD9EF33B /* Pods-web3swiftTests-dummy.m */; }; + 6B182DBB8160703465DB01BC5594E185 /* curve25519_ref10.h in Headers */ = {isa = PBXBuildFile; fileRef = 36880EA07B55D344AEE94C7AB2138E22 /* curve25519_ref10.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6BB033B02DFF4EF41EAAD1E25C9168B2 /* lax_der_privatekey_parsing.c in Sources */ = {isa = PBXBuildFile; fileRef = 7B425AC0F76945E78E0C254BB86ABBCF /* lax_der_privatekey_parsing.c */; }; + 6C5202D8D10FE90280A1AF0A2F6FDDBB /* curve25519_sandy2x.h in Headers */ = {isa = PBXBuildFile; fileRef = 23E6E7E8375333D909C88BC6C8DC8DFD /* curve25519_sandy2x.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6EB74E98F6A4FEA3044AC51730B96706 /* crypto_secretbox_xsalsa20poly1305.h in Headers */ = {isa = PBXBuildFile; fileRef = CA7880AC73EC7F919FED94798AEC9633 /* crypto_secretbox_xsalsa20poly1305.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6F1B338E3DF84718C1A2C653917F7A9F /* BigInt-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F465EAE03BDC061A09E71DDD019A80B4 /* BigInt-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6F7A0609FC20A850288B91F15AD6B4A4 /* HMAC.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED0D20C17362D69D27893545D5E5D287 /* HMAC.swift */; }; + 6FFCEB922EC2EBD0FCD2E931ABE38841 /* pwhash_scryptsalsa208sha256_sse.c in Sources */ = {isa = PBXBuildFile; fileRef = 9CF0E7F8EFB95EF4A7B697532F742A82 /* pwhash_scryptsalsa208sha256_sse.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 70652B3AC99E44C8E40AE0ABE5860393 /* UIView+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3D725119A53C3636896E8190110756C /* UIView+Promise.swift */; }; + 7069495412710E5B345B7AB715051788 /* AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = E5F64ADA40753F1FE7267A17A536882E /* AnyPromise.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 710B85BA1E673E0EDFE1FB200BC7803F /* KeyExchange.swift in Sources */ = {isa = PBXBuildFile; fileRef = 707EF3CE91267D68E9CCC8A76D34975F /* KeyExchange.swift */; }; + 71287BA66E8A90A0EEB6DEC166869470 /* ecdsa_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = ABAEB533263065A56B85421D9C76852B /* ecdsa_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 72210BC26F9DB0DC6B780F3771A784BD /* eckey_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 470AAE575CDF5DB94A841E2FAAB0BEFA /* eckey_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7252E9C97CDF6F58FE8329576E83AE82 /* num_gmp.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CCFCF37DD44E78374826B4F63EB3A7B /* num_gmp.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 72860544DE4C59E2BD5AEE234E45E611 /* stream_xchacha20.c in Sources */ = {isa = PBXBuildFile; fileRef = 1C3B1896999936CA79E0F71CDB5CEE72 /* stream_xchacha20.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 7286EEF54E133BA86984C7914A7D580F /* crypto_hash.h in Headers */ = {isa = PBXBuildFile; fileRef = F31106D0FCB6CEE542DC48827D70BAE7 /* crypto_hash.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 729CB093A91CD6012940038A7FC5F2A6 /* kdf_blake2b.c in Sources */ = {isa = PBXBuildFile; fileRef = E2885498B9E41D1CD60EB8D8170B0A1C /* kdf_blake2b.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 72A2181477D505C9BB1F0B11B87AE025 /* argon2-encoding.c in Sources */ = {isa = PBXBuildFile; fileRef = 46C10B7A9E05A69FEC3FBA09F90B1B0E /* argon2-encoding.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 72FE673A8C415E6AA4A8848826A12A27 /* Auth.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2EF6DEB3CB4E95C3252E7CBB3B12588F /* Auth.swift */; }; + 73A700F94DA8BA903E604CB2EF97AC76 /* ecmult_gen.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F09586E570AB98B8F2A503AD744D778 /* ecmult_gen.h */; settings = {ATTRIBUTES = (Project, ); }; }; 73B9C996AED49ED7CF8EC2A6F1738059 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5A9A555A4CB5C94FF77876AD171CBBB4 /* Foundation.framework */; }; - 76A9421246DE3A074980DDD67B46A8CB /* salsa20_xmm6int-avx2.h in Headers */ = {isa = PBXBuildFile; fileRef = A021A8A8C904A3CEBFBEF4657E8ABB1C /* salsa20_xmm6int-avx2.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 776B419BEDC8BC7698F6A0B88CF6E798 /* crypto_sign_edwards25519sha512batch.h in Headers */ = {isa = PBXBuildFile; fileRef = 53CA490432DB98016EDCC5C8FB644E12 /* crypto_sign_edwards25519sha512batch.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 77CC7133E3ADC1987443AF21025AF4AE /* Cipher.swift in Sources */ = {isa = PBXBuildFile; fileRef = E290CB5518060C3274D2BECB67CA4835 /* Cipher.swift */; }; - 784CB231541E2F857EDFF79AA91F7767 /* crypto_shorthash.h in Headers */ = {isa = PBXBuildFile; fileRef = C8C6A282E8C80B0531A45A768E896D4B /* crypto_shorthash.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 78BEB5D0BC89A216CE64624050A7328F /* SipHash-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 654C3EB91BB5C33EFBC41C95F729108E /* SipHash-dummy.m */; }; - 79151BDAEBA3C297356EF8D125879E7F /* argon2.h in Headers */ = {isa = PBXBuildFile; fileRef = C47153A0531E54FB8635505A1DCA7A9A /* argon2.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7925FCEA0F34B928F758D6B926A18A90 /* crypto_verify_64.h in Headers */ = {isa = PBXBuildFile; fileRef = DEFE3E096D3BB5041CFCA86B81D6DDDB /* crypto_verify_64.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 797920E244D191E2FC53D819FDC3963B /* BigInt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87B331AC7C26EE9999B76D9E16AB8FA0 /* BigInt.swift */; }; - 7AC98AF669A84EFE5B424770975C2736 /* NSURLSession+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = C7F858463A74DDEE23754F7FA24304D6 /* NSURLSession+AnyPromise.m */; }; - 7B2715167B2EFE7E7E4F15A1E353893A /* hash_sha256.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E633D9D4034C45CA186E876F997BF8F /* hash_sha256.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 7B5FE28C7EA4122B0598738E54DBEBD8 /* SessionDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE7A1B5E35E55006A510CD1531E8E8C1 /* SessionDelegate.swift */; }; - 7B94A2829816E6318BEA7C751ED0A4E4 /* keypair.c in Sources */ = {isa = PBXBuildFile; fileRef = 93C8409B3AA4A87B86DDEF1DDA1AC40D /* keypair.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 7BE518B7E49B3BCA8E80C23E9584402D /* String Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 342E10320A0F4AB4BB1432747ABAFFEF /* String Conversion.swift */; }; - 7C044CC878902F556BDC4C8510146671 /* Cryptors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B7E55FB8AC8C5DE92BEEBFFFEC16571 /* Cryptors.swift */; }; - 7C3782C0DF34998EC0845BF4988BA179 /* crypto_stream_xsalsa20.h in Headers */ = {isa = PBXBuildFile; fileRef = FD6C3F0DF341AB61FA03ED2D0512C889 /* crypto_stream_xsalsa20.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 7C9046BE1C32B65B8C9E68856E570772 /* crypto_secretbox.c in Sources */ = {isa = PBXBuildFile; fileRef = 63D33E9236AA92C503A75F7FDBDD3C94 /* crypto_secretbox.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 7D8CC01E8C9EFFF9F4D65406CDE0AB66 /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B3861F17DF08D9F18C2A1B2FC42C262 /* Result.swift */; }; - 7DED51A979FEC7271BD161B6540CE19F /* URLDataPromise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B1DBF646CDC22716FEE13BC368018B8 /* URLDataPromise.swift */; }; - 7E88D4D07AD46CFA074E4616C6AC35B9 /* poly1305_donna.h in Headers */ = {isa = PBXBuildFile; fileRef = D12F9FF7D94A533B244BA69D70AC376C /* poly1305_donna.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7EF0576BEA057E75678C464360F2FF53 /* sign_ed25519.c in Sources */ = {isa = PBXBuildFile; fileRef = F90B7341523806D70335F9C0DCF5F9DB /* sign_ed25519.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 7F1599A650C0F56DE958EE9755201030 /* crypto_core_ed25519.h in Headers */ = {isa = PBXBuildFile; fileRef = 8366E96CC3E2E52B17E56DAE63971787 /* crypto_core_ed25519.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 7F5D20E1AFFC76F22D719853CA2747AC /* crypto_scrypt.h in Headers */ = {isa = PBXBuildFile; fileRef = F913CC4F2405BEBC5E723E1FC0AFCBA0 /* crypto_scrypt.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7FBA108F1A42E0B0B3CC26177EBF662C /* Rabbit+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 680028695EBB33D20595E1AEBA356238 /* Rabbit+Foundation.swift */; }; - 7FF796E8FC69CC452DE6C92F82B45731 /* CTR.swift in Sources */ = {isa = PBXBuildFile; fileRef = FEB571437F00CBEF70B447CAF8089B98 /* CTR.swift */; }; - 8001DCF5668C6D6CEA52F6E96E4FF8E1 /* blamka-round-ref.h in Headers */ = {isa = PBXBuildFile; fileRef = F0BB96CB62B6873D3E98DF1347CB719A /* blamka-round-ref.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 806F3FF1CA7CDA44033A7C4AFD61CDD5 /* NSNotificationCenter+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 5AB40F5A84F17AACFDEF5A7F420D25DD /* NSNotificationCenter+AnyPromise.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 80A810BC8207A5DE44E7CFBD4A4F2B04 /* SipHash-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FA593596427B4960926155B13009C29 /* SipHash-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 80B4002C7BC226BC6AA38A7E8866D3CD /* UInt32+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = E99443F101FEE6C7422D6F68E92CA3EC /* UInt32+Extension.swift */; }; - 8101EDCBF0515FE2355097B75EACF81B /* Data Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 862DCE2EB70D3A635BEE5BCE21EC6297 /* Data Conversion.swift */; }; - 811E0C8A7497C3FFA507A63FF5C1284E /* utils.c in Sources */ = {isa = PBXBuildFile; fileRef = 1161F8DD1AD0197E07CAB86DA0D09B6B /* utils.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 74AEA52CEE56BDFE2562A8D66920A1C5 /* crypto_core_salsa2012.h in Headers */ = {isa = PBXBuildFile; fileRef = 72FE1A7DE05FE1BC7004B1E14B5A7CED /* crypto_core_salsa2012.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 7650AD6EFFEDD1EDF10C583B5E9229F3 /* lax_der_parsing.h in Headers */ = {isa = PBXBuildFile; fileRef = E3922E3CCB98553653A88BE4AECF0066 /* lax_der_parsing.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 76A9421246DE3A074980DDD67B46A8CB /* salsa20_xmm6int-avx2.h in Headers */ = {isa = PBXBuildFile; fileRef = 6087FE7B05DEF85DE89A643641FB7C0A /* salsa20_xmm6int-avx2.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 76F67E7C32F11204EECEAD2E8CC5A8B7 /* Pods-web3Swift-Demo-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = E2F5581D0772B129577EA7ABDBA8C813 /* Pods-web3Swift-Demo-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 776B419BEDC8BC7698F6A0B88CF6E798 /* crypto_sign_edwards25519sha512batch.h in Headers */ = {isa = PBXBuildFile; fileRef = E997BA6884E45BA4379B76872903FD4F /* crypto_sign_edwards25519sha512batch.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 77CC7133E3ADC1987443AF21025AF4AE /* Cipher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6583EB655E29E9C6B68A647052801DAE /* Cipher.swift */; }; + 78BEB5D0BC89A216CE64624050A7328F /* SipHash-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 46483C6A458E254B835B1DAA7A2878A6 /* SipHash-dummy.m */; }; + 79151BDAEBA3C297356EF8D125879E7F /* argon2.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D0D933C66AF52C3B04E16F8B4472459 /* argon2.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 797920E244D191E2FC53D819FDC3963B /* BigInt.swift in Sources */ = {isa = PBXBuildFile; fileRef = F79DB63F81A4C5B0AAB463DAF9894EA4 /* BigInt.swift */; }; + 7AC98AF669A84EFE5B424770975C2736 /* NSURLSession+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D65C9572967F1861AF4B9803BB16386 /* NSURLSession+AnyPromise.m */; }; + 7AF500BD94164BE878BBD2A1BFE71458 /* secp256k1_ecdh.h in Headers */ = {isa = PBXBuildFile; fileRef = 01DFED00F38E9269E99CA4FB840D2D9E /* secp256k1_ecdh.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7B2715167B2EFE7E7E4F15A1E353893A /* hash_sha256.c in Sources */ = {isa = PBXBuildFile; fileRef = AC4E785FB09A13C3F7CE094AE5BC0BD0 /* hash_sha256.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 7B5FE28C7EA4122B0598738E54DBEBD8 /* SessionDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE1E12EAA613A45AD83AFB6C0C74C5C8 /* SessionDelegate.swift */; }; + 7B94A2829816E6318BEA7C751ED0A4E4 /* keypair.c in Sources */ = {isa = PBXBuildFile; fileRef = F9F718679D1EEB1DDFFCFEDE3AE12E59 /* keypair.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 7BE518B7E49B3BCA8E80C23E9584402D /* String Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 819DCAE7FBC14CA0F442E18CF1F3AF90 /* String Conversion.swift */; }; + 7C044CC878902F556BDC4C8510146671 /* Cryptors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37622AFC62D26E0BB0F565E58601836B /* Cryptors.swift */; }; + 7C9046BE1C32B65B8C9E68856E570772 /* crypto_secretbox.c in Sources */ = {isa = PBXBuildFile; fileRef = 59665BEBF830451CDD9D7CD5599B8D9F /* crypto_secretbox.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 7D8CC01E8C9EFFF9F4D65406CDE0AB66 /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E9D884B37E08EB92C3743A4D61BF1C5 /* Result.swift */; }; + 7D9BDB36273663F80C1E4EAA0C23589F /* crypto_core_hchacha20.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F2B2AF0204E5B155C5501B32A9EDDBD /* crypto_core_hchacha20.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 7DED51A979FEC7271BD161B6540CE19F /* URLDataPromise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F97D749C6DE723166FB1C1B1CED8252 /* URLDataPromise.swift */; }; + 7E444EDB6E1F8AC5EF0898EF19668188 /* crypto_verify_32.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A3C0AA85CFCC64440AF9558E389722C /* crypto_verify_32.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 7E88D4D07AD46CFA074E4616C6AC35B9 /* poly1305_donna.h in Headers */ = {isa = PBXBuildFile; fileRef = CB3DBBD5876C9D40DB599897201BFA19 /* poly1305_donna.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7EF0576BEA057E75678C464360F2FF53 /* sign_ed25519.c in Sources */ = {isa = PBXBuildFile; fileRef = 0F1D8060496D6585D516EDC1ACAB1ED6 /* sign_ed25519.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 7F2CD4A72BCD6E2A8EF805C6E9F438D8 /* secp256k1_recovery.h in Headers */ = {isa = PBXBuildFile; fileRef = E3B99777B000BD1E545EEADF4E8D4FED /* secp256k1_recovery.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7F5D20E1AFFC76F22D719853CA2747AC /* crypto_scrypt.h in Headers */ = {isa = PBXBuildFile; fileRef = E2DDB0D8C2DAC4F2A6EDC52F6E0C0654 /* crypto_scrypt.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7F7C15CE96CAA841BEDC484E32120186 /* crypto_kdf.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D9B08D152005ABECB7CBC2AC1EB8634 /* crypto_kdf.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 7FBA108F1A42E0B0B3CC26177EBF662C /* Rabbit+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFED47516B1C2287E474D79F238CFBF5 /* Rabbit+Foundation.swift */; }; + 7FF796E8FC69CC452DE6C92F82B45731 /* CTR.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C020ADA019EA1026DAA6DB93D358824 /* CTR.swift */; }; + 8001DCF5668C6D6CEA52F6E96E4FF8E1 /* blamka-round-ref.h in Headers */ = {isa = PBXBuildFile; fileRef = C37846855D22D8BABC13D46926494B21 /* blamka-round-ref.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 806F3FF1CA7CDA44033A7C4AFD61CDD5 /* NSNotificationCenter+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 754CA0FF649AA40DCE19AD810BA021E2 /* NSNotificationCenter+AnyPromise.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 80A810BC8207A5DE44E7CFBD4A4F2B04 /* SipHash-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 986515A50801EFE388504274DCC36EF3 /* SipHash-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 80B4002C7BC226BC6AA38A7E8866D3CD /* UInt32+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C4B8CD312FF8333FB6CEF89B6BBDE02 /* UInt32+Extension.swift */; }; + 8101EDCBF0515FE2355097B75EACF81B /* Data Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 125752E2897141636B6750A628014033 /* Data Conversion.swift */; }; + 811E0C8A7497C3FFA507A63FF5C1284E /* utils.c in Sources */ = {isa = PBXBuildFile; fileRef = A6B5ACA48653BB8F76CA1B3C7BDFAA96 /* utils.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 824C9A19868068BB8EE23D74E54D8C01 /* crypto_auth_hmacsha512256.h in Headers */ = {isa = PBXBuildFile; fileRef = D12DA18FBD174BCE1FA98F65D2AA126C /* crypto_auth_hmacsha512256.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 827C01EAAD5FEDFF78928C084B233F09 /* field_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 174BF9D2BF8A1AD12BB70BDA480FF996 /* field_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; 82946661F808189BBA5924D1E51CD8E5 /* Alamofire.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 983C0463A0F14516802706558C453E14 /* Alamofire.framework */; }; - 8384778844A8C59A9650E2C94D3D4270 /* NSNotificationCenter+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 98F0C2532624BC8A8B4D25579CA1883B /* NSNotificationCenter+AnyPromise.m */; }; - 83AC0B1406FDCB6740F11DA1E7EB6C02 /* libsodium-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 28856DA85C5DD10797A80F5B7916569A /* libsodium-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 847A5FFB4ACFF329AEFD6EC8CA2C66B8 /* UInt8+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35B21FD888D70D5B1720AA9A851F6917 /* UInt8+Extension.swift */; }; - 848C73CBCF0725FC7FAFBC620B284F5A /* crypto_kx.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F4F20125789BA422E650A237A8C28CC /* crypto_kx.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 8531699A416CD1D208BD055FBD0048E2 /* crypto_auth.h in Headers */ = {isa = PBXBuildFile; fileRef = B889FDF199314EA888E7A3FB2BE67CE6 /* crypto_auth.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 854378B0D75547ABF079D6BC659C3233 /* when.m in Sources */ = {isa = PBXBuildFile; fileRef = DEF0CEF8C7ECB3361F1E7BD494C9E050 /* when.m */; }; - 858E71644687BCD7A76B4D2E05592B17 /* PWHash.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93671FFA714667A9F4303192AC6EC67C /* PWHash.swift */; }; - 85CB08F8440D6632E3EAFB6171650935 /* PKCS7Padding.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF644E17D74DC771AB9A2C13BB5D656A /* PKCS7Padding.swift */; }; - 86DBBAC815B2A39841FCB00FECE79827 /* consts_namespace.h in Headers */ = {isa = PBXBuildFile; fileRef = E7398A2E85143F8471EA25E81F9926F4 /* consts_namespace.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8709AC8D54CF5EC5429880424EE7F2AA /* Array+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58EAA8B24BF0FF0E582B2077B0E65675 /* Array+Extensions.swift */; }; - 880BEF301A0F2AD68B7FE2436C9BE851 /* blake2b-compress-sse41.c in Sources */ = {isa = PBXBuildFile; fileRef = 3E1FD3BEF2DBD3315041E54AAD026D21 /* blake2b-compress-sse41.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 88359A85A4D14EAC3D0277DD48A16C79 /* core_hsalsa20.c in Sources */ = {isa = PBXBuildFile; fileRef = 10E317435D5F68F7B094B254D888FEAB /* core_hsalsa20.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 82B1D81D8230B9EE36B5D23AC4B269F0 /* eckey.h in Headers */ = {isa = PBXBuildFile; fileRef = BBC8C35543F9510A70256ADA6D99B131 /* eckey.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8384778844A8C59A9650E2C94D3D4270 /* NSNotificationCenter+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = F6182AB470715D0DC65595CAEBA0A087 /* NSNotificationCenter+AnyPromise.m */; }; + 83AC0B1406FDCB6740F11DA1E7EB6C02 /* libsodium-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 6073EE64D441EB045BD0A8D8B99828E0 /* libsodium-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 847A5FFB4ACFF329AEFD6EC8CA2C66B8 /* UInt8+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04FCD0962B5B6B3132FCF9727BA5AC1C /* UInt8+Extension.swift */; }; + 850CD6BCDD1111B85A5D007F16F7D9D4 /* crypto_scalarmult_curve25519.h in Headers */ = {isa = PBXBuildFile; fileRef = 26F4133F691E405A0582153198ABE109 /* crypto_scalarmult_curve25519.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 8531699A416CD1D208BD055FBD0048E2 /* crypto_auth.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B0238A125892420B7A7328760C65433 /* crypto_auth.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 854378B0D75547ABF079D6BC659C3233 /* when.m in Sources */ = {isa = PBXBuildFile; fileRef = AE10E194DE69EA610A2293C070B8426F /* when.m */; }; + 85CB08F8440D6632E3EAFB6171650935 /* PKCS7Padding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54BC56C20AF340B4ACCC9CA8FB8EEFF7 /* PKCS7Padding.swift */; }; + 86DBBAC815B2A39841FCB00FECE79827 /* consts_namespace.h in Headers */ = {isa = PBXBuildFile; fileRef = 9EFF37BC52F3023DD45213EB15161FE3 /* consts_namespace.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8709AC8D54CF5EC5429880424EE7F2AA /* Array+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B57D38EC17EDC879D9911671ABC64C3F /* Array+Extensions.swift */; }; + 880BEF301A0F2AD68B7FE2436C9BE851 /* blake2b-compress-sse41.c in Sources */ = {isa = PBXBuildFile; fileRef = ECD7AB08EF8C8FF863D7B4E850AC726F /* blake2b-compress-sse41.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 88359A85A4D14EAC3D0277DD48A16C79 /* core_hsalsa20.c in Sources */ = {isa = PBXBuildFile; fileRef = B71BCDDE02282E6F507A98E6605730F7 /* core_hsalsa20.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 88C29E86D1FAE5C58AC0B281EA370675 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5A9A555A4CB5C94FF77876AD171CBBB4 /* Foundation.framework */; }; - 89576682721D776432E16F3E664DD3C6 /* scalarmult_curve25519.h in Headers */ = {isa = PBXBuildFile; fileRef = E8827F004C799D73CE6774B97ED3F198 /* scalarmult_curve25519.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 89CFF9870692F4AF533A77583BBE8DDC /* ladder.h in Headers */ = {isa = PBXBuildFile; fileRef = F590A82B515161A678869630ADBA9E15 /* ladder.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8A56F0E76C6F24BC5DAC7694ECD600A9 /* crypto_box_curve25519xchacha20poly1305.h in Headers */ = {isa = PBXBuildFile; fileRef = B0B906A4E9D483526F49D2E7D64554F8 /* crypto_box_curve25519xchacha20poly1305.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 8A9F3BD25534A980BD62555DC2E92ABA /* blake2b-compress-sse41.h in Headers */ = {isa = PBXBuildFile; fileRef = 74699ACCB2550A55DD1141258DC6C2DA /* blake2b-compress-sse41.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8B42243A8704ABA44B69E40B0E384382 /* crypto_box_curve25519xsalsa20poly1305.h in Headers */ = {isa = PBXBuildFile; fileRef = FC1CA0D8D767F08057955D98FBC67AC8 /* crypto_box_curve25519xsalsa20poly1305.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8BCA4EADD349B6A9B858EAC855F1D8FC /* PromiseKit-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = FBE5EDC0D8BB184955502C1D95B78D1F /* PromiseKit-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8BDF5C397C23498E96C42CE978FBF5C1 /* CryptoSwift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B58E032BB65FB27FB8C69E748BD7092 /* CryptoSwift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8C765416F809CD5996AC3BDEB1586C88 /* crypto_pwhash_argon2i.h in Headers */ = {isa = PBXBuildFile; fileRef = D12CC3DAACE09D0C6594CF29B2BECAC5 /* crypto_pwhash_argon2i.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8CCB8CE7DA394110EC4711CEABA89C06 /* crypto_pwhash.h in Headers */ = {isa = PBXBuildFile; fileRef = 21BCBD78D05361D29C4E668BD6631C15 /* crypto_pwhash.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 8D5EE5115C21A4DCF5D24736DF274F62 /* Blowfish.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84BF9D2D5666F006E0E7C3DA91C3B056 /* Blowfish.swift */; }; - 8E4B9B0558704F04DE3CB06B4F08AC9E /* salsa20_ref.h in Headers */ = {isa = PBXBuildFile; fileRef = 710C4522253003B2E77E1E5A15F60E3F /* salsa20_ref.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8ED5B72B66FB99A359A8EBAAAD4C2C12 /* libsodium-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F640C82080BD7574A2C429A3CC39C85E /* libsodium-dummy.m */; }; - 8F175E58E49A2C412A6F9257E1F237DB /* Square Root.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04A664D2872E47C0C727D661CE83D447 /* Square Root.swift */; }; + 89576682721D776432E16F3E664DD3C6 /* scalarmult_curve25519.h in Headers */ = {isa = PBXBuildFile; fileRef = 58802F8DA178E689F6CFAFFCE483F07C /* scalarmult_curve25519.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 89CFF9870692F4AF533A77583BBE8DDC /* ladder.h in Headers */ = {isa = PBXBuildFile; fileRef = 05D75EADAA63150192812D8E4E1923B8 /* ladder.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8A7F6F65A76766994B9538E3F657C2D5 /* scalar.h in Headers */ = {isa = PBXBuildFile; fileRef = 48DEC7B142327F649F16B6A3B2173481 /* scalar.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8A9F3BD25534A980BD62555DC2E92ABA /* blake2b-compress-sse41.h in Headers */ = {isa = PBXBuildFile; fileRef = CDC97B01BF460D5588B01DE4A96370B6 /* blake2b-compress-sse41.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8AAF3AEA75A3A0847FF03CC9D035F5F2 /* scalar_4x64_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = CFA46C683F32C65C824BE2C0457818F5 /* scalar_4x64_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8B42243A8704ABA44B69E40B0E384382 /* crypto_box_curve25519xsalsa20poly1305.h in Headers */ = {isa = PBXBuildFile; fileRef = 10FC1B17FC8359EF990417B99EE0841A /* crypto_box_curve25519xsalsa20poly1305.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8B657ED4ECD7A6FCCC121FBB90C50F19 /* crypto_core_curve25519.h in Headers */ = {isa = PBXBuildFile; fileRef = 79A14242D6ED138AAA97062D1DD8C001 /* crypto_core_curve25519.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 8B8054346F3BD548AF1DC36B371E09BF /* randombytes_sysrandom.h in Headers */ = {isa = PBXBuildFile; fileRef = A7A51446A74E1AC0217F4212E9EA1D1C /* randombytes_sysrandom.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 8BCA4EADD349B6A9B858EAC855F1D8FC /* PromiseKit-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = FAFBECBF0699CF3EEA8462A0E1CD353D /* PromiseKit-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8BDF5C397C23498E96C42CE978FBF5C1 /* CryptoSwift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 3DA94EFA6F466464282B7C6EEE9DC7EE /* CryptoSwift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8C765416F809CD5996AC3BDEB1586C88 /* crypto_pwhash_argon2i.h in Headers */ = {isa = PBXBuildFile; fileRef = 7237A479ED7621A9ED30984CCD5B5978 /* crypto_pwhash_argon2i.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8C8886585CB8B0AD6BD44EA47E4AD69F /* crypto_auth.h in Headers */ = {isa = PBXBuildFile; fileRef = 7DE97E5508C0A1FC70E47A0384BAB4BE /* crypto_auth.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 8CFE971EB08EC1BB1F9CC77B34891324 /* field.h in Headers */ = {isa = PBXBuildFile; fileRef = 631496EB589CA5F21A91F8BAC9B63171 /* field.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8D5EE5115C21A4DCF5D24736DF274F62 /* Blowfish.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33439E619816C7FFBD21D52EF1A03188 /* Blowfish.swift */; }; + 8DA045F045CA6393CB472B6768B943FA /* crypto_box_curve25519xchacha20poly1305.h in Headers */ = {isa = PBXBuildFile; fileRef = 28008B7D35486A5CB4E9062EF3CFB712 /* crypto_box_curve25519xchacha20poly1305.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 8E4B9B0558704F04DE3CB06B4F08AC9E /* salsa20_ref.h in Headers */ = {isa = PBXBuildFile; fileRef = 739F5BD35F3CE84CBCE0EECAB410190D /* salsa20_ref.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8ED5B72B66FB99A359A8EBAAAD4C2C12 /* libsodium-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C595D9929F0D5D176E60F6ADFDAC650D /* libsodium-dummy.m */; }; + 8F175E58E49A2C412A6F9257E1F237DB /* Square Root.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCE740FA7EC07ABF6578C0F337CE66B5 /* Square Root.swift */; }; + 8F243AA056414CEED2BFE8EF097416BD /* crypto_stream_xsalsa20.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A5FAA6C3122E3B0EA41EFC34A427E00 /* crypto_stream_xsalsa20.h */; settings = {ATTRIBUTES = (Private, ); }; }; 8F4D97E6A9CDDB73AF2468354D7FDC40 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5A9A555A4CB5C94FF77876AD171CBBB4 /* Foundation.framework */; }; - 9071F485F265299226373288F07CDDD5 /* MD5.swift in Sources */ = {isa = PBXBuildFile; fileRef = 875EF05C094CC91A4A20FEE91307CD82 /* MD5.swift */; }; - 908054D56AD36E5BB32382DD09D2F67E /* crypto_aead_chacha20poly1305.h in Headers */ = {isa = PBXBuildFile; fileRef = 97CBA5EF233438D0775F409E588D721B /* crypto_aead_chacha20poly1305.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 91289928E1E36707B9E09E5E6716AC9C /* blake2b-long.h in Headers */ = {isa = PBXBuildFile; fileRef = 90311BAEFBA8911F22FC541A00F8024F /* blake2b-long.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 91366A249194B4899247055432900843 /* randombytes.h in Headers */ = {isa = PBXBuildFile; fileRef = 0253AA2DE30B4DC79892B0785F9E2515 /* randombytes.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 919E4D4FC5CE47800969723DCD6AC02A /* randombytes_nativeclient.c in Sources */ = {isa = PBXBuildFile; fileRef = AB4684483FF54B94636E96CA8D597FEC /* randombytes_nativeclient.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 9381183449A91185D1D6A5372E16A751 /* PMKAlertController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C18B37DFBC5156B01601ECA9A7F0E448 /* PMKAlertController.swift */; }; - 93FD8484D9CD31674F4497504B598426 /* core_hsalsa20_ref2.c in Sources */ = {isa = PBXBuildFile; fileRef = BCC16CED95421AA9D9852B212B4FD301 /* core_hsalsa20_ref2.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 947380B1D9088EC34822713B6F8DF62F /* Array+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCBA7A77BF5B339F043FD49D1C91E14C /* Array+Foundation.swift */; }; - 94C58262C32D29A5C3B233B23FBCD0A6 /* dispatch_promise.m in Sources */ = {isa = PBXBuildFile; fileRef = A0FA84CFC0E90175AEB061DCB2EC36FF /* dispatch_promise.m */; }; - 952AB7AD38F38AAFE9D25A2BC72D0E7C /* x25519_ref10.c in Sources */ = {isa = PBXBuildFile; fileRef = 5612CA2C2894935DA376198E451D3182 /* x25519_ref10.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 9538652F8FCB6771FD07C89980AFF103 /* export.h in Headers */ = {isa = PBXBuildFile; fileRef = 17FDCE0DA1FA9B2151211E2393ECB3C6 /* export.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9538E961F4CC5BA243003517DFF65237 /* KeyDerivation.swift in Sources */ = {isa = PBXBuildFile; fileRef = EF04303D7B2818876F041A8E68A8353B /* KeyDerivation.swift */; }; - 95427A7DA2AFA6FACA3E85767F3DA1CF /* Pods-web3Swift-Demo-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 397EB2C01F8363686091EC4B3B79E908 /* Pods-web3Swift-Demo-dummy.m */; }; - 956090D063AA9DDE51456A0BB06D4F4C /* crypto_verify_32.h in Headers */ = {isa = PBXBuildFile; fileRef = 55D1A93C6998B29E6865786A334D6BD1 /* crypto_verify_32.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 95F9B0AADFEF06FB6387B0F2B3F1B18A /* AES.swift in Sources */ = {isa = PBXBuildFile; fileRef = B93AD61C6FF02691A6BBDD6314157ACD /* AES.swift */; }; - 9676A00BD95FA0AEDAA22F8FC72C622C /* fe51_namespace.h in Headers */ = {isa = PBXBuildFile; fileRef = 991E731E616148148C4E59D062F149D3 /* fe51_namespace.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 969BB52BF7B08BDA030808C63CF9E82E /* crypto_onetimeauth.h in Headers */ = {isa = PBXBuildFile; fileRef = 21F9C2D13E21DC3B4559C86E70B73621 /* crypto_onetimeauth.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 96B6DEFB38590AB92CE6DC78B6F9A34C /* chacha20_dolbeau-ssse3.c in Sources */ = {isa = PBXBuildFile; fileRef = 44630F1CBB231597D6CB0143A0897581 /* chacha20_dolbeau-ssse3.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 97167F000FA1BCF879A118227E375F2B /* chacha20_dolbeau-avx2.h in Headers */ = {isa = PBXBuildFile; fileRef = C5C8F4341D4F0ECC12782B331DBBCF5C /* chacha20_dolbeau-avx2.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9737F1D46729D515F3F2CC3C56D103F1 /* PMKFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = F8115F70BDFD8BE3E2C2423A49C31108 /* PMKFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 974F0D35B94D11DCBCAEF029A85D0895 /* stream_salsa20.c in Sources */ = {isa = PBXBuildFile; fileRef = 8308E9636132D7AB4F64E0D796D57B78 /* stream_salsa20.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 98048FB1277EACAB001EBFBD148F9511 /* blake2b-ref.c in Sources */ = {isa = PBXBuildFile; fileRef = 4125321C6E32CB429AF035D000BA45E6 /* blake2b-ref.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 9918A0C7FD602ED3988D5784CFA70782 /* stream_aes128ctr.c in Sources */ = {isa = PBXBuildFile; fileRef = E9DDA2A9AD89F335F41760009AED4A2C /* stream_aes128ctr.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 995F331F1AD175699434CBF4A76FABB3 /* poly1305_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = 2159C4D014D35FCFD07FEB421BC7A60D /* poly1305_sse2.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 9991F2C9A9746EDA2395AD2C5F2CB37A /* PKCS5.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D7416E171760C91E26888C9A6150933 /* PKCS5.swift */; }; - 99D3A47DA0D859DCB560DF47900F5F86 /* GlobalState.m in Sources */ = {isa = PBXBuildFile; fileRef = 2096C99928A1AF6849A2397197884096 /* GlobalState.m */; }; - 9AD57037E5AB93B9D2BE179A81C65347 /* when.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4995C95AF974370951907DDA0C10B63B /* when.swift */; }; - 9AE23509155AD17BF88090D48E5E9809 /* Digest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2424D262125BFFB4F7D50925AC598014 /* Digest.swift */; }; - 9AFAB71D972580FF8A1C680954DDF4AB /* Words and Bits.swift in Sources */ = {isa = PBXBuildFile; fileRef = D260CB70BCBA84F6A1DDC8D6C064D36C /* Words and Bits.swift */; }; - 9B43BA7CF53FFCF36179C759B8F3C10C /* consts.h in Headers */ = {isa = PBXBuildFile; fileRef = 62E8E74D8EA1F18BBF9764CBA8CC2840 /* consts.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9B604BC1FD22398DE19E8F0D1B504CB4 /* PromiseKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 84E71FA73F1D5874752FEF66FFB5DDF4 /* PromiseKit-dummy.m */; }; - 9B888D8946DF940A9CA34BD1B4F31854 /* common.h in Headers */ = {isa = PBXBuildFile; fileRef = 15F4F8A6F49242931A6F972D3A21B327 /* common.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9C40600883C2E1C196DBC711F6215504 /* Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66BC8AB794E5AEC7CD041FFF73A7F309 /* Operators.swift */; }; - 9CA4CE62EAFD4B91D10BA54B97FDD086 /* crypto_core_salsa20.h in Headers */ = {isa = PBXBuildFile; fileRef = 15FA18EA6039F5B131F2C2CB930B69AD /* crypto_core_salsa20.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 9D25D38FF2427F038E66552FA45AFF21 /* crypto_verify_32.h in Headers */ = {isa = PBXBuildFile; fileRef = FA3BB286B2C429F1AEA39AB59F3217D2 /* crypto_verify_32.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 9D7EFFF640440E2668875D5125E1E049 /* CryptoSwift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 23B26B1E8E7CB6D90FD3E624B6395E86 /* CryptoSwift-dummy.m */; }; - 9DB7932C315D13744C4AF35304EB30BE /* randombytes_nativeclient.h in Headers */ = {isa = PBXBuildFile; fileRef = 11161408170DF52BBD741446104FC8C9 /* randombytes_nativeclient.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9E1FD88B6CC61B62F7BB3A1D8295685E /* aead_chacha20poly1305.c in Sources */ = {isa = PBXBuildFile; fileRef = 1C88EA29C85CAC8051209E919A051993 /* aead_chacha20poly1305.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 9E38F66830CB3782647DDA1149455938 /* pwhash_scryptsalsa208sha256_nosse.c in Sources */ = {isa = PBXBuildFile; fileRef = 340B278D3DAE3DA81C08A2D9F62362FA /* pwhash_scryptsalsa208sha256_nosse.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 9E74F6F1B37AD4805EEBB587B02F64BF /* curve25519_donna_c64.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B3BC3576E2A2CD1B0E2022637747FC1 /* curve25519_donna_c64.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9ED2BB2981896E0A39EFA365503F58CE /* AFError.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4E4CA3DD750DF656144DBC4C3CEF882 /* AFError.swift */; }; - 9F02C796CA4AEF49E0E0D7BCA9E9E7F0 /* pwhash_scryptsalsa208sha256.c in Sources */ = {isa = PBXBuildFile; fileRef = BC10FFF0A8458ECE7E33629954A64277 /* pwhash_scryptsalsa208sha256.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 9F7C888C4EA6F8A22EEC1FEBFB234673 /* fe51_invert.c in Sources */ = {isa = PBXBuildFile; fileRef = 09552E8BB30CEE856A46B2DFA6C0592A /* fe51_invert.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 9FB787A8B3AE62C4B2138CE330C15922 /* obsolete.c in Sources */ = {isa = PBXBuildFile; fileRef = D7DA98D495BCE5E6153FAB7166A55386 /* obsolete.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - A03E794FE9037A6BDD8BF593E605B4E3 /* Codable.swift in Sources */ = {isa = PBXBuildFile; fileRef = D79E795CB7ED938F0E5DE7FEADF7F422 /* Codable.swift */; }; - A0EFD74E3D2D45B704A6EE928B341C9A /* runtime.h in Headers */ = {isa = PBXBuildFile; fileRef = 74DAB21397096EFF1772C7AE4A626D8F /* runtime.h */; settings = {ATTRIBUTES = (Private, ); }; }; - A143DDE978DF66CDADE266F58C532F0E /* poly1305_donna64.h in Headers */ = {isa = PBXBuildFile; fileRef = 161D3284FB54591A66E4FDB5C24B53C7 /* poly1305_donna64.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A16942A44341133C6435E18DFE9CCE68 /* Pods-web3swiftTests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 69EBB0FD91D358560905C6D809C2F904 /* Pods-web3swiftTests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A1DAF32197BC5D216E386115A642F6DF /* blamka-round-ssse3.h in Headers */ = {isa = PBXBuildFile; fileRef = 73C11BBD803B2F3855FAD67FED2D7A41 /* blamka-round-ssse3.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A1E6865B286158C00502DEB5E8D4C178 /* crypto_auth_hmacsha256.h in Headers */ = {isa = PBXBuildFile; fileRef = E7EA887E557B5613F701F400083054F5 /* crypto_auth_hmacsha256.h */; settings = {ATTRIBUTES = (Private, ); }; }; - A244E1EC3D3DA5B825917476A85F0E76 /* BlockCipher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54323F849787990A3D0ADB3332A51EF9 /* BlockCipher.swift */; }; - A2997A2828E1093719E9DE73D5264E62 /* UIView+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = D894EE15417C0D91C98EEA35EB6DEFE3 /* UIView+AnyPromise.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A2A6F71B727312BD45CC7A4AAD7B0AB7 /* NetworkReachabilityManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98F3F7866CB1D23A503E9A07FA669317 /* NetworkReachabilityManager.swift */; }; - A3A355D71BAC02F3F3AD8EBAF2357497 /* secretbox_xchacha20poly1305.c in Sources */ = {isa = PBXBuildFile; fileRef = CD887F908D9DB20AC208FB692AE50C59 /* secretbox_xchacha20poly1305.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - A3BE73260E3244AE45273921009072AC /* DigestType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C056F9C76C48F568CB50537FBB908F32 /* DigestType.swift */; }; - A3FB3B4D8E40A571F78D86961688B588 /* AES.Cryptors.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9B8DDB8B2D4E76AEB8765DD9DAFDB06 /* AES.Cryptors.swift */; }; - A3FB6F24C037D1DA41DD32384EA4F3DE /* stream_chacha20.c in Sources */ = {isa = PBXBuildFile; fileRef = B39A56572DC6B8EB19139D8E2960B959 /* stream_chacha20.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - A3FDBF72C6C2ACF911DE5A194314D412 /* GenericHash.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1A008A6866816B51824B7C99BA6B095 /* GenericHash.swift */; }; + 9071F485F265299226373288F07CDDD5 /* MD5.swift in Sources */ = {isa = PBXBuildFile; fileRef = 616D848F3B3563FFBFD1D6333B439FC8 /* MD5.swift */; }; + 908054D56AD36E5BB32382DD09D2F67E /* crypto_aead_chacha20poly1305.h in Headers */ = {isa = PBXBuildFile; fileRef = 792AAB0B868BF7B27DB74C78D18F5B89 /* crypto_aead_chacha20poly1305.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 90EFE9AD1DAFDD44A61BB0F8E87961AC /* ecdsa.h in Headers */ = {isa = PBXBuildFile; fileRef = 66E96D2EE75CC47D2B882C23356ABD3D /* ecdsa.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 91289928E1E36707B9E09E5E6716AC9C /* blake2b-long.h in Headers */ = {isa = PBXBuildFile; fileRef = 05CCB31086E817A5647E22DE62577C2D /* blake2b-long.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 91366A249194B4899247055432900843 /* randombytes.h in Headers */ = {isa = PBXBuildFile; fileRef = 99850875B4C70F9899ED093BF2A23486 /* randombytes.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 919759B14AC4D20AF99F1589381FCF90 /* SecretStream.swift in Sources */ = {isa = PBXBuildFile; fileRef = 39FB7DB913E7E943C0468DA89619A75D /* SecretStream.swift */; }; + 919E4D4FC5CE47800969723DCD6AC02A /* randombytes_nativeclient.c in Sources */ = {isa = PBXBuildFile; fileRef = 7D64668DE17E1BE1BD58BEA89D001355 /* randombytes_nativeclient.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 9381183449A91185D1D6A5372E16A751 /* PMKAlertController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1EE4B8D38AC2A157DDDA92FE1D71272 /* PMKAlertController.swift */; }; + 93FD8484D9CD31674F4497504B598426 /* core_hsalsa20_ref2.c in Sources */ = {isa = PBXBuildFile; fileRef = E61A7C34E2811F18B407EBEF5B301368 /* core_hsalsa20_ref2.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 947380B1D9088EC34822713B6F8DF62F /* Array+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = F50A68F24912B392ED77969594E36B3A /* Array+Foundation.swift */; }; + 94C58262C32D29A5C3B233B23FBCD0A6 /* dispatch_promise.m in Sources */ = {isa = PBXBuildFile; fileRef = ABA767A321FE49B7686BA1E79F3676EB /* dispatch_promise.m */; }; + 952AB7AD38F38AAFE9D25A2BC72D0E7C /* x25519_ref10.c in Sources */ = {isa = PBXBuildFile; fileRef = 4219D79C94082861C963AF0229F08E92 /* x25519_ref10.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 9538652F8FCB6771FD07C89980AFF103 /* export.h in Headers */ = {isa = PBXBuildFile; fileRef = 3204E0346807F463D625B1FA74632F5D /* export.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 956090D063AA9DDE51456A0BB06D4F4C /* crypto_verify_32.h in Headers */ = {isa = PBXBuildFile; fileRef = A4D8637478D75F16DCE82433FD8E3157 /* crypto_verify_32.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 95F9B0AADFEF06FB6387B0F2B3F1B18A /* AES.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3E35B0BA0536866DB699D689341865F /* AES.swift */; }; + 9676A00BD95FA0AEDAA22F8FC72C622C /* fe51_namespace.h in Headers */ = {isa = PBXBuildFile; fileRef = B858671F2F5CF2C63AB87D3505BCA664 /* fe51_namespace.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 96B6DEFB38590AB92CE6DC78B6F9A34C /* chacha20_dolbeau-ssse3.c in Sources */ = {isa = PBXBuildFile; fileRef = 8AD32718C01819858C56F34692A68460 /* chacha20_dolbeau-ssse3.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 97167F000FA1BCF879A118227E375F2B /* chacha20_dolbeau-avx2.h in Headers */ = {isa = PBXBuildFile; fileRef = CBFC8F745CA566C8DF572672FBBEF064 /* chacha20_dolbeau-avx2.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9737F1D46729D515F3F2CC3C56D103F1 /* PMKFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E73A7514C4BCAE2D2B885AED23D5FC8 /* PMKFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 974F0D35B94D11DCBCAEF029A85D0895 /* stream_salsa20.c in Sources */ = {isa = PBXBuildFile; fileRef = A10A0B5D0F25A6FEBC580E19614C59E8 /* stream_salsa20.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 98048FB1277EACAB001EBFBD148F9511 /* blake2b-ref.c in Sources */ = {isa = PBXBuildFile; fileRef = BD57CDAC8629E26568DAB7556C3C9FDD /* blake2b-ref.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 981FF892480EF506BE85DA4028B461C6 /* hash.h in Headers */ = {isa = PBXBuildFile; fileRef = 00452E9BA40A380523E5E6228F6E642E /* hash.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9918A0C7FD602ED3988D5784CFA70782 /* stream_aes128ctr.c in Sources */ = {isa = PBXBuildFile; fileRef = 7EFA15D3576EDBAFFC58D99F393DD0D2 /* stream_aes128ctr.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 992880BB2A32F55024F06C2FBBF41364 /* KeyDerivation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84B00AB4B8779752240645DED049277F /* KeyDerivation.swift */; }; + 995F331F1AD175699434CBF4A76FABB3 /* poly1305_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = 72DE4BB180DBCC97B6181FF78F6CE4DD /* poly1305_sse2.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 9991F2C9A9746EDA2395AD2C5F2CB37A /* PKCS5.swift in Sources */ = {isa = PBXBuildFile; fileRef = F433BCA56DB4CE61C476AC0BE3BC997B /* PKCS5.swift */; }; + 99D3A47DA0D859DCB560DF47900F5F86 /* GlobalState.m in Sources */ = {isa = PBXBuildFile; fileRef = 3AFE1F3945CB38D5140ABD6DDA7F479E /* GlobalState.m */; }; + 9AD57037E5AB93B9D2BE179A81C65347 /* when.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2A49F4C3ABC154B1037C4E9EB70D1EE /* when.swift */; }; + 9AE23509155AD17BF88090D48E5E9809 /* Digest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 962BC3B8ABF430637646FA2FE62AC600 /* Digest.swift */; }; + 9AFAB71D972580FF8A1C680954DDF4AB /* Words and Bits.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F544855B13A11A23E32CA2E7611394F /* Words and Bits.swift */; }; + 9B43BA7CF53FFCF36179C759B8F3C10C /* consts.h in Headers */ = {isa = PBXBuildFile; fileRef = E88AF6EDA20AE2830F19AC192BF410A3 /* consts.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9B604BC1FD22398DE19E8F0D1B504CB4 /* PromiseKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = CD55642000AC22C1D801AA5EAD34EBBD /* PromiseKit-dummy.m */; }; + 9B888D8946DF940A9CA34BD1B4F31854 /* common.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A38CF331F82BE8374FCE8A7B5772898 /* common.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9C40600883C2E1C196DBC711F6215504 /* Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1116FE155CA82FF9C62F96DA56CE8DD8 /* Operators.swift */; }; + 9D7EFFF640440E2668875D5125E1E049 /* CryptoSwift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A7FEDADFAC08A2326F910EFBD8D22DA /* CryptoSwift-dummy.m */; }; + 9DB7932C315D13744C4AF35304EB30BE /* randombytes_nativeclient.h in Headers */ = {isa = PBXBuildFile; fileRef = AC901887624E2DE87FBBAFA6AA4C5BA8 /* randombytes_nativeclient.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9E0BCA4FBD9F598203C6A86A5E1F1823 /* lax_der_privatekey_parsing.h in Headers */ = {isa = PBXBuildFile; fileRef = E60E47AE8A68FE2F1BC17B1B470B35A8 /* lax_der_privatekey_parsing.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9E1FD88B6CC61B62F7BB3A1D8295685E /* aead_chacha20poly1305.c in Sources */ = {isa = PBXBuildFile; fileRef = 188709623E870B15CB2E68692A548593 /* aead_chacha20poly1305.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 9E38F66830CB3782647DDA1149455938 /* pwhash_scryptsalsa208sha256_nosse.c in Sources */ = {isa = PBXBuildFile; fileRef = 85E35F5B25A4ECE67CD5C470932B3B7D /* pwhash_scryptsalsa208sha256_nosse.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 9E74F6F1B37AD4805EEBB587B02F64BF /* curve25519_donna_c64.h in Headers */ = {isa = PBXBuildFile; fileRef = D459D8919804E2BBD0578996A641B056 /* curve25519_donna_c64.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9ED2BB2981896E0A39EFA365503F58CE /* AFError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45E1469F7A4D58BEC725B296B455E64C /* AFError.swift */; }; + 9EE1BF5919992DD9CCCAC23CB6EC4186 /* crypto_verify_64.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F5B4C9E692E1FDA78F5D61FC2EB5D90 /* crypto_verify_64.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9F02C796CA4AEF49E0E0D7BCA9E9E7F0 /* pwhash_scryptsalsa208sha256.c in Sources */ = {isa = PBXBuildFile; fileRef = 622056252CEDA40400CA2753B71BAFE6 /* pwhash_scryptsalsa208sha256.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 9F169F17E50DE2434EB47ADB673A74F8 /* randombytes_salsa20_random.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D97C1CFBE0D027B4FA1982674AFD4F5 /* randombytes_salsa20_random.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9F7C888C4EA6F8A22EEC1FEBFB234673 /* fe51_invert.c in Sources */ = {isa = PBXBuildFile; fileRef = E613EA139E44FE65BBA7B79EDF0731B6 /* fe51_invert.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 9FB787A8B3AE62C4B2138CE330C15922 /* obsolete.c in Sources */ = {isa = PBXBuildFile; fileRef = 46FB6E902413F264FAE4696BF57F9439 /* obsolete.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 9FDB04E59BEBF35FB1414D673F13F7EE /* crypto_secretstream_xchacha20poly1305.h in Headers */ = {isa = PBXBuildFile; fileRef = A8B97DA5307D1B7DA32E266D34327DEB /* crypto_secretstream_xchacha20poly1305.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A03E794FE9037A6BDD8BF593E605B4E3 /* Codable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07B32A8F8469159EFAAE310B31B0EB59 /* Codable.swift */; }; + A086F34906DB15BFFD8E2362A0AC0A58 /* lax_der_parsing.c in Sources */ = {isa = PBXBuildFile; fileRef = 107DE410E730EDAB1F9EAF3CF30DA26F /* lax_der_parsing.c */; }; + A143DDE978DF66CDADE266F58C532F0E /* poly1305_donna64.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E3B6818B7EB56444F7A2B545DC1E41 /* poly1305_donna64.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A19A6E7DF8816871B88C096D95F7ECC3 /* libsecp256k1-config.h in Headers */ = {isa = PBXBuildFile; fileRef = 770D18C5486F7A370B1BE0D6F355DC48 /* libsecp256k1-config.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A1DAF32197BC5D216E386115A642F6DF /* blamka-round-ssse3.h in Headers */ = {isa = PBXBuildFile; fileRef = 300023C33443B669808C36B0F0C9CAEF /* blamka-round-ssse3.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A244E1EC3D3DA5B825917476A85F0E76 /* BlockCipher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5146777967E221509D2284182907726C /* BlockCipher.swift */; }; + A2997A2828E1093719E9DE73D5264E62 /* UIView+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 774924A94778725E225510B3A46DC462 /* UIView+AnyPromise.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A2A6F71B727312BD45CC7A4AAD7B0AB7 /* NetworkReachabilityManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 542825134C42996A21D3651CB78C4747 /* NetworkReachabilityManager.swift */; }; + A3A355D71BAC02F3F3AD8EBAF2357497 /* secretbox_xchacha20poly1305.c in Sources */ = {isa = PBXBuildFile; fileRef = 24E60E2C56BACA40748E8785637DA502 /* secretbox_xchacha20poly1305.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + A3BE73260E3244AE45273921009072AC /* DigestType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23610349DAACB1AE48617F22E587B8DB /* DigestType.swift */; }; + A3FB3B4D8E40A571F78D86961688B588 /* AES.Cryptors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CB21DCD5F3411154A2D1613935DDA33 /* AES.Cryptors.swift */; }; + A3FB6F24C037D1DA41DD32384EA4F3DE /* stream_chacha20.c in Sources */ = {isa = PBXBuildFile; fileRef = F89012584150A82F53FB77A113DC3C7E /* stream_chacha20.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + A4051BEE6C9FC58C75C22829CF0E46D1 /* export.h in Headers */ = {isa = PBXBuildFile; fileRef = A26DCC2932F1074BAB0C7CCD6FABCEC6 /* export.h */; settings = {ATTRIBUTES = (Private, ); }; }; A4259E916DC71A4543E51214268C3ECB /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5A9A555A4CB5C94FF77876AD171CBBB4 /* Foundation.framework */; }; - A449914AB4F5B7DE227739333E8B13F5 /* crypto_core_curve25519.h in Headers */ = {isa = PBXBuildFile; fileRef = 779AB1A206CC9D7758AB6B53AE0C74C0 /* crypto_core_curve25519.h */; settings = {ATTRIBUTES = (Private, ); }; }; - A526C8E2F2F1F7F33D5D54868BF90EF3 /* shorthash_siphashx24_ref.c in Sources */ = {isa = PBXBuildFile; fileRef = FEF0E5643D8E080FA89E3E553A18BC77 /* shorthash_siphashx24_ref.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - A6D5FC7F3A79BA39362E85A2D4D1B949 /* crypto_core_salsa2012.h in Headers */ = {isa = PBXBuildFile; fileRef = E21AAADAB04796882DC6907516351F93 /* crypto_core_salsa2012.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A71589232624DF9F930BDF1C678C73AB /* crypto_auth.c in Sources */ = {isa = PBXBuildFile; fileRef = E15CEF791E59BB1C7DA3E385DDB2C821 /* crypto_auth.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - A7E4A8B70BC86095B0A77D02EE19A93A /* crypto_hash.c in Sources */ = {isa = PBXBuildFile; fileRef = 9F60F72ADE94ACBA741DC0FE2250E533 /* crypto_hash.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - A85F8A5780775D0632ADC51CAABACF94 /* crypto_hash_sha256.h in Headers */ = {isa = PBXBuildFile; fileRef = 3249AF372A590954EF1BC5B2C908BAA0 /* crypto_hash_sha256.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A93CD1391F1519BBD1252575851B77AF /* crypto_generichash.h in Headers */ = {isa = PBXBuildFile; fileRef = 25E122EB8642A04254099F97D01E450B /* crypto_generichash.h */; settings = {ATTRIBUTES = (Private, ); }; }; - A9EEEA7477981DEEBC72432DE9990A4B /* Alamofire-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D27601B1C38F8DF92D4EBF3F8B99155 /* Alamofire-dummy.m */; }; - AA1D18593B9670C6636796686F7A2EBC /* utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 79F9F83CE060EC44F6FF64D7AA1DB5DE /* utils.h */; settings = {ATTRIBUTES = (Private, ); }; }; - AAE6B62D10BC44696BBBFF87C25C0FA3 /* OFB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26A5581984769CA8A1FBA68672C4BC0E /* OFB.swift */; }; - ABC69E4DDDD1908FA92A2A2832924D7C /* core.h in Headers */ = {isa = PBXBuildFile; fileRef = 72D4FBFB3F620F3965D92AD62A12C79B /* core.h */; settings = {ATTRIBUTES = (Private, ); }; }; - ABDDF4421E3BEEA21F22577F0B3DD8D7 /* Integer Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC668F258AEA31AC53D7C6CCE7E4E707 /* Integer Conversion.swift */; }; - AD45DC7C578C6C662A445AC6324455F6 /* crypto_stream.h in Headers */ = {isa = PBXBuildFile; fileRef = C0FCAE74F0F6D6E2C4590F45D0380EB4 /* crypto_stream.h */; settings = {ATTRIBUTES = (Private, ); }; }; - ADA8CE4149AF0319A0BD2E21C2B76267 /* crypto_aead_aes256gcm.h in Headers */ = {isa = PBXBuildFile; fileRef = B101E96819B63784DE294323D74B9CCD /* crypto_aead_aes256gcm.h */; settings = {ATTRIBUTES = (Public, ); }; }; - ADCD43A71973724922E1B1D750C17651 /* core_salsa_ref.c in Sources */ = {isa = PBXBuildFile; fileRef = 735C5EF41E9DA9E734D2ACEC8E98CD3C /* core_salsa_ref.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - AE1EF48399533730D0066E04B22CA2D6 /* SessionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88670CDAF1F762A196BC605C5BE8D615 /* SessionManager.swift */; }; - AE846D65B367A45CD3E07B294DDC62FA /* NSObject+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19CA5B906CB5C2A2E1A8A2C90CCE34E6 /* NSObject+Promise.swift */; }; - AF64C94396A1132AA662FDA9CCEC726B /* crypto_pwhash_argon2i.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E2AFD18582598260EEEA0316706F9E7 /* crypto_pwhash_argon2i.h */; settings = {ATTRIBUTES = (Private, ); }; }; - AF7FDBD2C94AFA2224B74CB0F91CDE3C /* afterlife.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4DCCB5E1AE204FF68CA7C30AD97D2EE6 /* afterlife.swift */; }; - B11800ACC2FFBA1790290BA1172BCCFB /* randombytes.c in Sources */ = {isa = PBXBuildFile; fileRef = 894108B41497EEAE8DFAD524A430A032 /* randombytes.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - B3C686B35A7544D05C4057738393EC32 /* AwaitKit-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E51137FE6F7F1D6B3E45E9A880DAF06 /* AwaitKit-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B451097C5BB2BA8D7B45CAC5B69F2459 /* crypto_generichash_blake2b.h in Headers */ = {isa = PBXBuildFile; fileRef = 34EC3DB74409CA1BA1E7282E4B9651C2 /* crypto_generichash_blake2b.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B4A899A69FE05A6BB6D7CB39935975E1 /* blake2b-load-sse41.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A0C721886EB5726D9ECB3C4AD9F001C /* blake2b-load-sse41.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B65FCF589DA398C3EFE0128064E510EC /* MultipartFormData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FECA9358885E0B80EA14BCEEC8FA6A7 /* MultipartFormData.swift */; }; - B6A866543CBEC8754DFD7FA66F1BBF2F /* crypto_sign.h in Headers */ = {isa = PBXBuildFile; fileRef = 702BBA9585D507E1C04742322173DA70 /* crypto_sign.h */; settings = {ATTRIBUTES = (Private, ); }; }; - B6CCD28C20E75E1220654DADA15F9693 /* crypto_core_salsa208.h in Headers */ = {isa = PBXBuildFile; fileRef = 912F7B30025B6487AFFFF62442B0B9AD /* crypto_core_salsa208.h */; settings = {ATTRIBUTES = (Private, ); }; }; - B720E820753C02585B13AEFA3E05E315 /* crypto_stream.h in Headers */ = {isa = PBXBuildFile; fileRef = 0249AF8B4327ECC161894ACBE107CC8D /* crypto_stream.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B81CDE4E17BD882B639A529859EA7232 /* blake2b-compress-ssse3.h in Headers */ = {isa = PBXBuildFile; fileRef = B551D746CF560D8B9DFB043B3FCCDBFE /* blake2b-compress-ssse3.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B83CCB3CD8A1B0F2B4CD298ED721D71A /* AwaitKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C85A39C94EB58220C2E1139B2D95A359 /* AwaitKit-dummy.m */; }; - B860CBC16C94EA0E1D3A8920567940B9 /* Bitwise Ops.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCEC94BA988FD836C18B1C985E3E9602 /* Bitwise Ops.swift */; }; - B8A194AE3F08EA7E57496C3B4FB08B6E /* xor_afternm_aes128ctr.c in Sources */ = {isa = PBXBuildFile; fileRef = 7767B1C235F27A8B67815FC617BB03A2 /* xor_afternm_aes128ctr.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - B8BA768A860B89D2B8C705D23E535841 /* curve25519_ref10.c in Sources */ = {isa = PBXBuildFile; fileRef = 070E63DDBD4B5AD9AA742B405B48B7CF /* curve25519_ref10.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - B8C5F834026D0B7291E760AD5FA44226 /* RandomUInt64.swift in Sources */ = {isa = PBXBuildFile; fileRef = C50D54526E4FB9B70073E846C0AB19D4 /* RandomUInt64.swift */; }; - B8C7628EC314775ECD10438ED7756E08 /* crypto_secretbox_xchacha20poly1305.h in Headers */ = {isa = PBXBuildFile; fileRef = B95D2BC236C1BB8EF266DA40E9C9DDD7 /* crypto_secretbox_xchacha20poly1305.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B8D532DB4114871A3BA722647ACADDEB /* Subtraction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7EEB20C2A43940582B1D5043763669FC /* Subtraction.swift */; }; - B8F0289A332BBD6972264E30850670DF /* export.h in Headers */ = {isa = PBXBuildFile; fileRef = 5073FD40A4668B8891483BF7B846F2E9 /* export.h */; settings = {ATTRIBUTES = (Private, ); }; }; - B95577C6D5272B969BDD555FF1EE54E2 /* crypto_kdf_blake2b.h in Headers */ = {isa = PBXBuildFile; fileRef = EC9C143E88FB15761B5A85C577A522B2 /* crypto_kdf_blake2b.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B95A2B8FA25CAC50E9734F1CB8C5BEB0 /* crypto_pwhash.h in Headers */ = {isa = PBXBuildFile; fileRef = D3A5A68D9F120319208735753EBF8A33 /* crypto_pwhash.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B97407D9DD60922FDC66BBC926F69309 /* UInt64+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = EDA037C5ADD0B7C9FAF3DC6D140A51DE /* UInt64+Extension.swift */; }; - BA2EE19964FE0A08E9CCB2FD98207A53 /* crypto_auth_hmacsha512256.h in Headers */ = {isa = PBXBuildFile; fileRef = E80E5EA27D02B1FEEEF1D5D0029B8703 /* crypto_auth_hmacsha512256.h */; settings = {ATTRIBUTES = (Private, ); }; }; - BA5D0812B52994415A498B3606373582 /* u1.h in Headers */ = {isa = PBXBuildFile; fileRef = 196BF0D72A1BCDEE8EE398EE7281D047 /* u1.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BBEFE2F9CEB73DC7BD97FFA66A0D9D4F /* Validation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94EDB94F71D60ABA3EB314D4CE168A23 /* Validation.swift */; }; - BC0319F54BCD536CED47F10407D271E6 /* crypto_stream.c in Sources */ = {isa = PBXBuildFile; fileRef = 762DD7C89E8377486C87C1C8AE58BA43 /* crypto_stream.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - BC4AB4A9D15CD97AEC2AAAB26B496B56 /* Promise+Properties.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E09382ABF7A5A2682C537DAB06578F9 /* Promise+Properties.swift */; }; - BCC7FC475A97A8A0DA7FEDAED362EFF2 /* Zalgo.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED6A7E40E402EE82715CABD6845C96EA /* Zalgo.swift */; }; - BD55173B7A37CDC519B0F34761FF4419 /* secretbox_xsalsa20poly1305.c in Sources */ = {isa = PBXBuildFile; fileRef = 736C4999BD3D653E8137A15677C01959 /* secretbox_xsalsa20poly1305.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - BE30CD35FB96766A7831E9E2B58C3F60 /* SecureBytes.swift in Sources */ = {isa = PBXBuildFile; fileRef = A3551CA0F49C75A2C6FB8B7164888B81 /* SecureBytes.swift */; }; - BE5C67A07E289FE1F9BE27335B159997 /* ParameterEncoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 769B93DF09542C97D6A850E4EB6A7A09 /* ParameterEncoding.swift */; }; - BE9A022C0D93DB3E10116EF512B408D7 /* crypto_verify_64.h in Headers */ = {isa = PBXBuildFile; fileRef = C04479979B4AE62024ADAFE7D7D02C9F /* crypto_verify_64.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BEEFDB77FE1C01FA63CFB67A18E812EE /* SecretStream.swift in Sources */ = {isa = PBXBuildFile; fileRef = E396FBD91C56C17E94BDAE8CED5802C2 /* SecretStream.swift */; }; - BEFF5B70118F5CC30B08DAD3C60DD542 /* ChaCha20.swift in Sources */ = {isa = PBXBuildFile; fileRef = 821D8AF502E093653280A955025F7EFB /* ChaCha20.swift */; }; - BF68453E0A6C85F7A6ED90159629FB40 /* ed25519_ref10.h in Headers */ = {isa = PBXBuildFile; fileRef = A132FA08A215B5C18EEF42F9EE0845B6 /* ed25519_ref10.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BF7C44E3B6D1C9150ACE7BECDC3B450C /* randombytes_salsa20_random.h in Headers */ = {isa = PBXBuildFile; fileRef = F0AF7E7C367AB2DA5A42BC0F17AD4E75 /* randombytes_salsa20_random.h */; settings = {ATTRIBUTES = (Private, ); }; }; - BFD7C97E44DB84A86786453EE7C868DE /* Pods-web3Swift-Demo-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = E2F5581D0772B129577EA7ABDBA8C813 /* Pods-web3Swift-Demo-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C0A1348BA2C39F16187D7824EE855684 /* crypto_shorthash_siphash24.h in Headers */ = {isa = PBXBuildFile; fileRef = 24765D3FFBBEEC352498B8C33B8FA52A /* crypto_shorthash_siphash24.h */; settings = {ATTRIBUTES = (Private, ); }; }; - C106C9D0D84773B90D1350E884BC8C0B /* crypto_box_curve25519xchacha20poly1305.h in Headers */ = {isa = PBXBuildFile; fileRef = 21D1DBD278CB9CFB93FE728EC04334E2 /* crypto_box_curve25519xchacha20poly1305.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C13CC2A11A4EAE37A097665914030518 /* SipHasher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4179BA0C81529BA84385A2A4D90BF09C /* SipHasher.swift */; }; - C14502EA132126EEA32E9FB3C1B7DE7F /* crypto_pwhash.c in Sources */ = {isa = PBXBuildFile; fileRef = 64E5F50B881BC161C6BC3ACADBE29679 /* crypto_pwhash.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - C14D43DC2C53879C2BE40D8EE098F227 /* argon2-core.h in Headers */ = {isa = PBXBuildFile; fileRef = 779D3415C252E3D9F6123C54634349F0 /* argon2-core.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C1957D576C616C1F957EF9FD37ADBB3A /* NSTask+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = E529DE777AFD1E5370D4724C20C225A0 /* NSTask+AnyPromise.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C22F3C76C366E37567806784080A5735 /* NoPadding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0995131DBCD6FD1CED8EB2A08E9BD9D0 /* NoPadding.swift */; }; - C2A3950504AB404C3B2446AC1CEAEA3C /* crypto_auth_hmacsha512.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AFFA07FA17054E8E612B3B0849BEB5D /* crypto_auth_hmacsha512.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C3130968E152EF492C8CB769B7E5E8F9 /* generichash_blake2b.c in Sources */ = {isa = PBXBuildFile; fileRef = B36353933A6E920E0A59DCAD60CB62CE /* generichash_blake2b.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - C37DF5537C66EFCD3E433D83D3C29870 /* common.h in Headers */ = {isa = PBXBuildFile; fileRef = 41531B74D6A98E518F7CD6E3E1BE1D6A /* common.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C3A40D162BBDF16B7A706B4861B57DC2 /* SHA2.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBDB0A5A2304C622C7912198CB92C561 /* SHA2.swift */; }; - C3B6F398889467C811C857EEC998C480 /* crypto_core_hchacha20.h in Headers */ = {isa = PBXBuildFile; fileRef = A62C3D81BB4A8F4AB511974F1D1CA2CF /* crypto_core_hchacha20.h */; settings = {ATTRIBUTES = (Private, ); }; }; - C46A12764770CF9CD186DCEF56DDBAE9 /* utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 135A4BF162559A6AD26E24815341775A /* utils.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C4FF3F72CA64FBA1593818344FDAEEE1 /* u4.h in Headers */ = {isa = PBXBuildFile; fileRef = 4720AB7429158BCA361A6B70808A01D1 /* u4.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C5516987AC20F546582ABE4214B92C07 /* salsa20_xmm6.c in Sources */ = {isa = PBXBuildFile; fileRef = E48A3CB74046D49F274AF740255FF298 /* salsa20_xmm6.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - C57A963432308BF844CF74CD69D54282 /* chacha20_ref.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ED7FB48BF0703478184016DF789A03F /* chacha20_ref.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C62A2197753EECDE01EE4037FBD0F091 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5A9A555A4CB5C94FF77876AD171CBBB4 /* Foundation.framework */; }; - C65AA085D6A703D7321511D1612C0AFA /* String+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68995304898E60BDD23D474DEF305CBD /* String+Extension.swift */; }; - C6A8E06A81B987849B7353BB7421EE0F /* hash_sha512_cp.c in Sources */ = {isa = PBXBuildFile; fileRef = 0D981548FC89F73B8572C308EF3D525D /* hash_sha512_cp.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - C6FE5EE68F245265E4B4345D2E76D80F /* afternm_aes128ctr.c in Sources */ = {isa = PBXBuildFile; fileRef = B26F18E3327DBA08BEB8749E9A1DAAA5 /* afternm_aes128ctr.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - C769358148E8BCA471E83AFE8CC3CE4A /* crypto_scalarmult.h in Headers */ = {isa = PBXBuildFile; fileRef = 4FD5AE38046C697D47E965FFF3240861 /* crypto_scalarmult.h */; settings = {ATTRIBUTES = (Private, ); }; }; - C7C704D61006184CEFEE4350C05C4ACC /* crypto_scalarmult_curve25519.h in Headers */ = {isa = PBXBuildFile; fileRef = E4797EFA44F3B769238902C2F5F6A4BF /* crypto_scalarmult_curve25519.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C858774035B92D95ADA3CCFD3C37E90F /* fe51.h in Headers */ = {isa = PBXBuildFile; fileRef = 21552B00F36B74636FA9CFB62D9FAFF7 /* fe51.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C91B8EFA1B0B2110848841893335BEB9 /* randombytes_salsa20_random.h in Headers */ = {isa = PBXBuildFile; fileRef = DBD8AB896BC29A2FF3CED039FB478D15 /* randombytes_salsa20_random.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CB13A550679E476DD65D8D0C38698838 /* Multiplication.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2510DD098271C3F6BD6BBF571628EB1 /* Multiplication.swift */; }; - CB6D60925223897FFA2662667DF83E8A /* Response.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D3BC3C45D705077795EFE4798BFDE15 /* Response.swift */; }; - CD15A0BB990015772E530320E7F3B36A /* Pods-web3swiftTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E52D64EBBCD6AA9FB168ACD9FD9EF33B /* Pods-web3swiftTests-dummy.m */; }; - CDEC4EEFBFF1D666750F5F84B86B9FD5 /* crypto_kx.h in Headers */ = {isa = PBXBuildFile; fileRef = 4015A814D74E0993F2C42A71AD614A2A /* crypto_kx.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CEB7B7A50A16EB47EF90ABADD7E8B54E /* PBKDF2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F34D5C96F9FD31203F261805F557EBB /* PBKDF2.swift */; }; - CEFA0621F14AF62206FD6A6324C0866C /* crypto_hash_sha256.h in Headers */ = {isa = PBXBuildFile; fileRef = 785F8ED3587D35DF586E9E2B5CA20490 /* crypto_hash_sha256.h */; settings = {ATTRIBUTES = (Private, ); }; }; - CF04D325D83785CBA63C792A382A1C3C /* Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2722613A016A50F1D5F6657B99C26E9A /* Promise.swift */; }; - CF88FBAEA04DF1B14A501E206125AAAB /* crypto_secretbox_xsalsa20poly1305.h in Headers */ = {isa = PBXBuildFile; fileRef = 54A7317C51E1282B6975715D070F21E9 /* crypto_secretbox_xsalsa20poly1305.h */; settings = {ATTRIBUTES = (Private, ); }; }; - CFEEB62551C7E48B59215C2ED78E3FF7 /* UIView+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 97282C0A3B7FE7421CC4411EA6BAFC74 /* UIView+AnyPromise.m */; }; - D05DA78C0B928B624B3F2031FDB16C0A /* randombytes_sysrandom.h in Headers */ = {isa = PBXBuildFile; fileRef = 021D9B7C19129D73B8088AD0CB0833EE /* randombytes_sysrandom.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A526C8E2F2F1F7F33D5D54868BF90EF3 /* shorthash_siphashx24_ref.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C1BD596E6DBB0FFE3391A9154C2B437 /* shorthash_siphashx24_ref.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + A682F8E3B3A98DB95138B9C6E75020DB /* Stream.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F081C8188E08175788D1B747A9497E4 /* Stream.swift */; }; + A6D5FC7F3A79BA39362E85A2D4D1B949 /* crypto_core_salsa2012.h in Headers */ = {isa = PBXBuildFile; fileRef = C5CC4E2B1C1EAD723D8A238FCDF407FF /* crypto_core_salsa2012.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A71589232624DF9F930BDF1C678C73AB /* crypto_auth.c in Sources */ = {isa = PBXBuildFile; fileRef = A2CE4C93D3EE0771C0A73EE0657A7EEA /* crypto_auth.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + A7E4A8B70BC86095B0A77D02EE19A93A /* crypto_hash.c in Sources */ = {isa = PBXBuildFile; fileRef = D91B8E6F194E81A3CDA720F0CF3017DA /* crypto_hash.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + A7EA4962B1CDBDCE647959FDCCF7F3C6 /* crypto_box_curve25519xsalsa20poly1305.h in Headers */ = {isa = PBXBuildFile; fileRef = BDA71F60A204305FF5B1D02D12A9D1BF /* crypto_box_curve25519xsalsa20poly1305.h */; settings = {ATTRIBUTES = (Private, ); }; }; + A85F8A5780775D0632ADC51CAABACF94 /* crypto_hash_sha256.h in Headers */ = {isa = PBXBuildFile; fileRef = 49DBE8708C3FB343660636A56C0F5CFC /* crypto_hash_sha256.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A9EEEA7477981DEEBC72432DE9990A4B /* Alamofire-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = ABE071F115DABC5611980E48CF6733A8 /* Alamofire-dummy.m */; }; + A9F8FCB21C1C27EB1ADDFB69655CA98E /* crypto_sign_ed25519.h in Headers */ = {isa = PBXBuildFile; fileRef = F21C35CA5E6CC21FE368236CCB7C9B5B /* crypto_sign_ed25519.h */; settings = {ATTRIBUTES = (Private, ); }; }; + AAE6B62D10BC44696BBBFF87C25C0FA3 /* OFB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8FE55B2A737F69DDE418661102297E59 /* OFB.swift */; }; + ABDDF4421E3BEEA21F22577F0B3DD8D7 /* Integer Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14811DBE509E4540763DEED9B026CCA4 /* Integer Conversion.swift */; }; + ADA8CE4149AF0319A0BD2E21C2B76267 /* crypto_aead_aes256gcm.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F5B04706AC846488762D9368309EB4F /* crypto_aead_aes256gcm.h */; settings = {ATTRIBUTES = (Public, ); }; }; + ADCD43A71973724922E1B1D750C17651 /* core_salsa_ref.c in Sources */ = {isa = PBXBuildFile; fileRef = 99D8ADE8C3CA2AC41682D4A569D602C2 /* core_salsa_ref.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + ADEE8892F42EA37E2762D8FAE7D80952 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5A9A555A4CB5C94FF77876AD171CBBB4 /* Foundation.framework */; }; + AE16D0489632A45E92025A3FEDDF8532 /* basic-config.h in Headers */ = {isa = PBXBuildFile; fileRef = 398ACC94B6724B8F4330CDDE2D0D1D17 /* basic-config.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AE1EF48399533730D0066E04B22CA2D6 /* SessionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 904DD56165F0855EB80FEC3481446B5A /* SessionManager.swift */; }; + AE846D65B367A45CD3E07B294DDC62FA /* NSObject+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C20D099B353A1338109F5A02B916D4E /* NSObject+Promise.swift */; }; + AF7FDBD2C94AFA2224B74CB0F91CDE3C /* afterlife.swift in Sources */ = {isa = PBXBuildFile; fileRef = F880B9DB12A0C175AC38E0C7DAB329DE /* afterlife.swift */; }; + B11800ACC2FFBA1790290BA1172BCCFB /* randombytes.c in Sources */ = {isa = PBXBuildFile; fileRef = 8B9DF1FD11BFC5FAC57E2E26742C9E07 /* randombytes.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + B3C686B35A7544D05C4057738393EC32 /* AwaitKit-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = C576B68F42B74E95ED91DB4F4D4D3E8C /* AwaitKit-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B451097C5BB2BA8D7B45CAC5B69F2459 /* crypto_generichash_blake2b.h in Headers */ = {isa = PBXBuildFile; fileRef = EE8D28A3351F1F43EBF7B63F9773E4A0 /* crypto_generichash_blake2b.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B4A899A69FE05A6BB6D7CB39935975E1 /* blake2b-load-sse41.h in Headers */ = {isa = PBXBuildFile; fileRef = E3C34753E5E5F3886A4AF14E9EF50CAA /* blake2b-load-sse41.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B50F9B7BDD7CD760A15FFF419F58EF3F /* Sodium-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 82C4FBE06899BC1853500C9B2DB30656 /* Sodium-dummy.m */; }; + B65FCF589DA398C3EFE0128064E510EC /* MultipartFormData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F8710FAEF27BCA4066637B64DCFBF59 /* MultipartFormData.swift */; }; + B720E820753C02585B13AEFA3E05E315 /* crypto_stream.h in Headers */ = {isa = PBXBuildFile; fileRef = 5683C01BDF139FF1A92B70D911690B7D /* crypto_stream.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B81BCE84D5DA6C53F950F0351D134EFF /* crypto_scalarmult.h in Headers */ = {isa = PBXBuildFile; fileRef = 177B97316A783C6D8299DF47BC8DBFE1 /* crypto_scalarmult.h */; settings = {ATTRIBUTES = (Private, ); }; }; + B81CDE4E17BD882B639A529859EA7232 /* blake2b-compress-ssse3.h in Headers */ = {isa = PBXBuildFile; fileRef = 43F4DCA991089AB989F5AFF2DBEAF64A /* blake2b-compress-ssse3.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B83CCB3CD8A1B0F2B4CD298ED721D71A /* AwaitKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D63E32BE11A632E454EC0531A03A0CDD /* AwaitKit-dummy.m */; }; + B860CBC16C94EA0E1D3A8920567940B9 /* Bitwise Ops.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FDA2E4E741C25EFB8BA4857530E6E74 /* Bitwise Ops.swift */; }; + B8A194AE3F08EA7E57496C3B4FB08B6E /* xor_afternm_aes128ctr.c in Sources */ = {isa = PBXBuildFile; fileRef = 1785EDC41C5CAE35AB9DCB8FC9501E1B /* xor_afternm_aes128ctr.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + B8BA768A860B89D2B8C705D23E535841 /* curve25519_ref10.c in Sources */ = {isa = PBXBuildFile; fileRef = D1E81ECE603635080B1B8863CCC3BA87 /* curve25519_ref10.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + B8C5F834026D0B7291E760AD5FA44226 /* RandomUInt64.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EC930D0D02B72829CB15062821D7BEC /* RandomUInt64.swift */; }; + B8C7628EC314775ECD10438ED7756E08 /* crypto_secretbox_xchacha20poly1305.h in Headers */ = {isa = PBXBuildFile; fileRef = 10638DD5E2EE146E210FE3DB65B19A21 /* crypto_secretbox_xchacha20poly1305.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B8D532DB4114871A3BA722647ACADDEB /* Subtraction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2613F6517D24E98257A33C0BD86AA417 /* Subtraction.swift */; }; + B8FC11B39F62D0CC45882EF39E90BA1C /* scalar_4x64.h in Headers */ = {isa = PBXBuildFile; fileRef = 62E5093BFA3E697040C1C87A6F44BB51 /* scalar_4x64.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B95577C6D5272B969BDD555FF1EE54E2 /* crypto_kdf_blake2b.h in Headers */ = {isa = PBXBuildFile; fileRef = F59B11885A0CFB1B32352ADD0B2D7AA8 /* crypto_kdf_blake2b.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B95A2B8FA25CAC50E9734F1CB8C5BEB0 /* crypto_pwhash.h in Headers */ = {isa = PBXBuildFile; fileRef = 1356A151B544C1192B6AB81AA56F2CBA /* crypto_pwhash.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B97407D9DD60922FDC66BBC926F69309 /* UInt64+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A86535A248F7C92CA8B4A18EECA240E /* UInt64+Extension.swift */; }; + B9840EFC6A1805383D9605946ACE680C /* field_5x52_asm_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 54328FC1E9FD7FBA511EF8034F7E1383 /* field_5x52_asm_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BA5D0812B52994415A498B3606373582 /* u1.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D8D147273FEB0DB4B09AB310C0E2FEE /* u1.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BBEFE2F9CEB73DC7BD97FFA66A0D9D4F /* Validation.swift in Sources */ = {isa = PBXBuildFile; fileRef = E26D4A27311EA1A6919E4A79E0A46483 /* Validation.swift */; }; + BC025A99617216CA5B84FB36199BA9F1 /* scalar_8x32_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = B98AE4C2D95A57A81283819409FACEA3 /* scalar_8x32_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BC0319F54BCD536CED47F10407D271E6 /* crypto_stream.c in Sources */ = {isa = PBXBuildFile; fileRef = 43B9AB00B876DF2FC086DF76B60D34F7 /* crypto_stream.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + BC4AB4A9D15CD97AEC2AAAB26B496B56 /* Promise+Properties.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE008C29E5430422D5A8E67AE4A3F1D4 /* Promise+Properties.swift */; }; + BCC7FC475A97A8A0DA7FEDAED362EFF2 /* Zalgo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4929A93CF65EE3863C0CF7421174242A /* Zalgo.swift */; }; + BD55173B7A37CDC519B0F34761FF4419 /* secretbox_xsalsa20poly1305.c in Sources */ = {isa = PBXBuildFile; fileRef = EDCCF73D93A57CA87DEFA1765EF38AB3 /* secretbox_xsalsa20poly1305.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + BE30CD35FB96766A7831E9E2B58C3F60 /* SecureBytes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C6660B2BD4ECAAC5E97B07FFEBDA331 /* SecureBytes.swift */; }; + BE5C67A07E289FE1F9BE27335B159997 /* ParameterEncoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = A361335FBC7529C373055D35F00522E2 /* ParameterEncoding.swift */; }; + BE9A022C0D93DB3E10116EF512B408D7 /* crypto_verify_64.h in Headers */ = {isa = PBXBuildFile; fileRef = 6EAC2CB20F0056806271A830A16836AA /* crypto_verify_64.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BEFF5B70118F5CC30B08DAD3C60DD542 /* ChaCha20.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68702A3A19892E502030605B3F934569 /* ChaCha20.swift */; }; + BF6694B17D800ED5BAC9E04EB586926C /* crypto_verify_16.h in Headers */ = {isa = PBXBuildFile; fileRef = 30054AA6B00300917677FEE68BDD67D1 /* crypto_verify_16.h */; settings = {ATTRIBUTES = (Private, ); }; }; + BF68453E0A6C85F7A6ED90159629FB40 /* ed25519_ref10.h in Headers */ = {isa = PBXBuildFile; fileRef = 620DAE2D1ADF10355B3E2529A23BF940 /* ed25519_ref10.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BF760C3561AAA4F8565C39172985D3CB /* sodium_lib.h in Headers */ = {isa = PBXBuildFile; fileRef = 5FA2FE36770EF846EC9857FCCA53E0B8 /* sodium_lib.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C0068BBE7CE85C9CA092A44C3EBAD101 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5A9A555A4CB5C94FF77876AD171CBBB4 /* Foundation.framework */; }; + C0F555FDAB6F40AAC38BCE92CD809427 /* crypto_onetimeauth_poly1305.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E1DA3CC83C5A9C0DF6CFEFAFB4066B4 /* crypto_onetimeauth_poly1305.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C106C9D0D84773B90D1350E884BC8C0B /* crypto_box_curve25519xchacha20poly1305.h in Headers */ = {isa = PBXBuildFile; fileRef = 20161716CB73A05C11BC0D9674719D73 /* crypto_box_curve25519xchacha20poly1305.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C13CC2A11A4EAE37A097665914030518 /* SipHasher.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8DD6F18DCA15D6313A4A4CF257AA7CF /* SipHasher.swift */; }; + C14502EA132126EEA32E9FB3C1B7DE7F /* crypto_pwhash.c in Sources */ = {isa = PBXBuildFile; fileRef = 94FBB315D73430B0AA86C296090D2120 /* crypto_pwhash.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + C14D43DC2C53879C2BE40D8EE098F227 /* argon2-core.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D11481448FC728BF294A952BC6B613B /* argon2-core.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C17EA4B89C7EA2FCD51D76B4D5163E03 /* crypto_generichash_blake2b.h in Headers */ = {isa = PBXBuildFile; fileRef = 99074594DF0703474EFB686F1C65F0C1 /* crypto_generichash_blake2b.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C1957D576C616C1F957EF9FD37ADBB3A /* NSTask+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A47965CD90F98C1F73A3EBC0E3729D1 /* NSTask+AnyPromise.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C22F3C76C366E37567806784080A5735 /* NoPadding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 778BFC7BDE2A9FB8579B1E18D8BA8BCE /* NoPadding.swift */; }; + C2A3950504AB404C3B2446AC1CEAEA3C /* crypto_auth_hmacsha512.h in Headers */ = {isa = PBXBuildFile; fileRef = E741BB492570036869CFBA7D59476010 /* crypto_auth_hmacsha512.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C3130968E152EF492C8CB769B7E5E8F9 /* generichash_blake2b.c in Sources */ = {isa = PBXBuildFile; fileRef = 263BA41B9CC33F8E82CAD4A83E87FFF2 /* generichash_blake2b.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + C37DF5537C66EFCD3E433D83D3C29870 /* common.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ACBA4291AC8B1FF023A2FAEAC5841E5 /* common.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C3A40D162BBDF16B7A706B4861B57DC2 /* SHA2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 057F53420FDA630614C89C973462B974 /* SHA2.swift */; }; + C46A12764770CF9CD186DCEF56DDBAE9 /* utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BAE1C5F82F1AA44AB4AE0EC51823653 /* utils.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C4FF3F72CA64FBA1593818344FDAEEE1 /* u4.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BC51585C916D53B9B911712CEDB758A /* u4.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C5516987AC20F546582ABE4214B92C07 /* salsa20_xmm6.c in Sources */ = {isa = PBXBuildFile; fileRef = B3A443A3BCFB436B3C32F0D7FEF025B3 /* salsa20_xmm6.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + C57A963432308BF844CF74CD69D54282 /* chacha20_ref.h in Headers */ = {isa = PBXBuildFile; fileRef = B2CE148B70CCAC164166865F0F7C49F6 /* chacha20_ref.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C65AA085D6A703D7321511D1612C0AFA /* String+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9193210B51913ACA7CA410C46669B02 /* String+Extension.swift */; }; + C6A8E06A81B987849B7353BB7421EE0F /* hash_sha512_cp.c in Sources */ = {isa = PBXBuildFile; fileRef = EAF88EF17DC709BD802C0E57F078E878 /* hash_sha512_cp.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + C6FE5EE68F245265E4B4345D2E76D80F /* afternm_aes128ctr.c in Sources */ = {isa = PBXBuildFile; fileRef = A7338AD202AF0A4E747CFB565A4D55D4 /* afternm_aes128ctr.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + C732CCCFDC7FDEB32991510EF15B00A7 /* crypto_stream.h in Headers */ = {isa = PBXBuildFile; fileRef = F81A8F97AC5F7AF062738E8F94E74014 /* crypto_stream.h */; settings = {ATTRIBUTES = (Private, ); }; }; + C78DE6385A192695DD54E33811E27887 /* group_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 5766CA36AAD59C7614DA7EC55F6BD087 /* group_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C7C704D61006184CEFEE4350C05C4ACC /* crypto_scalarmult_curve25519.h in Headers */ = {isa = PBXBuildFile; fileRef = B41E875A13E1EEFCB3F0106FADECF01F /* crypto_scalarmult_curve25519.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C858774035B92D95ADA3CCFD3C37E90F /* fe51.h in Headers */ = {isa = PBXBuildFile; fileRef = E612172B5EC8A35BE2BE84F05D8828BA /* fe51.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C91B8EFA1B0B2110848841893335BEB9 /* randombytes_salsa20_random.h in Headers */ = {isa = PBXBuildFile; fileRef = 771D25E0072B760399A96895664C8332 /* randombytes_salsa20_random.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C9DC90F52734BA241083B066E4CF3E03 /* crypto_core_salsa208.h in Headers */ = {isa = PBXBuildFile; fileRef = 524FE5AC9C63DBC074545CD4CC6DB23B /* crypto_core_salsa208.h */; settings = {ATTRIBUTES = (Private, ); }; }; + CB13A550679E476DD65D8D0C38698838 /* Multiplication.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF6520AC0622133ECCB92B10A716E1A7 /* Multiplication.swift */; }; + CB6D60925223897FFA2662667DF83E8A /* Response.swift in Sources */ = {isa = PBXBuildFile; fileRef = 042A4D28426082E8C796AE67FF694537 /* Response.swift */; }; + CBAE6549610601F455E3BBEC7A8F6597 /* util.h in Headers */ = {isa = PBXBuildFile; fileRef = 62FC06AFAA06A8B4881A4B638C47F78A /* util.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CC2FBE4477657C3BC6CAD1FC82814B3B /* Sodium-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 391A32CDCFAD5235B11A17C50107FA99 /* Sodium-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CC895F82FC07172510BDB57B15D081A3 /* crypto_core_salsa20.h in Headers */ = {isa = PBXBuildFile; fileRef = E3D4950CFDD58A88E82D31E171B2A0A3 /* crypto_core_salsa20.h */; settings = {ATTRIBUTES = (Private, ); }; }; + CC97710E5B149EF565E55225FC606E5B /* scalar_low.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C99572B9FBBEBC6294C27E822246C8A /* scalar_low.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CDEC4EEFBFF1D666750F5F84B86B9FD5 /* crypto_kx.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C54C74AB7DC5B51E6F6C0C871294708 /* crypto_kx.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CEB7B7A50A16EB47EF90ABADD7E8B54E /* PBKDF2.swift in Sources */ = {isa = PBXBuildFile; fileRef = A36104F32BA41DCAF9D50291DD752465 /* PBKDF2.swift */; }; + CF04D325D83785CBA63C792A382A1C3C /* Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = E23FC85BD650B5CD0593D5E8CD3CF69F /* Promise.swift */; }; + CF0C2224CC4BBD76E6A163176B37D53E /* crypto_pwhash_scryptsalsa208sha256.h in Headers */ = {isa = PBXBuildFile; fileRef = 49F50AA2D7F488D13023A1F3DCE5D554 /* crypto_pwhash_scryptsalsa208sha256.h */; settings = {ATTRIBUTES = (Private, ); }; }; + CF9B7138C4BF9F358E8305EC4EAB00DE /* crypto_aead_aes256gcm.h in Headers */ = {isa = PBXBuildFile; fileRef = 28C18FDDDDB9701BB3FE62632D8CA23F /* crypto_aead_aes256gcm.h */; settings = {ATTRIBUTES = (Private, ); }; }; + CFEEB62551C7E48B59215C2ED78E3FF7 /* UIView+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = F836BDA62460EB1012844A1FE8FDF9DD /* UIView+AnyPromise.m */; }; + D05DA78C0B928B624B3F2031FDB16C0A /* randombytes_sysrandom.h in Headers */ = {isa = PBXBuildFile; fileRef = BDAA848019BF7368ACE8278178DBCE7F /* randombytes_sysrandom.h */; settings = {ATTRIBUTES = (Public, ); }; }; D0626C67F81FF3199EA9C6893B04303F /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9BC044C4B04318779E0FC68BEA9D6321 /* UIKit.framework */; }; - D0AE2B051E26CC5B262406ECDE6C3C55 /* open.c in Sources */ = {isa = PBXBuildFile; fileRef = 02FD701120D18ED550004DEE17BF7862 /* open.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - D0C16096E0C65DA6924303196F07359E /* crypto_scalarmult_ed25519.h in Headers */ = {isa = PBXBuildFile; fileRef = 27F68FBE86940B8D1D1ECE44538B5488 /* crypto_scalarmult_ed25519.h */; settings = {ATTRIBUTES = (Private, ); }; }; - D0CCA2D3AA2015E9932732572722EA58 /* String+FoundationExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98165224512CD9D6D89230D9B741C2B8 /* String+FoundationExtension.swift */; }; - D1C01446A5CCB658D1B0B086F9496CC0 /* Generics.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD93C36231E53ADD1F9B6B8F064BEBCC /* Generics.swift */; }; - D418C1DAD9FE0C2E54B7A8F0BD409DCC /* Rabbit.swift in Sources */ = {isa = PBXBuildFile; fileRef = D569CE1B427C121B5BAE0449BEC9CEEE /* Rabbit.swift */; }; - D5453909DD216F4AFF596850A3DE4FCF /* poly1305_donna.c in Sources */ = {isa = PBXBuildFile; fileRef = F7101D07389E7E02BBB25BA89420D69C /* poly1305_donna.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - D632AFA9C9449E985DDEC4B7F578747E /* crypto_auth.h in Headers */ = {isa = PBXBuildFile; fileRef = A8EDFF6E0C69BBEA160BC090FF394E61 /* crypto_auth.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D0AE2B051E26CC5B262406ECDE6C3C55 /* open.c in Sources */ = {isa = PBXBuildFile; fileRef = 80C13C21DBA090DEF12D14076D0E0461 /* open.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + D0CCA2D3AA2015E9932732572722EA58 /* String+FoundationExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E6D4861BBD434CC3070B11EBEC4453E /* String+FoundationExtension.swift */; }; + D15A0BFACD8AE44C17632666CDFB01E3 /* PWHash.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5C345E23EEC1A018831DEEFD1566591 /* PWHash.swift */; }; + D1C01446A5CCB658D1B0B086F9496CC0 /* Generics.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74E8A63180EC28D4E45AC04BCBCC3E26 /* Generics.swift */; }; + D418C1DAD9FE0C2E54B7A8F0BD409DCC /* Rabbit.swift in Sources */ = {isa = PBXBuildFile; fileRef = D61847250C4C7CBE45D003EA69C61A5F /* Rabbit.swift */; }; + D5453909DD216F4AFF596850A3DE4FCF /* poly1305_donna.c in Sources */ = {isa = PBXBuildFile; fileRef = 0A124B44176189A4CA9F265D7F340F82 /* poly1305_donna.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + D5A1FFBFA4ED14819B8C7CEEEF7F13FB /* crypto_kdf_blake2b.h in Headers */ = {isa = PBXBuildFile; fileRef = 72782FF26452FDF3B5CEE5F077A8CF86 /* crypto_kdf_blake2b.h */; settings = {ATTRIBUTES = (Private, ); }; }; D68EBBD4056AE13BE83F9BAB86F3B1BA /* SipHash.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EABA1D68D3EEE3AF72041EB4B32F047B /* SipHash.framework */; }; - D700AC8BDE98B1F2BA6D75B70C55281D /* PCBC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1748E8209421822049EA7820F6265394 /* PCBC.swift */; }; - D73FD7F7CA8076E56E7CA2EA715C5720 /* crypto_kdf_blake2b.h in Headers */ = {isa = PBXBuildFile; fileRef = 83FFEE5270B626523220CF563F49D074 /* crypto_kdf_blake2b.h */; settings = {ATTRIBUTES = (Private, ); }; }; - D89F9414E7017267AA3E2867CC35F9DB /* crypto_stream_salsa208.h in Headers */ = {isa = PBXBuildFile; fileRef = A6D5AD484AE13D360E43C5EEAFB4019B /* crypto_stream_salsa208.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D8C0D8B8F2272C497D78E490B1F333F7 /* GCD.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F3E15B49E89EF6B53D20BAACD826290 /* GCD.swift */; }; - D8C95AC92204950B7EE6DFBDC716D797 /* crypto_core_salsa20.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B649EF5467DADB439E6E35CE5A524D2 /* crypto_core_salsa20.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D8CBA6E61225E0786BDA97FD9EEAEEE8 /* crypto_secretstream_xchacha20poly1305.h in Headers */ = {isa = PBXBuildFile; fileRef = E8D48EF82D79720DEA5ABCF6378E6086 /* crypto_secretstream_xchacha20poly1305.h */; settings = {ATTRIBUTES = (Private, ); }; }; - DA7BC5F55C30B04142B7029667FE88F5 /* crypto_pwhash_scryptsalsa208sha256.h in Headers */ = {isa = PBXBuildFile; fileRef = FFD1A6EDF1303A694BE66EAAFA6B1960 /* crypto_pwhash_scryptsalsa208sha256.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D6E33018283330C6D070BE785332125A /* utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 882BC0475026D21DB2FAF6BFE9AE671E /* utils.h */; settings = {ATTRIBUTES = (Private, ); }; }; + D700AC8BDE98B1F2BA6D75B70C55281D /* PCBC.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE9B24DD7D2EEFD4CE6ED69359F155CB /* PCBC.swift */; }; + D82DB35108CEA115D847FB4EE837F25A /* secp256k1_ios-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7800523276CC5E8FD108C4330701B0E8 /* secp256k1_ios-dummy.m */; }; + D89F9414E7017267AA3E2867CC35F9DB /* crypto_stream_salsa208.h in Headers */ = {isa = PBXBuildFile; fileRef = 68CBE3BD09BB16C6556338D87E6854F6 /* crypto_stream_salsa208.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D8C0D8B8F2272C497D78E490B1F333F7 /* GCD.swift in Sources */ = {isa = PBXBuildFile; fileRef = E17458EFEC6464A8314DEAFC599FC03D /* GCD.swift */; }; + D8C95AC92204950B7EE6DFBDC716D797 /* crypto_core_salsa20.h in Headers */ = {isa = PBXBuildFile; fileRef = 62E778C659906882B5592ACE72EF6258 /* crypto_core_salsa20.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DA7BC5F55C30B04142B7029667FE88F5 /* crypto_pwhash_scryptsalsa208sha256.h in Headers */ = {isa = PBXBuildFile; fileRef = 5790BDDFF0DCACA8FC7DC2D618F5C169 /* crypto_pwhash_scryptsalsa208sha256.h */; settings = {ATTRIBUTES = (Public, ); }; }; DADB149520BA9B4E1C6DE4998629D224 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5A9A555A4CB5C94FF77876AD171CBBB4 /* Foundation.framework */; }; - DB0FAEEB5CE1CD69EA18E4F8F852E759 /* curve25519_sandy2x.c in Sources */ = {isa = PBXBuildFile; fileRef = BDE327CC64B818B526A49742460E39B3 /* curve25519_sandy2x.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - DB54BEF7C1F0F5A2E29E6479DB4392D5 /* crypto_sign_ed25519.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C56397FBCE332E99C16633327D9CAF8 /* crypto_sign_ed25519.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DCBE7AF3E2813C2E370F0554CE7DD314 /* runtime.c in Sources */ = {isa = PBXBuildFile; fileRef = 8F3E30F898088D114E5D15FAB02868C1 /* runtime.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - DD66654526350CBBDD49E0FEA6C00060 /* crypto_hash.h in Headers */ = {isa = PBXBuildFile; fileRef = EF949CC142729F5D464E2A5A2888352E /* crypto_hash.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DE7CC4778BA0CFB736CAA934A41CA0A3 /* Division.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58BCD115D3035669AF954578C9C9E30B /* Division.swift */; }; - DE9DE941A209B63B267CA261B9B5D37E /* crypto_verify_16.h in Headers */ = {isa = PBXBuildFile; fileRef = 77647289EC7EC8242C586D386B03A75A /* crypto_verify_16.h */; settings = {ATTRIBUTES = (Private, ); }; }; - DEFFFFB119948B6B135DB49AAAA7BA0D /* PMKQuartzCore.h in Headers */ = {isa = PBXBuildFile; fileRef = DA096D577ABA6B477017D33EDE64D5E2 /* PMKQuartzCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DF5D609D3CD9D07B42493E87380DFA25 /* int128.h in Headers */ = {isa = PBXBuildFile; fileRef = 473AD07BCE5ECD29C1F8F28C47D607D3 /* int128.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DF94FB83553772FBE36D5A50058F8416 /* Sign.swift in Sources */ = {isa = PBXBuildFile; fileRef = C64B66232C9D37ED3072A80AE0EE2F49 /* Sign.swift */; }; - E0060D791C8E508DC81AAE291A4C84F7 /* crypto_sign_edwards25519sha512batch.h in Headers */ = {isa = PBXBuildFile; fileRef = A3D3FF2745D777DFA9D6BB4A9A4EC657 /* crypto_sign_edwards25519sha512batch.h */; settings = {ATTRIBUTES = (Private, ); }; }; - E013D3ABAE744071FE759A793C86E071 /* crypto_scalarmult.c in Sources */ = {isa = PBXBuildFile; fileRef = 4D237382CBD0A506434A3DFA4F1BE60A /* crypto_scalarmult.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - E1484E48DFBDD75EA09055905170E5C6 /* Alamofire+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 82A8F6FF0C5CE4278B3E8649E000A8B3 /* Alamofire+Promise.swift */; }; - E178D9DCC7569C338DA21578B1F10A33 /* u0.h in Headers */ = {isa = PBXBuildFile; fileRef = A2AD2F2FB3632F5FA1C26DEB19308D4C /* u0.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E1837E9695442865D581A2797EE02856 /* consts_aes128ctr.c in Sources */ = {isa = PBXBuildFile; fileRef = 71F1C4E9A13CCA5ED4DB3453E54699DE /* consts_aes128ctr.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - E188C45F4AEA0887023BCCD6F6764C87 /* crypto_sign.c in Sources */ = {isa = PBXBuildFile; fileRef = 92645F0E42EF6E42F3B91417331C15D7 /* crypto_sign.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - E1B09057AE126ACF74BF63C6900073D3 /* NSURLSession+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 19E36865FE9FFFB8BA4CC1B35F679C73 /* NSURLSession+AnyPromise.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E1C0AFB4B7630882B0536FCCCC5531CD /* blake2b-compress-ref.c in Sources */ = {isa = PBXBuildFile; fileRef = 6AB60DE35329FECA2439A0C22D46A928 /* blake2b-compress-ref.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - E1E86AB524D0C06D485B5C7C42C91032 /* crypto_shorthash.c in Sources */ = {isa = PBXBuildFile; fileRef = A4A331F88F30FE5A9D446A0AD35AB51C /* crypto_shorthash.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - E1FC3550E6269B5226CEB8A60D52FC9C /* BlockMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0CC2BBE7120DF2D9CB24C425A6D1735 /* BlockMode.swift */; }; - E2071A2A8238D96EC73F6F11854A7FB2 /* pbkdf2-sha256.c in Sources */ = {isa = PBXBuildFile; fileRef = 44DDC8CD70F7865BD90059B6E8573D54 /* pbkdf2-sha256.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - E2AFD0BBA9BB944F7A97B1A5E1002962 /* crypto_stream_aes128ctr.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D7213900822929C9A20CFBB508043A8 /* crypto_stream_aes128ctr.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E30025F5450B8E0830B5962A0610BA92 /* stream_chacha20.h in Headers */ = {isa = PBXBuildFile; fileRef = 891BB82441F69C42B233F1F8B215E9D4 /* stream_chacha20.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E31A136C29015728FEB2820E4D84E7F9 /* salsa20_xmm6int-avx2.c in Sources */ = {isa = PBXBuildFile; fileRef = C115B1679AC5A0F30BD50F722B0E3584 /* salsa20_xmm6int-avx2.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - E32ADA98E8E539D65D081528F6ACCD19 /* Promise+AnyPromise.swift in Sources */ = {isa = PBXBuildFile; fileRef = B22B318AB2A488D73D8A82806BB0E2E1 /* Promise+AnyPromise.swift */; }; - E377EF18498B6F1A6ED38952B138FA5B /* crypto_stream_salsa20.h in Headers */ = {isa = PBXBuildFile; fileRef = 6684B83B1C27095CE205E5E089ED7F7E /* crypto_stream_salsa20.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E453C8E1D4964306F4018C2AF2AE441D /* Strideable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DCB4E72425520BE9F2309B142A75BBB /* Strideable.swift */; }; - E461DAF66B50584D8124A2237D42DA59 /* crypto_core_salsa2012.h in Headers */ = {isa = PBXBuildFile; fileRef = 411A9CF5F1FA74B10BB27291A432442E /* crypto_core_salsa2012.h */; settings = {ATTRIBUTES = (Private, ); }; }; - E4BAF279D1F6554F4BAFAE705A116914 /* stream_salsa208.c in Sources */ = {isa = PBXBuildFile; fileRef = C655E23FBB8C21C66C0418C5189E1716 /* stream_salsa208.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - E5D5704EE881AC70CA28ED058E516F80 /* sign.c in Sources */ = {isa = PBXBuildFile; fileRef = 12CBC9364917F3E69494C9763FBD26C9 /* sign.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - E6980F35195B65B7783788E628E25C7B /* shorthash_siphash_ref.h in Headers */ = {isa = PBXBuildFile; fileRef = 51A8D6EE4030FB23F41DE19D64792230 /* shorthash_siphash_ref.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E7B0E98D43A96D653D762EC25BA5A1BF /* u8.h in Headers */ = {isa = PBXBuildFile; fileRef = 700749FE72D20A35BD810D6A1C009883 /* u8.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E80B6D5289729FEDE6A90C54FDE3C965 /* crypto_box_easy.c in Sources */ = {isa = PBXBuildFile; fileRef = 55F79C1A81BE69AC0D45F01396EB56AC /* crypto_box_easy.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - E83D47295E102F3737DBDA40C423DAD6 /* fe_frombytes_sandy2x.c in Sources */ = {isa = PBXBuildFile; fileRef = B590C80B2EA2D26D05372FE51E0E176B /* fe_frombytes_sandy2x.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - E8D6DBD20790F7D33897BB4093CDBC83 /* Checksum.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A7D889D7F90D814AC0BFE67AAA0AF36 /* Checksum.swift */; }; - EA074C826E57E75FE39E944FBF6C767A /* shorthash_siphash24_ref.c in Sources */ = {isa = PBXBuildFile; fileRef = F6EA938C31EF31D6024DEC6F450AA1AC /* shorthash_siphash24_ref.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - EAA2A543B70A7B6CD505369A47053631 /* Int+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32F10CC5985F01316863EFFC96AE0DD0 /* Int+Extension.swift */; }; - EB0241469E7CF1F695B26073D63E7E9D /* crypto_stream_xsalsa20.h in Headers */ = {isa = PBXBuildFile; fileRef = 2297056A0DACF7263DC20816B217431F /* crypto_stream_xsalsa20.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EB24ACFEE3A5EC4964A10688CC334011 /* crypto_pwhash_argon2id.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D5F42853C987BCBB0286E3C13B60652 /* crypto_pwhash_argon2id.h */; settings = {ATTRIBUTES = (Private, ); }; }; - EB24C61D0745EC256B743CCC62E38680 /* crypto_shorthash.h in Headers */ = {isa = PBXBuildFile; fileRef = FAF24B664575C88F790FC95622D5DC6A /* crypto_shorthash.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EB4F107EBC595E01B1EFE04F92AFF4A0 /* version.h in Headers */ = {isa = PBXBuildFile; fileRef = C0B652C026E3425895D737F69723E5A8 /* version.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EC025B8A5D58A1E30F601B23898DF5C3 /* join.m in Sources */ = {isa = PBXBuildFile; fileRef = 05F3D6E5542C87C9C66FC25369D62B3F /* join.m */; }; - ECE75FBFCDBB2646EE47C9CB528B1D9C /* BatchedCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = F94671D067B63D3031BB746521FFC605 /* BatchedCollection.swift */; }; - ED396217C1F01CD19B0FE87C3E1414B0 /* hash_sha512.c in Sources */ = {isa = PBXBuildFile; fileRef = FC1236DE9C128EEB97958020FC3634BA /* hash_sha512.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - EDF75CB56E38689C860609B918D121F8 /* crypto_auth_hmacsha512256.h in Headers */ = {isa = PBXBuildFile; fileRef = 8469AFD7F84F71CF0509C01E6E461BE6 /* crypto_auth_hmacsha512256.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EFA025B72A5751B648D0E89F4F027C9B /* core.c in Sources */ = {isa = PBXBuildFile; fileRef = B8FAF1583FB3495FEF0585A02D27BD74 /* core.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - EFD264FC408EBF3BA2528E70B08DDD94 /* Notifications.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBA4772E08B0088301B5AAFE4E7CEC7F /* Notifications.swift */; }; - F026423945C02D9679BFEE8E41CAEE1B /* randombytes_sysrandom.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D25909FF7E6B9DA66A32A2B390CA1E9 /* randombytes_sysrandom.h */; settings = {ATTRIBUTES = (Private, ); }; }; - F03712B3C30398F54C1A108901DFC8D2 /* crypto_scalarmult.h in Headers */ = {isa = PBXBuildFile; fileRef = 3366339B8E4AA3C65147A352191C75DA /* crypto_scalarmult.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F3A86739199B1A6197C5CAFB2AD7814C /* shorthash_siphashx24.c in Sources */ = {isa = PBXBuildFile; fileRef = CB7439327F3AA5CF77B7C4EE38D13961 /* shorthash_siphashx24.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - F4581CC7EDB39A800954D136A413FEA2 /* DispatchQueue+Await.swift in Sources */ = {isa = PBXBuildFile; fileRef = 172B50E013F87E6F8F7DF07401A1084A /* DispatchQueue+Await.swift */; }; - F52FBBE1450344F40E192F427525FA87 /* u0.h in Headers */ = {isa = PBXBuildFile; fileRef = CB484B5F552B1F5D6A18654410B4A772 /* u0.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F578FC76C3270DE1F4F505C9472FB0D2 /* blake2b-load-sse2.h in Headers */ = {isa = PBXBuildFile; fileRef = 12A161236B2B12A35F7C741991C6F279 /* blake2b-load-sse2.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F6AC42687826E7E69CA375FFDD2D9435 /* crypto_hash.h in Headers */ = {isa = PBXBuildFile; fileRef = FAA4DCBF3C1CE7AECA7DA585EC8C3877 /* crypto_hash.h */; settings = {ATTRIBUTES = (Private, ); }; }; - F6BECD98B97CBFEBE2C96F0E9E72A6C0 /* ResponseSerialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18D0D724107030A4BEC68DA36C56D528 /* ResponseSerialization.swift */; }; - F700D68A047273105355B18975D8A26B /* sodium_lib.h in Headers */ = {isa = PBXBuildFile; fileRef = CA31E4ABBA0E27582BEB6ADA8BABB91D /* sodium_lib.h */; settings = {ATTRIBUTES = (Private, ); }; }; - F7901730F0B0CBE0714E71F81F209ED6 /* crypto_generichash.h in Headers */ = {isa = PBXBuildFile; fileRef = 6418FB6338F0EA93B24A61DA176171B3 /* crypto_generichash.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F822C066E2D53ECDCB2F9DE74D9457F3 /* NSTask+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 9374EC3B4021430648823B5267E4DE6B /* NSTask+AnyPromise.m */; }; - F84241B1DA3BE1493BAEC4382D758763 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5A9A555A4CB5C94FF77876AD171CBBB4 /* Foundation.framework */; }; - F865F843A7A1AC0E66DD45E7504D6248 /* BlockModeWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = C6468F7876B8471C2334F4DD9E55F44F /* BlockModeWorker.swift */; }; - F8B3D3092ED0417E8CDF32033F6122F5 /* Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15D4691A9B0FE6D7EAB687FEAA46F2DE /* Alamofire.swift */; }; - F9013EF6C296B5F74E1E9D4EB3AB9153 /* Auth.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B14D46C50F636BE8E466D520963604E /* Auth.swift */; }; - F93564D8808D12B8B3718C19F22B2BB9 /* generichash_blake2.c in Sources */ = {isa = PBXBuildFile; fileRef = C82E6B66D574352290251A84B08E3A40 /* generichash_blake2.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - F97FF05A4C1F8DAC1259149CE5A5A160 /* salsa20_xmm6int-sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = F46733AE4E4B1F477E3B07C4392B5F05 /* salsa20_xmm6int-sse2.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - F9B995458A498D5FBD8FF02A047ADDA5 /* crypto_sign_ed25519.h in Headers */ = {isa = PBXBuildFile; fileRef = 5754A07E19B7D183E04F04ABFEEEBB7B /* crypto_sign_ed25519.h */; settings = {ATTRIBUTES = (Private, ); }; }; - F9C5E9613B783F15B8280AA2570E91FF /* core_hchacha20.c in Sources */ = {isa = PBXBuildFile; fileRef = 9D6AE8FA94C9BA2693B9F1F9CAE72A2B /* core_hchacha20.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - FB7F6EFD06295E38CE1BE33E77AB6F8D /* argon2-fill-block-ref.c in Sources */ = {isa = PBXBuildFile; fileRef = 66BC94970CED446B2BDEF5AE336671E4 /* argon2-fill-block-ref.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - FBBDBBCD7ECE52FAF41F8FA18B0C9DE2 /* NSNotificationCenter+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88CDA6F7B12E6767FA45070FF2799CA1 /* NSNotificationCenter+Promise.swift */; }; - FC69BD1F489A662458CBC74BBAD9F295 /* scrypt_platform.c in Sources */ = {isa = PBXBuildFile; fileRef = 66E6A8118A5FF4ECB263CE796EB2B918 /* scrypt_platform.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - FCB7059FD9004D3B4A746ECB66A4584B /* State.swift in Sources */ = {isa = PBXBuildFile; fileRef = D476AF40BE0C051EBEB495E12A8B1E84 /* State.swift */; }; - FCF9C7FE7F2C45A5FD6BFF04D0FF2226 /* crypto_secretbox_xchacha20poly1305.h in Headers */ = {isa = PBXBuildFile; fileRef = B2A0A8C7EB9FD69A844409B215700892 /* crypto_secretbox_xchacha20poly1305.h */; settings = {ATTRIBUTES = (Private, ); }; }; - FD827B859EBD7F44BA8FE9E6C32391A2 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5A9A555A4CB5C94FF77876AD171CBBB4 /* Foundation.framework */; }; - FD9860B243AF7A226161A607384DF862 /* UIViewController+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65C97BC6557C4BA17D605808D72A218B /* UIViewController+Promise.swift */; }; - FF31146782097BA2BE98841D2C91F668 /* crypto_pwhash_scryptsalsa208sha256.h in Headers */ = {isa = PBXBuildFile; fileRef = A42491FEED1F6B26F1E9D9E2155E8D17 /* crypto_pwhash_scryptsalsa208sha256.h */; settings = {ATTRIBUTES = (Private, ); }; }; - FF3688F374CC98BF52093BD77872F96B /* box_curve25519xchacha20poly1305.c in Sources */ = {isa = PBXBuildFile; fileRef = FB93B58926CB4967A01BD37D6AF20489 /* box_curve25519xchacha20poly1305.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - FFB174C546B4030441F46BB3E8D76318 /* BigInt-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = DBE177FDD337A34000509522613D88F6 /* BigInt-dummy.m */; }; + DB0FAEEB5CE1CD69EA18E4F8F852E759 /* curve25519_sandy2x.c in Sources */ = {isa = PBXBuildFile; fileRef = 7A391940DE501B6BE125DC83AB2795A8 /* curve25519_sandy2x.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + DB54BEF7C1F0F5A2E29E6479DB4392D5 /* crypto_sign_ed25519.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B1385C27F951BEEAC66BA0AC7669318 /* crypto_sign_ed25519.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DCBE7AF3E2813C2E370F0554CE7DD314 /* runtime.c in Sources */ = {isa = PBXBuildFile; fileRef = B19CBC40C69F5207FF87890A3B60DF68 /* runtime.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + DD61FA59756ECAFAD6D9AB43EC9D0664 /* num.h in Headers */ = {isa = PBXBuildFile; fileRef = ACB90F919DDF8611BF7E7B69BCBD809C /* num.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DD66654526350CBBDD49E0FEA6C00060 /* crypto_hash.h in Headers */ = {isa = PBXBuildFile; fileRef = 188C52A6D4B24EF8F52610B37669B45A /* crypto_hash.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DD87F09679F04A842A863958C5D75259 /* crypto_shorthash.h in Headers */ = {isa = PBXBuildFile; fileRef = CB8B65459A525583CAEA598043913B8C /* crypto_shorthash.h */; settings = {ATTRIBUTES = (Private, ); }; }; + DDB07E222D91A953EEACE2B056694868 /* crypto_secretbox_xsalsa20poly1305.h in Headers */ = {isa = PBXBuildFile; fileRef = 941B630FBC0BBB335949C76C4BB98E74 /* crypto_secretbox_xsalsa20poly1305.h */; settings = {ATTRIBUTES = (Private, ); }; }; + DE095407A8232D8166E243CBD3C2F250 /* crypto_scalarmult_ed25519.h in Headers */ = {isa = PBXBuildFile; fileRef = C21BBFBD9973A5D55D1ED11FA5162B13 /* crypto_scalarmult_ed25519.h */; settings = {ATTRIBUTES = (Private, ); }; }; + DE7CC4778BA0CFB736CAA934A41CA0A3 /* Division.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3315A7F13EB31197449F67906970378D /* Division.swift */; }; + DEFFFFB119948B6B135DB49AAAA7BA0D /* PMKQuartzCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C03D52717774CB4CD3A7300AF9525AE /* PMKQuartzCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DF5D609D3CD9D07B42493E87380DFA25 /* int128.h in Headers */ = {isa = PBXBuildFile; fileRef = FF40CAE7B5FA9C6D5C50E48A28A4D563 /* int128.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E00312935D7F414931962E7165B0239F /* RandomBytes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08D2CF26947DAAB4512ECCF242CC504D /* RandomBytes.swift */; }; + E013D3ABAE744071FE759A793C86E071 /* crypto_scalarmult.c in Sources */ = {isa = PBXBuildFile; fileRef = 9D1E2D13D418001F731BBAA01132AD38 /* crypto_scalarmult.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + E05065ADC862E25A1D1F8ACEB968B1BA /* Sodium.h in Headers */ = {isa = PBXBuildFile; fileRef = A2F63423642935965844FE77EB88D975 /* Sodium.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E1484E48DFBDD75EA09055905170E5C6 /* Alamofire+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8CCE7DDD2EA49AC4866EDB03E4C7EAC1 /* Alamofire+Promise.swift */; }; + E178D9DCC7569C338DA21578B1F10A33 /* u0.h in Headers */ = {isa = PBXBuildFile; fileRef = A144987DDDED702EB5E258B7DBA66061 /* u0.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E1837E9695442865D581A2797EE02856 /* consts_aes128ctr.c in Sources */ = {isa = PBXBuildFile; fileRef = 306C5F642893BA3DE56C750048B13C2A /* consts_aes128ctr.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + E188C45F4AEA0887023BCCD6F6764C87 /* crypto_sign.c in Sources */ = {isa = PBXBuildFile; fileRef = 288EC8ACFC5DEF4ADA602DCBCE0B50DF /* crypto_sign.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + E1B09057AE126ACF74BF63C6900073D3 /* NSURLSession+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 91F63BEDD052DF3819CDC6AE56DE7BE9 /* NSURLSession+AnyPromise.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E1C0AFB4B7630882B0536FCCCC5531CD /* blake2b-compress-ref.c in Sources */ = {isa = PBXBuildFile; fileRef = C0ED4796B375704E4A0243BCD4B6187A /* blake2b-compress-ref.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + E1E86AB524D0C06D485B5C7C42C91032 /* crypto_shorthash.c in Sources */ = {isa = PBXBuildFile; fileRef = 1C69652417F7FA2E2D49EA91E8B526FB /* crypto_shorthash.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + E1FC3550E6269B5226CEB8A60D52FC9C /* BlockMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EE4A8C9D93C48A924AEE4C22117A322 /* BlockMode.swift */; }; + E2071A2A8238D96EC73F6F11854A7FB2 /* pbkdf2-sha256.c in Sources */ = {isa = PBXBuildFile; fileRef = EAF664422D10623D6C5AC8753997E10C /* pbkdf2-sha256.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + E2AFD0BBA9BB944F7A97B1A5E1002962 /* crypto_stream_aes128ctr.h in Headers */ = {isa = PBXBuildFile; fileRef = 811A188257A65A54B0195ADEDE05FE4A /* crypto_stream_aes128ctr.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E30025F5450B8E0830B5962A0610BA92 /* stream_chacha20.h in Headers */ = {isa = PBXBuildFile; fileRef = 832E9E85AFB0B83032EE656A1B2A6461 /* stream_chacha20.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E31A136C29015728FEB2820E4D84E7F9 /* salsa20_xmm6int-avx2.c in Sources */ = {isa = PBXBuildFile; fileRef = D83DBCFCB5B5634C2C5910AD5FF80960 /* salsa20_xmm6int-avx2.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + E32ADA98E8E539D65D081528F6ACCD19 /* Promise+AnyPromise.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9D5D0310DEB039C22C55846250FAC55 /* Promise+AnyPromise.swift */; }; + E377EF18498B6F1A6ED38952B138FA5B /* crypto_stream_salsa20.h in Headers */ = {isa = PBXBuildFile; fileRef = 59C3BBEE7C44DBF3FF9A530A1F10C849 /* crypto_stream_salsa20.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E3BE421D37B1DB754FC2623792E0D08F /* crypto_kx.h in Headers */ = {isa = PBXBuildFile; fileRef = 8042D52348ADEAFA244CB22ED0365169 /* crypto_kx.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E453C8E1D4964306F4018C2AF2AE441D /* Strideable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E743383FC2059F02E6E5A60F697D6AF /* Strideable.swift */; }; + E492962E1C0AE7EF321D9C14CBB8A43F /* crypto_stream_salsa2012.h in Headers */ = {isa = PBXBuildFile; fileRef = 1699057AB58BCC4482C13C26AD4868AA /* crypto_stream_salsa2012.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E4BAF279D1F6554F4BAFAE705A116914 /* stream_salsa208.c in Sources */ = {isa = PBXBuildFile; fileRef = A94FE59FF02CA1BF3C4C36AD073FB485 /* stream_salsa208.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + E575110C11689875327101A1D245FB65 /* version.h in Headers */ = {isa = PBXBuildFile; fileRef = EC7449EB9268B15EDD3B97A0A26F71B6 /* version.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E5D5704EE881AC70CA28ED058E516F80 /* sign.c in Sources */ = {isa = PBXBuildFile; fileRef = 7137563945A9007C26CC8B7FBBA2CBFA /* sign.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + E6047C2035D2326DC51E9A18C5C5D3A2 /* crypto_secretbox.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F86BA9EE60961E0634E43644A0BEAE2 /* crypto_secretbox.h */; settings = {ATTRIBUTES = (Private, ); }; }; + E6980F35195B65B7783788E628E25C7B /* shorthash_siphash_ref.h in Headers */ = {isa = PBXBuildFile; fileRef = 38AAA42CA617110817513AFE572BC326 /* shorthash_siphash_ref.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E7B07C6CE372BEA83EE9DC114A0C63E3 /* Pods-web3swiftTests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 69EBB0FD91D358560905C6D809C2F904 /* Pods-web3swiftTests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E7B0E98D43A96D653D762EC25BA5A1BF /* u8.h in Headers */ = {isa = PBXBuildFile; fileRef = C0979E27F93B161CA113FDDB1FE2D83D /* u8.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E7EB5B1FAABE95FDCFAD6D56EF80973B /* main_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = B240610E594B955FC112AFFD1CF7891E /* main_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E80B6D5289729FEDE6A90C54FDE3C965 /* crypto_box_easy.c in Sources */ = {isa = PBXBuildFile; fileRef = A74B3387C56B8EF5D392C652FDA01928 /* crypto_box_easy.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + E83D47295E102F3737DBDA40C423DAD6 /* fe_frombytes_sandy2x.c in Sources */ = {isa = PBXBuildFile; fileRef = 77F42C7C67813AC2AB4076A173D1D0D7 /* fe_frombytes_sandy2x.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + E8D6DBD20790F7D33897BB4093CDBC83 /* Checksum.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04A7C3FC53F5588E186BB76CDA2CB1B6 /* Checksum.swift */; }; + EA074C826E57E75FE39E944FBF6C767A /* shorthash_siphash24_ref.c in Sources */ = {isa = PBXBuildFile; fileRef = B4A6AC6D195915584BFEFCE646DA9430 /* shorthash_siphash24_ref.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + EAA2A543B70A7B6CD505369A47053631 /* Int+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = F70B2509DBD7BA84D68373BC2264219A /* Int+Extension.swift */; }; + EB0241469E7CF1F695B26073D63E7E9D /* crypto_stream_xsalsa20.h in Headers */ = {isa = PBXBuildFile; fileRef = 812B5D47D26F96C9BAD3709A975FF469 /* crypto_stream_xsalsa20.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EB24C61D0745EC256B743CCC62E38680 /* crypto_shorthash.h in Headers */ = {isa = PBXBuildFile; fileRef = BF80B2F659CE776A65A26085FBA33DB3 /* crypto_shorthash.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EB4F107EBC595E01B1EFE04F92AFF4A0 /* version.h in Headers */ = {isa = PBXBuildFile; fileRef = 643A9A72CDF2C67559B27519176483F3 /* version.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EC025B8A5D58A1E30F601B23898DF5C3 /* join.m in Sources */ = {isa = PBXBuildFile; fileRef = 5792C0F8AAB58BC44150BFF087A53277 /* join.m */; }; + ECE75FBFCDBB2646EE47C9CB528B1D9C /* BatchedCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2870AEA355A04299E1B47AF73F98D49D /* BatchedCollection.swift */; }; + ED396217C1F01CD19B0FE87C3E1414B0 /* hash_sha512.c in Sources */ = {isa = PBXBuildFile; fileRef = 80DD8BD467A648B2B4F01DB4A1785BA3 /* hash_sha512.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + EDF75CB56E38689C860609B918D121F8 /* crypto_auth_hmacsha512256.h in Headers */ = {isa = PBXBuildFile; fileRef = 3386C94624F564AC1A157B90EF4DAEEB /* crypto_auth_hmacsha512256.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EFA025B72A5751B648D0E89F4F027C9B /* core.c in Sources */ = {isa = PBXBuildFile; fileRef = 4BB2BADEA4D608FFA33189742852DE10 /* core.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + EFD264FC408EBF3BA2528E70B08DDD94 /* Notifications.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA8E03E0252AC9BB1F087D520557BE50 /* Notifications.swift */; }; + F03712B3C30398F54C1A108901DFC8D2 /* crypto_scalarmult.h in Headers */ = {isa = PBXBuildFile; fileRef = E472DA93F83DB1E4987B9327279E5802 /* crypto_scalarmult.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3A86739199B1A6197C5CAFB2AD7814C /* shorthash_siphashx24.c in Sources */ = {isa = PBXBuildFile; fileRef = D4F6B5E28C06CAD97093E40CC12B2A85 /* shorthash_siphashx24.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + F3B1D6346B2A868282F697C6B05E2CE0 /* field_5x52_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 088D36A2B2B54DD4F17821CD55B6B301 /* field_5x52_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F4581CC7EDB39A800954D136A413FEA2 /* DispatchQueue+Await.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8ECABF32DD18B149286300E2BD35C8C3 /* DispatchQueue+Await.swift */; }; + F52FBBE1450344F40E192F427525FA87 /* u0.h in Headers */ = {isa = PBXBuildFile; fileRef = EE1D15C808270874570DD294A48887C6 /* u0.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F55399BFB4D3BBC2591180469235650A /* crypto_generichash.h in Headers */ = {isa = PBXBuildFile; fileRef = 38284CB145778671690E69B89C01C939 /* crypto_generichash.h */; settings = {ATTRIBUTES = (Private, ); }; }; + F578FC76C3270DE1F4F505C9472FB0D2 /* blake2b-load-sse2.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AB6172174FEE95DC60427FB8D889B73 /* blake2b-load-sse2.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F6BECD98B97CBFEBE2C96F0E9E72A6C0 /* ResponseSerialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5DD4D337A5B312DB9ADEE21B2804CB6 /* ResponseSerialization.swift */; }; + F7901730F0B0CBE0714E71F81F209ED6 /* crypto_generichash.h in Headers */ = {isa = PBXBuildFile; fileRef = 69181C49D9BB8CBEF39C29E2E6F0E515 /* crypto_generichash.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F822C066E2D53ECDCB2F9DE74D9457F3 /* NSTask+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = F975D20521AAFBFC41C6CD288AEE7570 /* NSTask+AnyPromise.m */; }; + F865F843A7A1AC0E66DD45E7504D6248 /* BlockModeWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 535DE36EBDF24B535FE9E6BA837338CE /* BlockModeWorker.swift */; }; + F88E6C974DA09808CE6FC1482152B533 /* Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = C173468047C56904E86BA78107B5BA34 /* Utils.swift */; }; + F8B3D3092ED0417E8CDF32033F6122F5 /* Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C40002B6AB23ADFFDB564AAAB5B2E00 /* Alamofire.swift */; }; + F93564D8808D12B8B3718C19F22B2BB9 /* generichash_blake2.c in Sources */ = {isa = PBXBuildFile; fileRef = 82F89689FA95E227AA1FD8078BBD5CAF /* generichash_blake2.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + F97FF05A4C1F8DAC1259149CE5A5A160 /* salsa20_xmm6int-sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = 9CADA8E8EB907CF49504D41969B66E1A /* salsa20_xmm6int-sse2.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + F9C5E9613B783F15B8280AA2570E91FF /* core_hchacha20.c in Sources */ = {isa = PBXBuildFile; fileRef = 750DEB4F0053A5D0D061D7D8BD480CF9 /* core_hchacha20.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + FB7F6EFD06295E38CE1BE33E77AB6F8D /* argon2-fill-block-ref.c in Sources */ = {isa = PBXBuildFile; fileRef = BACB3475EDF505CCBD8C6DA9D9B79E1A /* argon2-fill-block-ref.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + FBBDBBCD7ECE52FAF41F8FA18B0C9DE2 /* NSNotificationCenter+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = A248A3E7C6F766F1E38153BAE14F5F75 /* NSNotificationCenter+Promise.swift */; }; + FC291FD8A423751548CD65550044B89C /* crypto_stream_xchacha20.h in Headers */ = {isa = PBXBuildFile; fileRef = 060398BC43B44A6EB87209055126CF7D /* crypto_stream_xchacha20.h */; settings = {ATTRIBUTES = (Private, ); }; }; + FC69BD1F489A662458CBC74BBAD9F295 /* scrypt_platform.c in Sources */ = {isa = PBXBuildFile; fileRef = CF2A6C1EEC5F3989D63F1ECEA6110555 /* scrypt_platform.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + FCB7059FD9004D3B4A746ECB66A4584B /* State.swift in Sources */ = {isa = PBXBuildFile; fileRef = A0D32A6507C07821D4D7053666EFF830 /* State.swift */; }; + FD9860B243AF7A226161A607384DF862 /* UIViewController+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 044CEBCBDDB06635F3AD760380F4063C /* UIViewController+Promise.swift */; }; + FF3688F374CC98BF52093BD77872F96B /* box_curve25519xchacha20poly1305.c in Sources */ = {isa = PBXBuildFile; fileRef = F16F778FF7C25D4E1A3F9D3F127D5049 /* box_curve25519xchacha20poly1305.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + FFB174C546B4030441F46BB3E8D76318 /* BigInt-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9E7AE4332CF4946574A53ED2E70272F7 /* BigInt-dummy.m */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 03188A3E24CF39B600E312C847BA3BC0 /* PBXContainerItemProxy */ = { + 44B2165AF1815541C7DD05A15D940DC3 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 106365ABEDFCAAB56965C5A18E920173; - remoteInfo = PromiseKit; + remoteGlobalIDString = 1DEA114408EC5E8EAF98CD02AD1725EE; + remoteInfo = SipHash; }; - 07D0581D0CEFA00ABBC0B5C05E254E75 /* PBXContainerItemProxy */ = { + 45D0A579623E8B333D7E2A165DB747A6 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 98535812159A2B4B5E7861031188EDFB; - remoteInfo = CryptoSwift; + remoteGlobalIDString = 106365ABEDFCAAB56965C5A18E920173; + remoteInfo = PromiseKit; }; - 1519BB4FEF629DFBC3EE07BAAEA723CD /* PBXContainerItemProxy */ = { + 4CBBB9100A4FD42B73A82F871BCAF971 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 98535812159A2B4B5E7861031188EDFB; - remoteInfo = CryptoSwift; + remoteGlobalIDString = 2A952D0DF7F884828F0999B3CB12743F; + remoteInfo = secp256k1_ios; }; - 199F60B31E697412E2F4DE6970C2B22D /* PBXContainerItemProxy */ = { + 5330A7292DE72613E55133FF3A39CACF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; remoteGlobalIDString = AD40A3E7DB7C86DB949C3E0EFA9A98CA; remoteInfo = libsodium; }; - 29D57E4B02B660C3B30A631D39B90D12 /* PBXContainerItemProxy */ = { + 5648AB918B928B07B8E0A250F619ADA6 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = C484F69E381AF09AA35C51C1E3A23DF2; - remoteInfo = BigInt; + remoteGlobalIDString = 106365ABEDFCAAB56965C5A18E920173; + remoteInfo = PromiseKit; }; - 2F584C3DCFBDE5707A88B0913B7283E1 /* PBXContainerItemProxy */ = { + 71FF912E217C64F37A28CDFBD883C510 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 474BFCF440979B597D79E59223200305; + remoteGlobalIDString = C252E54E4691304A8FD2DCAF9098A033; remoteInfo = Sodium; }; - 3045B31FF52BAFCE0B017F42739BBA76 /* PBXContainerItemProxy */ = { + 77C38E8354AD5D929E4B17202E37B12C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; remoteGlobalIDString = 88E9EC28B8B46C3631E6B242B50F4442; remoteInfo = Alamofire; }; - 3CE0A4641223FF88DED230D002A4492F /* PBXContainerItemProxy */ = { + 83A308E094C4E7B0662B77A6881AB6F2 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 106365ABEDFCAAB56965C5A18E920173; - remoteInfo = PromiseKit; + remoteGlobalIDString = 1DEA114408EC5E8EAF98CD02AD1725EE; + remoteInfo = SipHash; }; - 4427499F550005DA23A5081BE0773C64 /* PBXContainerItemProxy */ = { + 87FCB1EFA9EFA64F690CBD4492137F3D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = FFFF29F8D7CD8CFA257465F891722C94; - remoteInfo = AwaitKit; + remoteGlobalIDString = C484F69E381AF09AA35C51C1E3A23DF2; + remoteInfo = BigInt; }; - 59A5645CC2E00E0685AFDEB1C0E79AA0 /* PBXContainerItemProxy */ = { + 8C3C7207421755887D40C132E01415F1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = FFFF29F8D7CD8CFA257465F891722C94; - remoteInfo = AwaitKit; + remoteGlobalIDString = C484F69E381AF09AA35C51C1E3A23DF2; + remoteInfo = BigInt; + }; + 9BA98AB8119DF7368E9436B57F865B8B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 98535812159A2B4B5E7861031188EDFB; + remoteInfo = CryptoSwift; }; - 6955382BECD394CD32C66B2D2804FABD /* PBXContainerItemProxy */ = { + A269FE203FB91DDFAD02709ECA2423CD /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 106365ABEDFCAAB56965C5A18E920173; + remoteInfo = PromiseKit; + }; + A29098467114081A93ABFE657AE0310C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; remoteGlobalIDString = AD40A3E7DB7C86DB949C3E0EFA9A98CA; remoteInfo = libsodium; }; - 740D79418EC19AA0B2304FC87490EA59 /* PBXContainerItemProxy */ = { + A5994B1B385C6A26831B5BF74CCB5477 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 1DEA114408EC5E8EAF98CD02AD1725EE; - remoteInfo = SipHash; + remoteGlobalIDString = 106365ABEDFCAAB56965C5A18E920173; + remoteInfo = PromiseKit; + }; + AB27DDA2F01B787EC0E9464886920663 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 2A952D0DF7F884828F0999B3CB12743F; + remoteInfo = secp256k1_ios; }; - 7B8466E15F3F8098AEE581C7D4D39B47 /* PBXContainerItemProxy */ = { + B0F0E83B6A28B7B801146D008CD954A7 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; remoteGlobalIDString = 1DEA114408EC5E8EAF98CD02AD1725EE; remoteInfo = SipHash; }; - 7F8DB09EEB449DE5F26742B0C94C6E98 /* PBXContainerItemProxy */ = { + B6FFCA5D33311BB15845048EEE98AC95 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 474BFCF440979B597D79E59223200305; - remoteInfo = Sodium; + remoteGlobalIDString = FFFF29F8D7CD8CFA257465F891722C94; + remoteInfo = AwaitKit; }; - 865D47F16684C5221896911101C160C9 /* PBXContainerItemProxy */ = { + BCA719BEAA39C0D20139DA3E5A2FCA29 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 474BFCF440979B597D79E59223200305; - remoteInfo = Sodium; + remoteGlobalIDString = 88E9EC28B8B46C3631E6B242B50F4442; + remoteInfo = Alamofire; }; - 90626D1B0C5555901AE459E59069BC08 /* PBXContainerItemProxy */ = { + C2379062FBFA04857E23FE66A0721572 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = AD40A3E7DB7C86DB949C3E0EFA9A98CA; - remoteInfo = libsodium; + remoteGlobalIDString = FFFF29F8D7CD8CFA257465F891722C94; + remoteInfo = AwaitKit; }; - A269FE203FB91DDFAD02709ECA2423CD /* PBXContainerItemProxy */ = { + C33F7D31376335B3276B01FB57815130 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 106365ABEDFCAAB56965C5A18E920173; - remoteInfo = PromiseKit; + remoteGlobalIDString = AD40A3E7DB7C86DB949C3E0EFA9A98CA; + remoteInfo = libsodium; }; - A984E4FB62A6AA8B3AF43B763814B7A5 /* PBXContainerItemProxy */ = { + C722C7E7B30E898BB528CBDEBA14B100 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = C484F69E381AF09AA35C51C1E3A23DF2; - remoteInfo = BigInt; + remoteGlobalIDString = FFFF29F8D7CD8CFA257465F891722C94; + remoteInfo = AwaitKit; }; - AC60F4713933C8E0E4013BBD681D3EC2 /* PBXContainerItemProxy */ = { + C86203A36FCB62E3E24E9848E133CF14 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = C484F69E381AF09AA35C51C1E3A23DF2; - remoteInfo = BigInt; + remoteGlobalIDString = 98535812159A2B4B5E7861031188EDFB; + remoteInfo = CryptoSwift; }; - B214030961A95D320F7106A0A5E42797 /* PBXContainerItemProxy */ = { + CEE2502C63FC3D74EDD0CF0FA460E5C2 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 88E9EC28B8B46C3631E6B242B50F4442; - remoteInfo = Alamofire; + remoteGlobalIDString = C252E54E4691304A8FD2DCAF9098A033; + remoteInfo = Sodium; }; - B32AC2F9875755DAA0D1199FBB547A0C /* PBXContainerItemProxy */ = { + D00B3A6400F20A12BA1AA0E7339BE49A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 1DEA114408EC5E8EAF98CD02AD1725EE; - remoteInfo = SipHash; + remoteGlobalIDString = 98535812159A2B4B5E7861031188EDFB; + remoteInfo = CryptoSwift; }; - CF58737815C76A81E9FA3FA2A0CD1552 /* PBXContainerItemProxy */ = { + D00ED03F0762BFE874C920EC343BAE86 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = FFFF29F8D7CD8CFA257465F891722C94; - remoteInfo = AwaitKit; + remoteGlobalIDString = C252E54E4691304A8FD2DCAF9098A033; + remoteInfo = Sodium; }; - DCE7289FCC264A27D3C75ED15A7DDB6B /* PBXContainerItemProxy */ = { + E0AEFB660BDB3B2DFF0583EA67C2208E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; @@ -682,581 +754,644 @@ remoteGlobalIDString = 88E9EC28B8B46C3631E6B242B50F4442; remoteInfo = Alamofire; }; - ED55767683448418A9BB8CB4D0057844 /* PBXContainerItemProxy */ = { + E9A632D2A6A92FFA9D831B246F600594 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 98535812159A2B4B5E7861031188EDFB; - remoteInfo = CryptoSwift; + remoteGlobalIDString = C484F69E381AF09AA35C51C1E3A23DF2; + remoteInfo = BigInt; }; - EEA1F42E817A95B87DC08EE5E859D32A /* PBXContainerItemProxy */ = { + F5DBFFAB9C1A6D9CFBDD1D28CF125C59 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 106365ABEDFCAAB56965C5A18E920173; - remoteInfo = PromiseKit; + remoteGlobalIDString = 2A952D0DF7F884828F0999B3CB12743F; + remoteInfo = secp256k1_ios; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 012E3D677F3A8015D34F5CF43E031129 /* argon2-encoding.c */ = {isa = PBXFileReference; includeInIndex = 1; name = "argon2-encoding.c"; path = "src/libsodium/crypto_pwhash/argon2/argon2-encoding.c"; sourceTree = ""; }; - 021D9B7C19129D73B8088AD0CB0833EE /* randombytes_sysrandom.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = randombytes_sysrandom.h; path = src/libsodium/include/sodium/randombytes_sysrandom.h; sourceTree = ""; }; - 0249AF8B4327ECC161894ACBE107CC8D /* crypto_stream.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_stream.h; path = src/libsodium/include/sodium/crypto_stream.h; sourceTree = ""; }; - 0253AA2DE30B4DC79892B0785F9E2515 /* randombytes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = randombytes.h; path = src/libsodium/include/sodium/randombytes.h; sourceTree = ""; }; - 02FD701120D18ED550004DEE17BF7862 /* open.c */ = {isa = PBXFileReference; includeInIndex = 1; name = open.c; path = src/libsodium/crypto_sign/ed25519/ref10/open.c; sourceTree = ""; }; - 03D40C34CE63BBF60440B06C22257316 /* mutex.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = mutex.h; path = src/libsodium/include/sodium/private/mutex.h; sourceTree = ""; }; - 0418853173CC001617AE605CE8BA0145 /* Poly1305.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Poly1305.swift; path = Sources/CryptoSwift/Poly1305.swift; sourceTree = ""; }; - 04A37EE3399FFC51092457C51A04D374 /* 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 = ""; }; - 04A664D2872E47C0C727D661CE83D447 /* Square Root.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Square Root.swift"; path = "sources/Square Root.swift"; sourceTree = ""; }; + 00452E9BA40A380523E5E6228F6E642E /* hash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = hash.h; path = secp256k1_ios/src/hash.h; sourceTree = ""; }; + 0061CDB4EDC26178A3D56DF93FC2F48A /* 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 = ""; }; + 00964D8968EC73CECB3D05AFB39B25BD /* crypto_box_seal.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_box_seal.c; path = src/libsodium/crypto_box/crypto_box_seal.c; sourceTree = ""; }; + 00C1912A756C1AF4395038B9F09664A2 /* ServerTrustPolicy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ServerTrustPolicy.swift; path = Source/ServerTrustPolicy.swift; sourceTree = ""; }; + 01DFED00F38E9269E99CA4FB840D2D9E /* secp256k1_ecdh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = secp256k1_ecdh.h; path = secp256k1_ios/include/secp256k1_ecdh.h; sourceTree = ""; }; + 042A4D28426082E8C796AE67FF694537 /* Response.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Response.swift; path = Source/Response.swift; sourceTree = ""; }; + 044CEBCBDDB06635F3AD760380F4063C /* UIViewController+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIViewController+Promise.swift"; path = "Extensions/UIKit/Sources/UIViewController+Promise.swift"; sourceTree = ""; }; + 04A7C3FC53F5588E186BB76CDA2CB1B6 /* Checksum.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Checksum.swift; path = Sources/CryptoSwift/Checksum.swift; sourceTree = ""; }; + 04FCD0962B5B6B3132FCF9727BA5AC1C /* UInt8+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt8+Extension.swift"; path = "Sources/CryptoSwift/UInt8+Extension.swift"; sourceTree = ""; }; 0541872DAA88B68D11B4EE65DD39BE39 /* Pods-web3Swift-Demo-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-web3Swift-Demo-resources.sh"; sourceTree = ""; }; + 057CF786D0ACE9BDF0AC715364795AA8 /* crypto_onetimeauth.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_onetimeauth.c; path = src/libsodium/crypto_onetimeauth/crypto_onetimeauth.c; sourceTree = ""; }; + 057F53420FDA630614C89C973462B974 /* SHA2.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SHA2.swift; path = Sources/CryptoSwift/SHA2.swift; sourceTree = ""; }; 05C53632A2075BA065C99B691F142F56 /* Pods-web3swift.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-web3swift.debug.xcconfig"; sourceTree = ""; }; - 05F3D6E5542C87C9C66FC25369D62B3F /* join.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = join.m; path = Sources/join.m; sourceTree = ""; }; - 06473A7FEB53EFEC8578956155DAA880 /* ServerTrustPolicy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ServerTrustPolicy.swift; path = Source/ServerTrustPolicy.swift; sourceTree = ""; }; - 070E63DDBD4B5AD9AA742B405B48B7CF /* curve25519_ref10.c */ = {isa = PBXFileReference; includeInIndex = 1; name = curve25519_ref10.c; path = src/libsodium/crypto_core/curve25519/ref10/curve25519_ref10.c; sourceTree = ""; }; - 083AD0902035CAA57413CC1FBC6B5B8A /* AnyPromise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnyPromise.swift; path = Sources/AnyPromise.swift; sourceTree = ""; }; - 09552E8BB30CEE856A46B2DFA6C0592A /* fe51_invert.c */ = {isa = PBXFileReference; includeInIndex = 1; name = fe51_invert.c; path = src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_invert.c; sourceTree = ""; }; - 0995131DBCD6FD1CED8EB2A08E9BD9D0 /* NoPadding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NoPadding.swift; path = Sources/CryptoSwift/NoPadding.swift; sourceTree = ""; }; - 09D297A455F948F73953BA77E47C7A92 /* 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 = ""; }; - 0A149710EE462F517FD899263322B9D8 /* randombytes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = randombytes.h; path = Sodium/libsodium/randombytes.h; sourceTree = ""; }; - 0B1762C21A76FCE00B628962A9CFCAD7 /* UInt16+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt16+Extension.swift"; path = "Sources/CryptoSwift/UInt16+Extension.swift"; sourceTree = ""; }; - 0BA0B7FF20263E9F074910358BC1FF12 /* 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 = ""; }; - 0BBB041BD70E156D98BF9883A1F5177B /* crypto_scrypt-common.c */ = {isa = PBXFileReference; includeInIndex = 1; name = "crypto_scrypt-common.c"; path = "src/libsodium/crypto_pwhash/scryptsalsa208sha256/crypto_scrypt-common.c"; sourceTree = ""; }; + 05CCB31086E817A5647E22DE62577C2D /* 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 = ""; }; + 05D75EADAA63150192812D8E4E1923B8 /* ladder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ladder.h; path = src/libsodium/crypto_scalarmult/curve25519/sandy2x/ladder.h; sourceTree = ""; }; + 060398BC43B44A6EB87209055126CF7D /* crypto_stream_xchacha20.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_stream_xchacha20.h; path = Sodium/libsodium/crypto_stream_xchacha20.h; sourceTree = ""; }; + 061E985595B1F655DF2773164CCF9585 /* crypto_kdf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_kdf.h; path = src/libsodium/include/sodium/crypto_kdf.h; sourceTree = ""; }; + 07AB0F9D3D4BF834352986B5643E0154 /* pwhash_argon2i.c */ = {isa = PBXFileReference; includeInIndex = 1; name = pwhash_argon2i.c; path = src/libsodium/crypto_pwhash/argon2/pwhash_argon2i.c; sourceTree = ""; }; + 07B32A8F8469159EFAAE310B31B0EB59 /* Codable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Codable.swift; path = sources/Codable.swift; sourceTree = ""; }; + 088D36A2B2B54DD4F17821CD55B6B301 /* 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 = ""; }; + 08D2CF26947DAAB4512ECCF242CC504D /* RandomBytes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RandomBytes.swift; path = Sodium/RandomBytes.swift; sourceTree = ""; }; + 09FCF4661FE7FF5B713712D229D4A21F /* crypto_shorthash_siphash24.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_shorthash_siphash24.h; path = Sodium/libsodium/crypto_shorthash_siphash24.h; sourceTree = ""; }; + 0A124B44176189A4CA9F265D7F340F82 /* poly1305_donna.c */ = {isa = PBXFileReference; includeInIndex = 1; name = poly1305_donna.c; path = src/libsodium/crypto_onetimeauth/poly1305/donna/poly1305_donna.c; sourceTree = ""; }; + 0A1463FF304439085E5AE7F102A78F8C /* u4.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = u4.h; path = src/libsodium/crypto_stream/chacha20/dolbeau/u4.h; sourceTree = ""; }; + 0A5105585840D80B41FA88318A5B7CB5 /* UIViewController+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+AnyPromise.h"; path = "Extensions/UIKit/Sources/UIViewController+AnyPromise.h"; sourceTree = ""; }; + 0B04022934D52B8088218535AC8ED661 /* 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 = ""; }; + 0BEFCB1B86F0CC8855D4CBE58F43F20C /* crypto_sign.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_sign.h; path = src/libsodium/include/sodium/crypto_sign.h; sourceTree = ""; }; 0C1A5405ADD7931D59901C43C9E0EB2A /* Pods-web3Swift-Demo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-web3Swift-Demo.release.xcconfig"; sourceTree = ""; }; - 0D25909FF7E6B9DA66A32A2B390CA1E9 /* randombytes_sysrandom.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = randombytes_sysrandom.h; path = Sodium/libsodium/randombytes_sysrandom.h; sourceTree = ""; }; - 0D3BC3C45D705077795EFE4798BFDE15 /* Response.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Response.swift; path = Source/Response.swift; sourceTree = ""; }; - 0D5F42853C987BCBB0286E3C13B60652 /* crypto_pwhash_argon2id.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_pwhash_argon2id.h; path = Sodium/libsodium/crypto_pwhash_argon2id.h; sourceTree = ""; }; - 0D981548FC89F73B8572C308EF3D525D /* 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 = ""; }; - 0E633D9D4034C45CA186E876F997BF8F /* hash_sha256.c */ = {isa = PBXFileReference; includeInIndex = 1; name = hash_sha256.c; path = src/libsodium/crypto_hash/sha256/hash_sha256.c; sourceTree = ""; }; - 0F2161AAD28EFFA2135EF3FEDAAC07F9 /* ZeroPadding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ZeroPadding.swift; path = Sources/CryptoSwift/ZeroPadding.swift; sourceTree = ""; }; - 0F4F20125789BA422E650A237A8C28CC /* crypto_kx.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_kx.h; path = Sodium/libsodium/crypto_kx.h; sourceTree = ""; }; - 0FE4F50E6FB25D4E9A1B79D609D10D21 /* crypto_secretbox_easy.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_secretbox_easy.c; path = src/libsodium/crypto_secretbox/crypto_secretbox_easy.c; sourceTree = ""; }; - 10E317435D5F68F7B094B254D888FEAB /* core_hsalsa20.c */ = {isa = PBXFileReference; includeInIndex = 1; name = core_hsalsa20.c; path = src/libsodium/crypto_core/hsalsa20/core_hsalsa20.c; sourceTree = ""; }; - 11161408170DF52BBD741446104FC8C9 /* randombytes_nativeclient.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = randombytes_nativeclient.h; path = src/libsodium/include/sodium/randombytes_nativeclient.h; sourceTree = ""; }; - 115FAFF9F15D3D7F4835CB4EA1207223 /* AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AnyPromise.m; path = Sources/AnyPromise.m; sourceTree = ""; }; - 1161F8DD1AD0197E07CAB86DA0D09B6B /* utils.c */ = {isa = PBXFileReference; includeInIndex = 1; name = utils.c; path = src/libsodium/sodium/utils.c; sourceTree = ""; }; - 12A161236B2B12A35F7C741991C6F279 /* 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 = ""; }; - 12CBC9364917F3E69494C9763FBD26C9 /* sign.c */ = {isa = PBXFileReference; includeInIndex = 1; name = sign.c; path = src/libsodium/crypto_sign/ed25519/ref10/sign.c; sourceTree = ""; }; - 135A4BF162559A6AD26E24815341775A /* utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = utils.h; path = src/libsodium/include/sodium/utils.h; sourceTree = ""; }; - 144DBFCFA5BCF39EBE93195EEAB45EE1 /* SHA1.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SHA1.swift; path = Sources/CryptoSwift/SHA1.swift; sourceTree = ""; }; - 150C1A3648B59850E33D0CCBBA907D56 /* u8.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = u8.h; path = src/libsodium/crypto_stream/salsa20/xmm6int/u8.h; sourceTree = ""; }; - 15AADC1A0ED4397158A6183AC0091358 /* fwd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = fwd.h; path = Sources/fwd.h; sourceTree = ""; }; - 15D4691A9B0FE6D7EAB687FEAA46F2DE /* Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Alamofire.swift; path = Source/Alamofire.swift; sourceTree = ""; }; - 15F4F8A6F49242931A6F972D3A21B327 /* common.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = common.h; path = src/libsodium/include/sodium/private/common.h; sourceTree = ""; }; - 15FA18EA6039F5B131F2C2CB930B69AD /* crypto_core_salsa20.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_core_salsa20.h; path = Sodium/libsodium/crypto_core_salsa20.h; sourceTree = ""; }; - 161D3284FB54591A66E4FDB5C24B53C7 /* 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 = ""; }; + 0DCD780F725AC53DAE778E3A129DCB51 /* scalarmult_curve25519.c */ = {isa = PBXFileReference; includeInIndex = 1; name = scalarmult_curve25519.c; path = src/libsodium/crypto_scalarmult/curve25519/scalarmult_curve25519.c; sourceTree = ""; }; + 0EB415CD3D551173C0775C0C806F4AF8 /* crypto_sign_edwards25519sha512batch.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_sign_edwards25519sha512batch.h; path = Sodium/libsodium/crypto_sign_edwards25519sha512batch.h; sourceTree = ""; }; + 0EEFE57ACD69B006019558A2F179D7C4 /* crypto_auth_hmacsha256.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_auth_hmacsha256.h; path = Sodium/libsodium/crypto_auth_hmacsha256.h; sourceTree = ""; }; + 0F1D8060496D6585D516EDC1ACAB1ED6 /* sign_ed25519.c */ = {isa = PBXFileReference; includeInIndex = 1; name = sign_ed25519.c; path = src/libsodium/crypto_sign/ed25519/sign_ed25519.c; sourceTree = ""; }; + 0F47EB6037C20607C42605255B4058AC /* ChaCha20+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ChaCha20+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/ChaCha20+Foundation.swift"; sourceTree = ""; }; + 0FC8A2C990AE17FED3B361AF7FDA5FF2 /* 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 = ""; }; + 10638DD5E2EE146E210FE3DB65B19A21 /* 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 = ""; }; + 107DE410E730EDAB1F9EAF3CF30DA26F /* lax_der_parsing.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lax_der_parsing.c; path = secp256k1_ios/contrib/lax_der_parsing.c; sourceTree = ""; }; + 10FC1B17FC8359EF990417B99EE0841A /* 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 = ""; }; + 110F156EAD191CCDD7B6C8E6DB48480E /* randombytes_salsa20_random.c */ = {isa = PBXFileReference; includeInIndex = 1; name = randombytes_salsa20_random.c; path = src/libsodium/randombytes/salsa20/randombytes_salsa20_random.c; sourceTree = ""; }; + 1116FE155CA82FF9C62F96DA56CE8DD8 /* Operators.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Operators.swift; path = Sources/CryptoSwift/Operators.swift; sourceTree = ""; }; + 12053A4209496A4A19A160E28F961618 /* crypto_hash_sha512.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_hash_sha512.h; path = Sodium/libsodium/crypto_hash_sha512.h; sourceTree = ""; }; + 125752E2897141636B6750A628014033 /* Data Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data Conversion.swift"; path = "sources/Data Conversion.swift"; sourceTree = ""; }; + 126388EA10F6ED929188914116A9A351 /* CALayer+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CALayer+AnyPromise.h"; path = "Extensions/QuartzCore/Sources/CALayer+AnyPromise.h"; sourceTree = ""; }; + 1356A151B544C1192B6AB81AA56F2CBA /* crypto_pwhash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_pwhash.h; path = src/libsodium/include/sodium/crypto_pwhash.h; sourceTree = ""; }; + 14811DBE509E4540763DEED9B026CCA4 /* Integer Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Integer Conversion.swift"; path = "sources/Integer Conversion.swift"; sourceTree = ""; }; + 149D31681CD859BFA868AF02E0207D98 /* Updatable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Updatable.swift; path = Sources/CryptoSwift/Updatable.swift; sourceTree = ""; }; 1664E45FA5CF3F32FDB85878D3143360 /* Pods-web3swiftTests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-web3swiftTests-acknowledgements.markdown"; sourceTree = ""; }; - 169FEF91B9E37E23AA6E4328D4234C87 /* int128_aes128ctr.c */ = {isa = PBXFileReference; includeInIndex = 1; name = int128_aes128ctr.c; path = src/libsodium/crypto_stream/aes128ctr/nacl/int128_aes128ctr.c; sourceTree = ""; }; + 1699057AB58BCC4482C13C26AD4868AA /* crypto_stream_salsa2012.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_stream_salsa2012.h; path = Sodium/libsodium/crypto_stream_salsa2012.h; sourceTree = ""; }; 16AA9EBB1FAFF8F1EBFB3242F0EB322E /* Pods-web3Swift-Demo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-web3Swift-Demo.debug.xcconfig"; sourceTree = ""; }; - 172B50E013F87E6F8F7DF07401A1084A /* DispatchQueue+Await.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DispatchQueue+Await.swift"; path = "Sources/DispatchQueue+Await.swift"; sourceTree = ""; }; - 1748E8209421822049EA7820F6265394 /* PCBC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PCBC.swift; path = Sources/CryptoSwift/BlockMode/PCBC.swift; sourceTree = ""; }; - 17FDCE0DA1FA9B2151211E2393ECB3C6 /* export.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = export.h; path = src/libsodium/include/sodium/export.h; sourceTree = ""; }; - 18BBFC5758096663BE1B5F3FD062B990 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 18D0D724107030A4BEC68DA36C56D528 /* ResponseSerialization.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ResponseSerialization.swift; path = Source/ResponseSerialization.swift; sourceTree = ""; }; - 1920F8834A4EC1BE93F02EB6F4A974E2 /* crypto_aead_chacha20poly1305.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_aead_chacha20poly1305.h; path = Sodium/libsodium/crypto_aead_chacha20poly1305.h; sourceTree = ""; }; - 196BF0D72A1BCDEE8EE398EE7281D047 /* u1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = u1.h; path = src/libsodium/crypto_stream/chacha20/dolbeau/u1.h; sourceTree = ""; }; - 19CA5B906CB5C2A2E1A8A2C90CCE34E6 /* NSObject+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSObject+Promise.swift"; path = "Extensions/Foundation/Sources/NSObject+Promise.swift"; sourceTree = ""; }; - 19E36865FE9FFFB8BA4CC1B35F679C73 /* NSURLSession+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSURLSession+AnyPromise.h"; path = "Extensions/Foundation/Sources/NSURLSession+AnyPromise.h"; sourceTree = ""; }; - 1A7D889D7F90D814AC0BFE67AAA0AF36 /* Checksum.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Checksum.swift; path = Sources/CryptoSwift/Checksum.swift; sourceTree = ""; }; - 1AE81BB0C446BBADC4E40474F357827A /* CryptoSwift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CryptoSwift-prefix.pch"; sourceTree = ""; }; - 1AFFA07FA17054E8E612B3B0849BEB5D /* 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 = ""; }; - 1C88EA29C85CAC8051209E919A051993 /* aead_chacha20poly1305.c */ = {isa = PBXFileReference; includeInIndex = 1; name = aead_chacha20poly1305.c; path = src/libsodium/crypto_aead/chacha20poly1305/sodium/aead_chacha20poly1305.c; sourceTree = ""; }; - 1D6F9FB030621398C9F85520B7DD17E0 /* Collection+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Collection+Extension.swift"; path = "Sources/CryptoSwift/Collection+Extension.swift"; sourceTree = ""; }; - 1DD0E98E1907020FE22D43E0F3DE0EF1 /* NSURLSession+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSURLSession+Promise.swift"; path = "Extensions/Foundation/Sources/NSURLSession+Promise.swift"; sourceTree = ""; }; - 1E67050266B4560B8D795D8784F3A6F0 /* Sodium-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Sodium-dummy.m"; sourceTree = ""; }; - 1ED7FB48BF0703478184016DF789A03F /* 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 = ""; }; - 204A093C2CC672D1C6A6F6235B731470 /* Sodium-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Sodium-prefix.pch"; sourceTree = ""; }; - 2057792A91F668E3AF4D7B96579D73E2 /* runtime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = runtime.h; path = src/libsodium/include/sodium/runtime.h; sourceTree = ""; }; - 2096C99928A1AF6849A2397197884096 /* GlobalState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GlobalState.m; path = Sources/GlobalState.m; sourceTree = ""; }; - 21552B00F36B74636FA9CFB62D9FAFF7 /* fe51.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = fe51.h; path = src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51.h; sourceTree = ""; }; - 2159C4D014D35FCFD07FEB421BC7A60D /* poly1305_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = poly1305_sse2.c; path = src/libsodium/crypto_onetimeauth/poly1305/sse2/poly1305_sse2.c; sourceTree = ""; }; - 21BCBD78D05361D29C4E668BD6631C15 /* crypto_pwhash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_pwhash.h; path = Sodium/libsodium/crypto_pwhash.h; sourceTree = ""; }; + 16F1BF2554611816F0AF380AB1B026DC /* Sodium.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = Sodium.modulemap; sourceTree = ""; }; + 174BF9D2BF8A1AD12BB70BDA480FF996 /* field_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_impl.h; path = secp256k1_ios/src/field_impl.h; sourceTree = ""; }; + 177B97316A783C6D8299DF47BC8DBFE1 /* crypto_scalarmult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_scalarmult.h; path = Sodium/libsodium/crypto_scalarmult.h; sourceTree = ""; }; + 1785EDC41C5CAE35AB9DCB8FC9501E1B /* 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 = ""; }; + 188709623E870B15CB2E68692A548593 /* aead_chacha20poly1305.c */ = {isa = PBXFileReference; includeInIndex = 1; name = aead_chacha20poly1305.c; path = src/libsodium/crypto_aead/chacha20poly1305/sodium/aead_chacha20poly1305.c; sourceTree = ""; }; + 188C52A6D4B24EF8F52610B37669B45A /* crypto_hash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_hash.h; path = src/libsodium/include/sodium/crypto_hash.h; sourceTree = ""; }; + 194CFD6780762E2D8DD14651CEF1F13B /* ecmult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult.h; path = secp256k1_ios/src/ecmult.h; sourceTree = ""; }; + 1A41CAC38257F5E0E39E1C873BBC8023 /* Comparable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Comparable.swift; path = sources/Comparable.swift; sourceTree = ""; }; + 1A5FAA6C3122E3B0EA41EFC34A427E00 /* crypto_stream_xsalsa20.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_stream_xsalsa20.h; path = Sodium/libsodium/crypto_stream_xsalsa20.h; sourceTree = ""; }; + 1A86535A248F7C92CA8B4A18EECA240E /* UInt64+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt64+Extension.swift"; path = "Sources/CryptoSwift/UInt64+Extension.swift"; sourceTree = ""; }; + 1AB6172174FEE95DC60427FB8D889B73 /* 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 = ""; }; + 1B8348274CAB798E07D8F385C4F70F0C /* 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 = ""; }; + 1C3B1896999936CA79E0F71CDB5CEE72 /* stream_xchacha20.c */ = {isa = PBXFileReference; includeInIndex = 1; name = stream_xchacha20.c; path = src/libsodium/crypto_stream/xchacha20/stream_xchacha20.c; sourceTree = ""; }; + 1C69652417F7FA2E2D49EA91E8B526FB /* crypto_shorthash.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_shorthash.c; path = src/libsodium/crypto_shorthash/crypto_shorthash.c; sourceTree = ""; }; + 1D65C9572967F1861AF4B9803BB16386 /* NSURLSession+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSURLSession+AnyPromise.m"; path = "Extensions/Foundation/Sources/NSURLSession+AnyPromise.m"; sourceTree = ""; }; + 1D8E821905DA6F9616C0E6CA4699A3F3 /* CFB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CFB.swift; path = Sources/CryptoSwift/BlockMode/CFB.swift; sourceTree = ""; }; + 1D97C1CFBE0D027B4FA1982674AFD4F5 /* randombytes_salsa20_random.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = randombytes_salsa20_random.h; path = Sodium/libsodium/randombytes_salsa20_random.h; sourceTree = ""; }; + 1E1DA3CC83C5A9C0DF6CFEFAFB4066B4 /* crypto_onetimeauth_poly1305.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_onetimeauth_poly1305.h; path = Sodium/libsodium/crypto_onetimeauth_poly1305.h; sourceTree = ""; }; + 1EC930D0D02B72829CB15062821D7BEC /* RandomUInt64.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RandomUInt64.swift; path = SipHash/RandomUInt64.swift; sourceTree = ""; }; + 1F2B2AF0204E5B155C5501B32A9EDDBD /* crypto_core_hchacha20.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_core_hchacha20.h; path = Sodium/libsodium/crypto_core_hchacha20.h; sourceTree = ""; }; + 200C7AA5438C49D9F2F8520247F40DA5 /* Sodium.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Sodium.swift; path = Sodium/Sodium.swift; sourceTree = ""; }; + 20161716CB73A05C11BC0D9674719D73 /* 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 = ""; }; 21BD0EA05E4040F3F97DB680C30FFBAB /* 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; }; - 21D1DBD278CB9CFB93FE728EC04334E2 /* 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 = ""; }; - 21F9C2D13E21DC3B4559C86E70B73621 /* crypto_onetimeauth.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_onetimeauth.h; path = Sodium/libsodium/crypto_onetimeauth.h; sourceTree = ""; }; - 2297056A0DACF7263DC20816B217431F /* 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 = ""; }; - 2340261E60C062A9E7523109A301DB57 /* crypto_scalarmult_curve25519.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_scalarmult_curve25519.h; path = Sodium/libsodium/crypto_scalarmult_curve25519.h; sourceTree = ""; }; - 23B26B1E8E7CB6D90FD3E624B6395E86 /* CryptoSwift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "CryptoSwift-dummy.m"; sourceTree = ""; }; - 2424D262125BFFB4F7D50925AC598014 /* Digest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Digest.swift; path = Sources/CryptoSwift/Digest.swift; sourceTree = ""; }; - 2454490E1007FB369BF6BFAD4868AADC /* 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 = ""; }; - 24765D3FFBBEEC352498B8C33B8FA52A /* crypto_shorthash_siphash24.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_shorthash_siphash24.h; path = Sodium/libsodium/crypto_shorthash_siphash24.h; sourceTree = ""; }; - 24E31EE2027B84080F63B9DC43E99C53 /* crypto_stream_salsa2012.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_stream_salsa2012.h; path = Sodium/libsodium/crypto_stream_salsa2012.h; sourceTree = ""; }; - 25E122EB8642A04254099F97D01E450B /* crypto_generichash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_generichash.h; path = Sodium/libsodium/crypto_generichash.h; sourceTree = ""; }; - 26A5581984769CA8A1FBA68672C4BC0E /* OFB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = OFB.swift; path = Sources/CryptoSwift/BlockMode/OFB.swift; sourceTree = ""; }; - 2722613A016A50F1D5F6657B99C26E9A /* Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Promise.swift; path = Sources/Promise.swift; sourceTree = ""; }; + 21FBAEF445B99A996E4ED13AF5290411 /* 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 = ""; }; + 23610349DAACB1AE48617F22E587B8DB /* DigestType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DigestType.swift; path = Sources/CryptoSwift/DigestType.swift; sourceTree = ""; }; + 23E6E7E8375333D909C88BC6C8DC8DFD /* 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 = ""; }; + 24B33607F207B7119B1626685203F8E3 /* sodium.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = sodium.h; path = src/libsodium/include/sodium.h; sourceTree = ""; }; + 24E60E2C56BACA40748E8785637DA502 /* secretbox_xchacha20poly1305.c */ = {isa = PBXFileReference; includeInIndex = 1; name = secretbox_xchacha20poly1305.c; path = src/libsodium/crypto_secretbox/xchacha20poly1305/secretbox_xchacha20poly1305.c; sourceTree = ""; }; + 2613F6517D24E98257A33C0BD86AA417 /* Subtraction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Subtraction.swift; path = sources/Subtraction.swift; sourceTree = ""; }; + 263BA41B9CC33F8E82CAD4A83E87FFF2 /* generichash_blake2b.c */ = {isa = PBXFileReference; includeInIndex = 1; name = generichash_blake2b.c; path = src/libsodium/crypto_generichash/blake2b/ref/generichash_blake2b.c; sourceTree = ""; }; + 26BB766A45376D4E7004CAD20B90ABCE /* AnyPromise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnyPromise.swift; path = Sources/AnyPromise.swift; sourceTree = ""; }; + 26F4133F691E405A0582153198ABE109 /* crypto_scalarmult_curve25519.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_scalarmult_curve25519.h; path = Sodium/libsodium/crypto_scalarmult_curve25519.h; sourceTree = ""; }; 275D7D8084ACFE150F19F4CFE7D85C4F /* Pods-web3Swift-Demo.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = "Pods-web3Swift-Demo.modulemap"; sourceTree = ""; }; - 27F68FBE86940B8D1D1ECE44538B5488 /* crypto_scalarmult_ed25519.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_scalarmult_ed25519.h; path = Sodium/libsodium/crypto_scalarmult_ed25519.h; sourceTree = ""; }; - 28856DA85C5DD10797A80F5B7916569A /* libsodium-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "libsodium-umbrella.h"; sourceTree = ""; }; - 2A0C721886EB5726D9ECB3C4AD9F001C /* 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 = ""; }; - 2AD5BCC936EC382040D95452EA20E027 /* libsodium.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = libsodium.modulemap; sourceTree = ""; }; - 2AD9C5FA27E8ADCD10A4B11BFB9253E6 /* Sodium.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Sodium.xcconfig; sourceTree = ""; }; - 2B1AA6462359C75E74DC3666A5C75355 /* 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 = ""; }; - 2B3861F17DF08D9F18C2A1B2FC42C262 /* Result.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Result.swift; path = Source/Result.swift; sourceTree = ""; }; - 2B4D328AB2960E93917ADA0F2DB5618F /* UIViewController+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+AnyPromise.h"; path = "Extensions/UIKit/Sources/UIViewController+AnyPromise.h"; sourceTree = ""; }; - 2BB0A2E7525A07657002EF586F51CA7C /* crypto_stream_salsa208.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_stream_salsa208.h; path = Sodium/libsodium/crypto_stream_salsa208.h; sourceTree = ""; }; - 2C56397FBCE332E99C16633327D9CAF8 /* 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 = ""; }; - 2D7213900822929C9A20CFBB508043A8 /* 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 = ""; }; - 2DA29FBF28B43695551B6A7FAA3F56E7 /* 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 = ""; }; - 2DCB4E72425520BE9F2309B142A75BBB /* Strideable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Strideable.swift; path = sources/Strideable.swift; sourceTree = ""; }; - 2E2AFD18582598260EEEA0316706F9E7 /* crypto_pwhash_argon2i.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_pwhash_argon2i.h; path = Sodium/libsodium/crypto_pwhash_argon2i.h; sourceTree = ""; }; - 2E8D5843CA14BE50903DA3C0FD314890 /* BigUInt.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BigUInt.swift; path = sources/BigUInt.swift; sourceTree = ""; }; - 317DFACAC8499FE790B2F62585685EBD /* Authenticator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Authenticator.swift; path = Sources/CryptoSwift/Authenticator.swift; sourceTree = ""; }; - 3249AF372A590954EF1BC5B2C908BAA0 /* 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 = ""; }; - 324F91F63FDDC4B0E982B1F2725216EF /* 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 = ""; }; - 32F10CC5985F01316863EFFC96AE0DD0 /* Int+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Int+Extension.swift"; path = "Sources/CryptoSwift/Int+Extension.swift"; sourceTree = ""; }; - 3366339B8E4AA3C65147A352191C75DA /* crypto_scalarmult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_scalarmult.h; path = src/libsodium/include/sodium/crypto_scalarmult.h; sourceTree = ""; }; - 340B278D3DAE3DA81C08A2D9F62362FA /* 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 = ""; }; - 342E10320A0F4AB4BB1432747ABAFFEF /* String Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String Conversion.swift"; path = "sources/String Conversion.swift"; sourceTree = ""; }; - 34DDE3DB766969661F353977F4893D4E /* 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 = ""; }; - 34EC3DB74409CA1BA1E7282E4B9651C2 /* 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 = ""; }; - 35B21FD888D70D5B1720AA9A851F6917 /* UInt8+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt8+Extension.swift"; path = "Sources/CryptoSwift/UInt8+Extension.swift"; sourceTree = ""; }; - 36AB04E1564A9C0592D75F115A0AABB9 /* crypto_box_seal.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_box_seal.c; path = src/libsodium/crypto_box/crypto_box_seal.c; sourceTree = ""; }; - 36C11A041883FC4C9DFAF96FE7120B66 /* libsodium-ios.a */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = archive.ar; name = "libsodium-ios.a"; path = "Sodium/libsodium/libsodium-ios.a"; sourceTree = ""; }; - 36F010C412B0464B6D658002BEDF5723 /* randombytes_sysrandom.c */ = {isa = PBXFileReference; includeInIndex = 1; name = randombytes_sysrandom.c; path = src/libsodium/randombytes/sysrandom/randombytes_sysrandom.c; sourceTree = ""; }; - 374F05E31597663B98E2142A133DCA73 /* crypto_onetimeauth.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_onetimeauth.h; path = src/libsodium/include/sodium/crypto_onetimeauth.h; sourceTree = ""; }; - 376EA041D80D70A5F6639E5C24CE02CF /* AwaitKitExtension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AwaitKitExtension.swift; path = Sources/AwaitKitExtension.swift; sourceTree = ""; }; + 28008B7D35486A5CB4E9062EF3CFB712 /* crypto_box_curve25519xchacha20poly1305.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_box_curve25519xchacha20poly1305.h; path = Sodium/libsodium/crypto_box_curve25519xchacha20poly1305.h; sourceTree = ""; }; + 285FDAAFC04BE9833D508C8796BC95E7 /* auth_hmacsha512.c */ = {isa = PBXFileReference; includeInIndex = 1; name = auth_hmacsha512.c; path = src/libsodium/crypto_auth/hmacsha512/auth_hmacsha512.c; sourceTree = ""; }; + 2870AEA355A04299E1B47AF73F98D49D /* BatchedCollection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BatchedCollection.swift; path = Sources/CryptoSwift/BatchedCollection.swift; sourceTree = ""; }; + 288EC8ACFC5DEF4ADA602DCBCE0B50DF /* crypto_sign.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_sign.c; path = src/libsodium/crypto_sign/crypto_sign.c; sourceTree = ""; }; + 28C18FDDDDB9701BB3FE62632D8CA23F /* crypto_aead_aes256gcm.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_aead_aes256gcm.h; path = Sodium/libsodium/crypto_aead_aes256gcm.h; sourceTree = ""; }; + 29C85F1725416148DAAF74A954DEED0A /* SHA1.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SHA1.swift; path = Sources/CryptoSwift/SHA1.swift; sourceTree = ""; }; + 2A7A32794631740B74DB60445F9E3D3C /* crypto_aead_xchacha20poly1305.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_aead_xchacha20poly1305.h; path = Sodium/libsodium/crypto_aead_xchacha20poly1305.h; sourceTree = ""; }; + 2BC51585C916D53B9B911712CEDB758A /* u4.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = u4.h; path = src/libsodium/crypto_stream/salsa20/xmm6int/u4.h; sourceTree = ""; }; + 2D3A67C3CF08A886A95F5A1283C7322D /* Collection+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Collection+Extension.swift"; path = "Sources/CryptoSwift/Collection+Extension.swift"; sourceTree = ""; }; + 2D8D147273FEB0DB4B09AB310C0E2FEE /* u1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = u1.h; path = src/libsodium/crypto_stream/chacha20/dolbeau/u1.h; sourceTree = ""; }; + 2D9B08D152005ABECB7CBC2AC1EB8634 /* crypto_kdf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_kdf.h; path = Sodium/libsodium/crypto_kdf.h; sourceTree = ""; }; + 2DA7D90EA2B7510EFF2CEB30737874BA /* argon2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = argon2.c; path = src/libsodium/crypto_pwhash/argon2/argon2.c; sourceTree = ""; }; + 2EF6DEB3CB4E95C3252E7CBB3B12588F /* Auth.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Auth.swift; path = Sodium/Auth.swift; sourceTree = ""; }; + 2F52261F76679DE347BCA8FEFBBDBF8C /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 2F93526CCC37E0101FAC42903C1859F6 /* BigInt-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "BigInt-prefix.pch"; sourceTree = ""; }; + 2FCAB85CB8673F7720318C665549604D /* crypto_scrypt-common.c */ = {isa = PBXFileReference; includeInIndex = 1; name = "crypto_scrypt-common.c"; path = "src/libsodium/crypto_pwhash/scryptsalsa208sha256/crypto_scrypt-common.c"; sourceTree = ""; }; + 2FD4BFACEBDEC5879203A1BD406F21FB /* Sodium.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Sodium.xcconfig; sourceTree = ""; }; + 300023C33443B669808C36B0F0C9CAEF /* 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 = ""; }; + 30054AA6B00300917677FEE68BDD67D1 /* crypto_verify_16.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_verify_16.h; path = Sodium/libsodium/crypto_verify_16.h; sourceTree = ""; }; + 306C5F642893BA3DE56C750048B13C2A /* consts_aes128ctr.c */ = {isa = PBXFileReference; includeInIndex = 1; name = consts_aes128ctr.c; path = src/libsodium/crypto_stream/aes128ctr/nacl/consts_aes128ctr.c; sourceTree = ""; }; + 31F650A915064F1EAA12DA43F65AC6E7 /* PromiseKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PromiseKit.h; path = Sources/PromiseKit.h; sourceTree = ""; }; + 3204E0346807F463D625B1FA74632F5D /* export.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = export.h; path = src/libsodium/include/sodium/export.h; sourceTree = ""; }; + 3315A7F13EB31197449F67906970378D /* Division.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Division.swift; path = sources/Division.swift; sourceTree = ""; }; + 33439E619816C7FFBD21D52EF1A03188 /* Blowfish.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Blowfish.swift; path = Sources/CryptoSwift/Blowfish.swift; sourceTree = ""; }; + 3386C94624F564AC1A157B90EF4DAEEB /* 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 = ""; }; + 33C6D53C98D84EC5EC20B99CAFC911E7 /* RandomAccessCryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RandomAccessCryptor.swift; path = Sources/CryptoSwift/RandomAccessCryptor.swift; sourceTree = ""; }; + 3410D4C76AA77E811FADAE9655D072D5 /* secp256k1_ios.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = secp256k1_ios.framework; path = secp256k1_ios.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 3431FE02FD7945DF82E6ECC08A7F354F /* crypto_hash_sha256.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_hash_sha256.h; path = Sodium/libsodium/crypto_hash_sha256.h; sourceTree = ""; }; + 366301F692A79CAD45767E0D7E2F2E85 /* SipHash-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SipHash-prefix.pch"; sourceTree = ""; }; + 36880EA07B55D344AEE94C7AB2138E22 /* 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 = ""; }; + 3694D1B6FE33F2B7975341353EE2BE29 /* 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 = ""; }; + 369A7ABD70E1D20F324E17B213F315DD /* runtime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = runtime.h; path = src/libsodium/include/sodium/runtime.h; sourceTree = ""; }; + 37622AFC62D26E0BB0F565E58601836B /* Cryptors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cryptors.swift; path = Sources/CryptoSwift/Cryptors.swift; sourceTree = ""; }; 3805C9F372F5D311AF23DF28EABF0FC9 /* Pods-web3Swift-Demo-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-web3Swift-Demo-acknowledgements.markdown"; sourceTree = ""; }; + 38284CB145778671690E69B89C01C939 /* crypto_generichash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_generichash.h; path = Sodium/libsodium/crypto_generichash.h; sourceTree = ""; }; + 38A21D6E87EA6D6A62BE8872B1832BD6 /* after.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = after.swift; path = Sources/after.swift; sourceTree = ""; }; + 38AAA42CA617110817513AFE572BC326 /* 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 = ""; }; + 391A32CDCFAD5235B11A17C50107FA99 /* Sodium-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Sodium-umbrella.h"; sourceTree = ""; }; 397EB2C01F8363686091EC4B3B79E908 /* Pods-web3Swift-Demo-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-web3Swift-Demo-dummy.m"; sourceTree = ""; }; - 3D27601B1C38F8DF92D4EBF3F8B99155 /* Alamofire-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Alamofire-dummy.m"; sourceTree = ""; }; - 3E1FD3BEF2DBD3315041E54AAD026D21 /* 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 = ""; }; - 3E492F9F107AE43CB50CAF2658C3D1F9 /* HMAC+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "HMAC+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/HMAC+Foundation.swift"; sourceTree = ""; }; - 3F3E15B49E89EF6B53D20BAACD826290 /* GCD.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GCD.swift; path = sources/GCD.swift; sourceTree = ""; }; - 3FCD34BC6761243908EA45C63260AC14 /* ShortHash.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ShortHash.swift; path = Sodium/ShortHash.swift; sourceTree = ""; }; - 3FECA9358885E0B80EA14BCEEC8FA6A7 /* MultipartFormData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MultipartFormData.swift; path = Source/MultipartFormData.swift; sourceTree = ""; }; - 4015A814D74E0993F2C42A71AD614A2A /* crypto_kx.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_kx.h; path = src/libsodium/include/sodium/crypto_kx.h; sourceTree = ""; }; - 411A9CF5F1FA74B10BB27291A432442E /* crypto_core_salsa2012.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_core_salsa2012.h; path = Sodium/libsodium/crypto_core_salsa2012.h; sourceTree = ""; }; - 4125321C6E32CB429AF035D000BA45E6 /* blake2b-ref.c */ = {isa = PBXFileReference; includeInIndex = 1; name = "blake2b-ref.c"; path = "src/libsodium/crypto_generichash/blake2b/ref/blake2b-ref.c"; sourceTree = ""; }; - 41531B74D6A98E518F7CD6E3E1BE1D6A /* common.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = common.h; path = src/libsodium/crypto_stream/aes128ctr/nacl/common.h; sourceTree = ""; }; - 4179BA0C81529BA84385A2A4D90BF09C /* SipHasher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SipHasher.swift; path = SipHash/SipHasher.swift; sourceTree = ""; }; - 41A4019745ECCE29DCA77B0C7A801C0B /* onetimeauth_poly1305.c */ = {isa = PBXFileReference; includeInIndex = 1; name = onetimeauth_poly1305.c; path = src/libsodium/crypto_onetimeauth/poly1305/onetimeauth_poly1305.c; sourceTree = ""; }; - 4361D29DE3CC5313ADA5BCA037D2077D /* crypto_generichash_blake2b.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_generichash_blake2b.h; path = Sodium/libsodium/crypto_generichash_blake2b.h; sourceTree = ""; }; - 4412B49437337EB385103715C6C4DB60 /* AwaitKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AwaitKit-prefix.pch"; sourceTree = ""; }; - 4428840BB518C94A83A7C5028A5AD8C9 /* 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 = ""; }; - 44630F1CBB231597D6CB0143A0897581 /* 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 = ""; }; - 44DDC8CD70F7865BD90059B6E8573D54 /* pbkdf2-sha256.c */ = {isa = PBXFileReference; includeInIndex = 1; name = "pbkdf2-sha256.c"; path = "src/libsodium/crypto_pwhash/scryptsalsa208sha256/pbkdf2-sha256.c"; sourceTree = ""; }; - 44F2EC70FBDF67CBBF2014FDC1C0A015 /* SipHash.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SipHash.framework; path = SipHash.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 46048AE549927050092CABF289EA28AC /* Alamofire.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Alamofire.xcconfig; sourceTree = ""; }; + 398ACC94B6724B8F4330CDDE2D0D1D17 /* basic-config.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "basic-config.h"; path = "secp256k1_ios/src/basic-config.h"; sourceTree = ""; }; + 39FB7DB913E7E943C0468DA89619A75D /* SecretStream.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SecretStream.swift; path = Sodium/SecretStream.swift; sourceTree = ""; }; + 3A38CF331F82BE8374FCE8A7B5772898 /* common.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = common.h; path = src/libsodium/include/sodium/private/common.h; sourceTree = ""; }; + 3AA38C9759F09C6621EB5DA8644A9DD0 /* BigInt.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = BigInt.modulemap; sourceTree = ""; }; + 3AFE1F3945CB38D5140ABD6DDA7F479E /* GlobalState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GlobalState.m; path = Sources/GlobalState.m; sourceTree = ""; }; + 3B0238A125892420B7A7328760C65433 /* crypto_auth.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_auth.h; path = src/libsodium/include/sodium/crypto_auth.h; sourceTree = ""; }; + 3B0CB1ED9DC473A77EC2A488CE972659 /* blake2b-long.c */ = {isa = PBXFileReference; includeInIndex = 1; name = "blake2b-long.c"; path = "src/libsodium/crypto_pwhash/argon2/blake2b-long.c"; sourceTree = ""; }; + 3B32079A83AC320B219446AE2531508C /* Authenticator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Authenticator.swift; path = Sources/CryptoSwift/Authenticator.swift; sourceTree = ""; }; + 3B56A24652AEE611B57462A41E3B7DB9 /* CALayer+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "CALayer+AnyPromise.m"; path = "Extensions/QuartzCore/Sources/CALayer+AnyPromise.m"; sourceTree = ""; }; + 3BAE1C5F82F1AA44AB4AE0EC51823653 /* utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = utils.h; path = src/libsodium/include/sodium/utils.h; sourceTree = ""; }; + 3C03D52717774CB4CD3A7300AF9525AE /* PMKQuartzCore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PMKQuartzCore.h; path = Extensions/QuartzCore/Sources/PMKQuartzCore.h; sourceTree = ""; }; + 3C4E243029F955B0F5A0A77B7CFBDB79 /* 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 = ""; }; + 3C8A41071FD260C115DF94B6FBFE8CE9 /* chacha20_ref.c */ = {isa = PBXFileReference; includeInIndex = 1; name = chacha20_ref.c; path = src/libsodium/crypto_stream/chacha20/ref/chacha20_ref.c; sourceTree = ""; }; + 3C99572B9FBBEBC6294C27E822246C8A /* scalar_low.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_low.h; path = secp256k1_ios/src/scalar_low.h; sourceTree = ""; }; + 3D663C0CDF436D17D90A04E052218AFB /* crypto_aead_chacha20poly1305.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_aead_chacha20poly1305.h; path = Sodium/libsodium/crypto_aead_chacha20poly1305.h; sourceTree = ""; }; + 3DA94EFA6F466464282B7C6EEE9DC7EE /* CryptoSwift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CryptoSwift-umbrella.h"; sourceTree = ""; }; + 3E6E89FA191A9D41E9B1CDB2AA1DA233 /* secp256k1_ios-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "secp256k1_ios-prefix.pch"; sourceTree = ""; }; + 3FDA2E4E741C25EFB8BA4857530E6E74 /* Bitwise Ops.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Bitwise Ops.swift"; path = "sources/Bitwise Ops.swift"; sourceTree = ""; }; + 4076C429A743BB72EE5B4A1674E99D7C /* crypto_core_hsalsa20.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_core_hsalsa20.h; path = Sodium/libsodium/crypto_core_hsalsa20.h; sourceTree = ""; }; + 408A09BECC450F94D68EF6470996054D /* 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 = ""; }; + 4219D79C94082861C963AF0229F08E92 /* x25519_ref10.c */ = {isa = PBXFileReference; includeInIndex = 1; name = x25519_ref10.c; path = src/libsodium/crypto_scalarmult/curve25519/ref10/x25519_ref10.c; sourceTree = ""; }; + 43B9AB00B876DF2FC086DF76B60D34F7 /* crypto_stream.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_stream.c; path = src/libsodium/crypto_stream/crypto_stream.c; sourceTree = ""; }; + 43E1A11E65ED2701A473D9D471EBE10C /* AwaitKit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AwaitKit.swift; path = Sources/AwaitKit.swift; sourceTree = ""; }; + 43F4DCA991089AB989F5AFF2DBEAF64A /* 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 = ""; }; + 45E1469F7A4D58BEC725B296B455E64C /* AFError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AFError.swift; path = Source/AFError.swift; sourceTree = ""; }; + 4605154FE7FA01D775E382F72BB7E19C /* 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 = ""; }; 460A24A13C0DDA7B63FE27A38CB90D62 /* Pods-web3swiftTests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-web3swiftTests-resources.sh"; sourceTree = ""; }; - 467F8FFA42FBDCA2CD2D7F0C4F19D974 /* blake2b-long.c */ = {isa = PBXFileReference; includeInIndex = 1; name = "blake2b-long.c"; path = "src/libsodium/crypto_pwhash/argon2/blake2b-long.c"; sourceTree = ""; }; - 46A1AF5215C8D16C2BAE8FEF9D5C2E94 /* Alamofire-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-prefix.pch"; sourceTree = ""; }; - 4720AB7429158BCA361A6B70808A01D1 /* u4.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = u4.h; path = src/libsodium/crypto_stream/salsa20/xmm6int/u4.h; sourceTree = ""; }; - 473AD07BCE5ECD29C1F8F28C47D607D3 /* int128.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = int128.h; path = src/libsodium/crypto_stream/aes128ctr/nacl/int128.h; sourceTree = ""; }; - 485FD4248C3F35857951295FC75BEEA4 /* base2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = base2.h; path = src/libsodium/crypto_core/curve25519/ref10/base2.h; sourceTree = ""; }; - 4995C95AF974370951907DDA0C10B63B /* when.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = when.swift; path = Sources/when.swift; sourceTree = ""; }; - 4B1DBF646CDC22716FEE13BC368018B8 /* URLDataPromise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = URLDataPromise.swift; path = Extensions/Foundation/Sources/URLDataPromise.swift; sourceTree = ""; }; - 4D237382CBD0A506434A3DFA4F1BE60A /* crypto_scalarmult.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_scalarmult.c; path = src/libsodium/crypto_scalarmult/crypto_scalarmult.c; sourceTree = ""; }; - 4DCCB5E1AE204FF68CA7C30AD97D2EE6 /* afterlife.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = afterlife.swift; path = Extensions/Foundation/Sources/afterlife.swift; sourceTree = ""; }; - 4E51137FE6F7F1D6B3E45E9A880DAF06 /* AwaitKit-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AwaitKit-umbrella.h"; sourceTree = ""; }; + 46483C6A458E254B835B1DAA7A2878A6 /* SipHash-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SipHash-dummy.m"; sourceTree = ""; }; + 46C10B7A9E05A69FEC3FBA09F90B1B0E /* argon2-encoding.c */ = {isa = PBXFileReference; includeInIndex = 1; name = "argon2-encoding.c"; path = "src/libsodium/crypto_pwhash/argon2/argon2-encoding.c"; sourceTree = ""; }; + 46FB6E902413F264FAE4696BF57F9439 /* obsolete.c */ = {isa = PBXFileReference; includeInIndex = 1; name = obsolete.c; path = src/libsodium/crypto_sign/ed25519/ref10/obsolete.c; sourceTree = ""; }; + 470AAE575CDF5DB94A841E2FAAB0BEFA /* eckey_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = eckey_impl.h; path = secp256k1_ios/src/eckey_impl.h; sourceTree = ""; }; + 478BE0257179D940A8B8D1CDCEE3BCF8 /* Blowfish+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Blowfish+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Blowfish+Foundation.swift"; sourceTree = ""; }; + 48325FEA6DA709500C1D9FBD8D2F4152 /* Error.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Error.swift; path = Sources/Error.swift; sourceTree = ""; }; + 48DEC7B142327F649F16B6A3B2173481 /* scalar.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar.h; path = secp256k1_ios/src/scalar.h; sourceTree = ""; }; + 4929A93CF65EE3863C0CF7421174242A /* Zalgo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Zalgo.swift; path = Sources/Zalgo.swift; sourceTree = ""; }; + 49DBE8708C3FB343660636A56C0F5CFC /* 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 = ""; }; + 49F50AA2D7F488D13023A1F3DCE5D554 /* crypto_pwhash_scryptsalsa208sha256.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_pwhash_scryptsalsa208sha256.h; path = Sodium/libsodium/crypto_pwhash_scryptsalsa208sha256.h; sourceTree = ""; }; + 4AFAAF8AE3A927D901DAD3CAED357790 /* SipHash.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SipHash.framework; path = SipHash.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 4B0F4AB89F59EC16D1FFED1075233D4B /* BigInt.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = BigInt.framework; path = BigInt.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 4B48F416E53A88C68ACD28CCF2D8DD04 /* Bit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Bit.swift; path = Sources/CryptoSwift/Bit.swift; sourceTree = ""; }; + 4BB2BADEA4D608FFA33189742852DE10 /* core.c */ = {isa = PBXFileReference; includeInIndex = 1; name = core.c; path = src/libsodium/sodium/core.c; sourceTree = ""; }; + 4BB5D6A2398A86AEE160E6CC065A9743 /* crypto_pwhash_argon2id.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_pwhash_argon2id.h; path = Sodium/libsodium/crypto_pwhash_argon2id.h; sourceTree = ""; }; + 4C020ADA019EA1026DAA6DB93D358824 /* CTR.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CTR.swift; path = Sources/CryptoSwift/BlockMode/CTR.swift; sourceTree = ""; }; + 4C15A8CBB2CE353FB834AE5DA818A261 /* PromiseKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = PromiseKit.modulemap; sourceTree = ""; }; + 4CCFCF37DD44E78374826B4F63EB3A7B /* num_gmp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = num_gmp.h; path = secp256k1_ios/src/num_gmp.h; sourceTree = ""; }; + 4D7A617C500889B011493D21FE7A4788 /* TaskDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TaskDelegate.swift; path = Source/TaskDelegate.swift; sourceTree = ""; }; + 4E9C8E6D6E8B32B5AB5E0A3A44D0ADB1 /* Sign.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Sign.swift; path = Sodium/Sign.swift; sourceTree = ""; }; + 4EAA1484F58CBC589EE7F19BE6A71816 /* 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 = ""; }; 4ED3F06CEF9C3AAD0F577E74AC6C7071 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 4EEF66FB0714B796614B1D411FCA6804 /* Request.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Request.swift; path = Source/Request.swift; sourceTree = ""; }; - 4FB2012EA92E6D60B1F8635B2365EFE3 /* CALayer+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "CALayer+AnyPromise.m"; path = "Extensions/QuartzCore/Sources/CALayer+AnyPromise.m"; sourceTree = ""; }; - 4FD5AE38046C697D47E965FFF3240861 /* crypto_scalarmult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_scalarmult.h; path = Sodium/libsodium/crypto_scalarmult.h; sourceTree = ""; }; - 506DD7EC4AEFA9ABC3A8270D0F5B6728 /* aead_xchacha20poly1305.c */ = {isa = PBXFileReference; includeInIndex = 1; name = aead_xchacha20poly1305.c; path = src/libsodium/crypto_aead/xchacha20poly1305/sodium/aead_xchacha20poly1305.c; sourceTree = ""; }; - 5073FD40A4668B8891483BF7B846F2E9 /* export.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = export.h; path = Sodium/libsodium/export.h; sourceTree = ""; }; - 51A8D6EE4030FB23F41DE19D64792230 /* 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 = ""; }; - 53CA490432DB98016EDCC5C8FB644E12 /* 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 = ""; }; - 53E02D0F59804EFA620F2B47137F186B /* after.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = after.swift; path = Sources/after.swift; sourceTree = ""; }; - 53E2FF4CDFE83A52651978AE5802CDB6 /* Timeline.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Timeline.swift; path = Source/Timeline.swift; sourceTree = ""; }; - 54323F849787990A3D0ADB3332A51EF9 /* BlockCipher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockCipher.swift; path = Sources/CryptoSwift/BlockCipher.swift; sourceTree = ""; }; - 5485CC081D9484806CB46750B04EF2F8 /* Random.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Random.swift; path = sources/Random.swift; sourceTree = ""; }; - 54A7317C51E1282B6975715D070F21E9 /* crypto_secretbox_xsalsa20poly1305.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_secretbox_xsalsa20poly1305.h; path = Sodium/libsodium/crypto_secretbox_xsalsa20poly1305.h; sourceTree = ""; }; - 55B142AD0CA5A5FEA009BACDB3E833F4 /* 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 = ""; }; - 55D1A93C6998B29E6865786A334D6BD1 /* 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 = ""; }; - 55F79C1A81BE69AC0D45F01396EB56AC /* crypto_box_easy.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_box_easy.c; path = src/libsodium/crypto_box/crypto_box_easy.c; sourceTree = ""; }; - 5612CA2C2894935DA376198E451D3182 /* x25519_ref10.c */ = {isa = PBXFileReference; includeInIndex = 1; name = x25519_ref10.c; path = src/libsodium/crypto_scalarmult/curve25519/ref10/x25519_ref10.c; sourceTree = ""; }; - 5754A07E19B7D183E04F04ABFEEEBB7B /* crypto_sign_ed25519.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_sign_ed25519.h; path = Sodium/libsodium/crypto_sign_ed25519.h; sourceTree = ""; }; - 58BCD115D3035669AF954578C9C9E30B /* Division.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Division.swift; path = sources/Division.swift; sourceTree = ""; }; - 58C76624A45228A50EBA19A00433E427 /* verify.c */ = {isa = PBXFileReference; includeInIndex = 1; name = verify.c; path = src/libsodium/crypto_verify/sodium/verify.c; sourceTree = ""; }; - 58EAA8B24BF0FF0E582B2077B0E65675 /* Array+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Array+Extensions.swift"; path = "Sources/CryptoSwift/Array+Extensions.swift"; sourceTree = ""; }; + 4F081C8188E08175788D1B747A9497E4 /* Stream.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Stream.swift; path = Sodium/Stream.swift; sourceTree = ""; }; + 4F8710FAEF27BCA4066637B64DCFBF59 /* MultipartFormData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MultipartFormData.swift; path = Source/MultipartFormData.swift; sourceTree = ""; }; + 4F97D749C6DE723166FB1C1B1CED8252 /* URLDataPromise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = URLDataPromise.swift; path = Extensions/Foundation/Sources/URLDataPromise.swift; sourceTree = ""; }; + 504FCEBD6653EEDDE9D78256E1E075E4 /* Alamofire.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Alamofire.framework; path = Alamofire.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 5146777967E221509D2284182907726C /* BlockCipher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockCipher.swift; path = Sources/CryptoSwift/BlockCipher.swift; sourceTree = ""; }; + 523BD1513B740E697C87C0ABCEB0C9DC /* ZeroPadding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ZeroPadding.swift; path = Sources/CryptoSwift/ZeroPadding.swift; sourceTree = ""; }; + 524FE5AC9C63DBC074545CD4CC6DB23B /* crypto_core_salsa208.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_core_salsa208.h; path = Sodium/libsodium/crypto_core_salsa208.h; sourceTree = ""; }; + 5300D14CE117C7D7545FFBE8333A53C3 /* 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 = ""; }; + 535DE36EBDF24B535FE9E6BA837338CE /* BlockModeWorker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockModeWorker.swift; path = Sources/CryptoSwift/BlockMode/BlockModeWorker.swift; sourceTree = ""; }; + 54207FC409F4E18EF6FDDE2391BAE918 /* secp256k1_ios-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "secp256k1_ios-umbrella.h"; sourceTree = ""; }; + 542825134C42996A21D3651CB78C4747 /* NetworkReachabilityManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkReachabilityManager.swift; path = Source/NetworkReachabilityManager.swift; sourceTree = ""; }; + 54328FC1E9FD7FBA511EF8034F7E1383 /* 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 = ""; }; + 5432D637C176B1115030CFBB2964B8E0 /* 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 = ""; }; + 54BC56C20AF340B4ACCC9CA8FB8EEFF7 /* PKCS7Padding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKCS7Padding.swift; path = Sources/CryptoSwift/PKCS/PKCS7Padding.swift; sourceTree = ""; }; + 55404F2D8B8FC884ACE8D8CDD8C416EC /* Hashable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Hashable.swift; path = sources/Hashable.swift; sourceTree = ""; }; + 56619F425F23D77AF457BE2A793FAEB7 /* PromiseKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = PromiseKit.xcconfig; sourceTree = ""; }; + 5683C01BDF139FF1A92B70D911690B7D /* crypto_stream.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_stream.h; path = src/libsodium/include/sodium/crypto_stream.h; sourceTree = ""; }; + 56C9D15997923C0E855B94F27980598B /* Sodium.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Sodium.framework; path = Sodium.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 56E0547174C288ED39F469015C8DE4AE /* 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 = ""; }; + 5766CA36AAD59C7614DA7EC55F6BD087 /* group_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = group_impl.h; path = secp256k1_ios/src/group_impl.h; sourceTree = ""; }; + 5790BDDFF0DCACA8FC7DC2D618F5C169 /* 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 = ""; }; + 5792C0F8AAB58BC44150BFF087A53277 /* join.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = join.m; path = Sources/join.m; sourceTree = ""; }; + 58802F8DA178E689F6CFAFFCE483F07C /* 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 = ""; }; + 59665BEBF830451CDD9D7CD5599B8D9F /* crypto_secretbox.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_secretbox.c; path = src/libsodium/crypto_secretbox/crypto_secretbox.c; sourceTree = ""; }; + 599471E29D2F9AB475B89739038C567A /* randombytes_sysrandom.c */ = {isa = PBXFileReference; includeInIndex = 1; name = randombytes_sysrandom.c; path = src/libsodium/randombytes/sysrandom/randombytes_sysrandom.c; sourceTree = ""; }; + 59B9314071BF7E772E3F9AD3830A9783 /* crypto_secretbox_easy.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_secretbox_easy.c; path = src/libsodium/crypto_secretbox/crypto_secretbox_easy.c; sourceTree = ""; }; + 59C3BBEE7C44DBF3FF9A530A1F10C849 /* 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 = ""; }; + 5A7FEDADFAC08A2326F910EFBD8D22DA /* CryptoSwift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "CryptoSwift-dummy.m"; sourceTree = ""; }; 5A9A555A4CB5C94FF77876AD171CBBB4 /* 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; }; - 5AB40F5A84F17AACFDEF5A7F420D25DD /* NSNotificationCenter+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSNotificationCenter+AnyPromise.h"; path = "Extensions/Foundation/Sources/NSNotificationCenter+AnyPromise.h"; sourceTree = ""; }; - 5AB8DC76F32E4364588368BA5ADCBF61 /* BigInt.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = BigInt.framework; path = BigInt.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 5B14D46C50F636BE8E466D520963604E /* Auth.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Auth.swift; path = Sodium/Auth.swift; sourceTree = ""; }; - 5B1A31456BDB6A463717508CF35477F5 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 5B3BC3576E2A2CD1B0E2022637747FC1 /* 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 = ""; }; - 5B64FB102372A10F02A723C8DB324236 /* PMKUIKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PMKUIKit.h; path = Extensions/UIKit/Sources/PMKUIKit.h; sourceTree = ""; }; - 5CEA11E5873E67E86630A39D7EB8B2A3 /* 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 = ""; }; - 5D6880B39A46D38EDFC3673C6F03942F /* salsa20_ref.c */ = {isa = PBXFileReference; includeInIndex = 1; name = salsa20_ref.c; path = src/libsodium/crypto_stream/salsa20/ref/salsa20_ref.c; sourceTree = ""; }; - 5EDD5946C6A97197B7641A16723E2C20 /* libsodium-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "libsodium-prefix.pch"; sourceTree = ""; }; - 5F181056A496433180F2706C91F92BF7 /* Bit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Bit.swift; path = Sources/CryptoSwift/Bit.swift; sourceTree = ""; }; - 601D68425F844CE65F5C2B4CBB93BD2F /* Prime Test.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Prime Test.swift"; path = "sources/Prime Test.swift"; sourceTree = ""; }; + 5AEB5F7824D0BB82D60F77B677272440 /* crypto_secretbox.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_secretbox.h; path = src/libsodium/include/sodium/crypto_secretbox.h; sourceTree = ""; }; + 5B1385C27F951BEEAC66BA0AC7669318 /* 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 = ""; }; + 5C196DE93DF11E6172D895A33FBD32CE /* 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 = ""; }; + 5CC242181B292323C1ADA4B0F3A8BBAA /* auth_hmacsha256.c */ = {isa = PBXFileReference; includeInIndex = 1; name = auth_hmacsha256.c; path = src/libsodium/crypto_auth/hmacsha256/auth_hmacsha256.c; sourceTree = ""; }; + 5CDA2AED9BCEC68B3DB3554A8F1152BB /* crypto_onetimeauth.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_onetimeauth.h; path = Sodium/libsodium/crypto_onetimeauth.h; sourceTree = ""; }; + 5D11481448FC728BF294A952BC6B613B /* 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 = ""; }; + 5EE8E9BEE5CDCA8F1C6E53427F60D55C /* 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 = ""; }; + 5F1731254D7AC27611BF2A5B5BC102E9 /* Shifts.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Shifts.swift; path = sources/Shifts.swift; sourceTree = ""; }; + 5F544855B13A11A23E32CA2E7611394F /* Words and Bits.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Words and Bits.swift"; path = "sources/Words and Bits.swift"; sourceTree = ""; }; + 5FA2FE36770EF846EC9857FCCA53E0B8 /* sodium_lib.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = sodium_lib.h; path = Sodium/libsodium/sodium_lib.h; sourceTree = ""; }; 6023F205D9959B2DEA3718EAAE91B6D1 /* Pods-web3swift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-web3swift-dummy.m"; sourceTree = ""; }; - 60D55A072599984F595CA89E5548C732 /* crypto_stream_chacha20.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_stream_chacha20.h; path = Sodium/libsodium/crypto_stream_chacha20.h; sourceTree = ""; }; - 614E21038A2EFBF5D16668B5AD9319D2 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 617FCEDFE88862D121167BCFAD12C8F1 /* stream_xchacha20.c */ = {isa = PBXFileReference; includeInIndex = 1; name = stream_xchacha20.c; path = src/libsodium/crypto_stream/xchacha20/stream_xchacha20.c; sourceTree = ""; }; - 628C99C774EFD164B3BCD529B1CC9452 /* KeyExchange.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KeyExchange.swift; path = Sodium/KeyExchange.swift; sourceTree = ""; }; - 62DB12E71BD7D9374B61B2B37A446894 /* auth_hmacsha512.c */ = {isa = PBXFileReference; includeInIndex = 1; name = auth_hmacsha512.c; path = src/libsodium/crypto_auth/hmacsha512/auth_hmacsha512.c; sourceTree = ""; }; - 62E8E74D8EA1F18BBF9764CBA8CC2840 /* consts.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = consts.h; path = src/libsodium/crypto_stream/aes128ctr/nacl/consts.h; sourceTree = ""; }; - 63323E9B800FE8CDA25BC895FC1E3B2C /* stream_salsa2012.c */ = {isa = PBXFileReference; includeInIndex = 1; name = stream_salsa2012.c; path = src/libsodium/crypto_stream/salsa2012/stream_salsa2012.c; sourceTree = ""; }; - 63D33E9236AA92C503A75F7FDBDD3C94 /* crypto_secretbox.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_secretbox.c; path = src/libsodium/crypto_secretbox/crypto_secretbox.c; sourceTree = ""; }; - 6418FB6338F0EA93B24A61DA176171B3 /* crypto_generichash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_generichash.h; path = src/libsodium/include/sodium/crypto_generichash.h; sourceTree = ""; }; - 64E5F50B881BC161C6BC3ACADBE29679 /* crypto_pwhash.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_pwhash.c; path = src/libsodium/crypto_pwhash/crypto_pwhash.c; sourceTree = ""; }; - 654C3EB91BB5C33EFBC41C95F729108E /* SipHash-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SipHash-dummy.m"; sourceTree = ""; }; - 65C4E40F4D1A8FE089D576CA83CDEB57 /* 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 = ""; }; - 65C97BC6557C4BA17D605808D72A218B /* UIViewController+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIViewController+Promise.swift"; path = "Extensions/UIKit/Sources/UIViewController+Promise.swift"; sourceTree = ""; }; - 6674A86EFFEEC83CC10F2D198A678B05 /* AwaitKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = AwaitKit.framework; path = AwaitKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 6684B83B1C27095CE205E5E089ED7F7E /* 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 = ""; }; - 66BC8AB794E5AEC7CD041FFF73A7F309 /* Operators.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Operators.swift; path = Sources/CryptoSwift/Operators.swift; sourceTree = ""; }; - 66BC94970CED446B2BDEF5AE336671E4 /* 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 = ""; }; - 66D47623B03864DAB77ABD331BEA3EEB /* 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 = ""; }; - 66E6A8118A5FF4ECB263CE796EB2B918 /* scrypt_platform.c */ = {isa = PBXFileReference; includeInIndex = 1; name = scrypt_platform.c; path = src/libsodium/crypto_pwhash/scryptsalsa208sha256/scrypt_platform.c; sourceTree = ""; }; - 66FA87445DE5FDF4005EE48476B2F018 /* crypto_kdf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_kdf.h; path = Sodium/libsodium/crypto_kdf.h; sourceTree = ""; }; - 680028695EBB33D20595E1AEBA356238 /* Rabbit+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Rabbit+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Rabbit+Foundation.swift"; sourceTree = ""; }; - 68995304898E60BDD23D474DEF305CBD /* String+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+Extension.swift"; path = "Sources/CryptoSwift/String+Extension.swift"; sourceTree = ""; }; - 699FF09F4E5D5928D4DE8CB8D495B093 /* AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AnyPromise.h; path = Sources/AnyPromise.h; sourceTree = ""; }; - 69A82590A5422AE2BBD41399F35789A1 /* 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 = ""; }; + 6073EE64D441EB045BD0A8D8B99828E0 /* libsodium-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "libsodium-umbrella.h"; sourceTree = ""; }; + 6087FE7B05DEF85DE89A643641FB7C0A /* 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 = ""; }; + 616D848F3B3563FFBFD1D6333B439FC8 /* MD5.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MD5.swift; path = Sources/CryptoSwift/MD5.swift; sourceTree = ""; }; + 620DAE2D1ADF10355B3E2529A23BF940 /* 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 = ""; }; + 6217EDEF8B18BA426738F0C815CB5CEE /* join.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = join.swift; path = Sources/join.swift; sourceTree = ""; }; + 622056252CEDA40400CA2753B71BAFE6 /* pwhash_scryptsalsa208sha256.c */ = {isa = PBXFileReference; includeInIndex = 1; name = pwhash_scryptsalsa208sha256.c; path = src/libsodium/crypto_pwhash/scryptsalsa208sha256/pwhash_scryptsalsa208sha256.c; sourceTree = ""; }; + 62E5093BFA3E697040C1C87A6F44BB51 /* scalar_4x64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_4x64.h; path = secp256k1_ios/src/scalar_4x64.h; sourceTree = ""; }; + 62E778C659906882B5592ACE72EF6258 /* 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 = ""; }; + 62FC06AFAA06A8B4881A4B638C47F78A /* util.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = util.h; path = secp256k1_ios/src/util.h; sourceTree = ""; }; + 631496EB589CA5F21A91F8BAC9B63171 /* field.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field.h; path = secp256k1_ios/src/field.h; sourceTree = ""; }; + 643A9A72CDF2C67559B27519176483F3 /* version.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = version.h; path = src/libsodium/include/sodium/version.h; sourceTree = ""; }; + 64D78390E8F801C0E70643C5DC1EB0B3 /* AwaitKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AwaitKit-prefix.pch"; sourceTree = ""; }; + 654B8DF1C6956ACCBB28DAD69AAD4524 /* Alamofire-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-prefix.pch"; sourceTree = ""; }; + 6583EB655E29E9C6B68A647052801DAE /* Cipher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cipher.swift; path = Sources/CryptoSwift/Cipher.swift; sourceTree = ""; }; + 665F4D2AD8D7E4A14F95CB57C022B375 /* crypto_kx.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_kx.c; path = src/libsodium/crypto_kx/crypto_kx.c; sourceTree = ""; }; + 66AB214C94A062D30EE83206E4961AC7 /* 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 = ""; }; + 66DB1566220A991E843B1BEDEAE5CEC6 /* UInt16+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt16+Extension.swift"; path = "Sources/CryptoSwift/UInt16+Extension.swift"; sourceTree = ""; }; + 66E96D2EE75CC47D2B882C23356ABD3D /* ecdsa.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecdsa.h; path = secp256k1_ios/src/ecdsa.h; sourceTree = ""; }; + 67338E52E3E15864C350471B7C9D0C9F /* 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 = ""; }; + 67708937FDBA62B41366624177A37644 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 68702A3A19892E502030605B3F934569 /* ChaCha20.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ChaCha20.swift; path = Sources/CryptoSwift/ChaCha20.swift; sourceTree = ""; }; + 68CA01C773F279980B3D1A83F49CA3D3 /* Array+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Array+Extension.swift"; path = "Sources/CryptoSwift/Array+Extension.swift"; sourceTree = ""; }; + 68CBE3BD09BB16C6556338D87E6854F6 /* 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 = ""; }; + 690DC0113B257B0C12616123C8C25137 /* AwaitKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = AwaitKit.framework; path = AwaitKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 69181C49D9BB8CBEF39C29E2E6F0E515 /* crypto_generichash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_generichash.h; path = src/libsodium/include/sodium/crypto_generichash.h; sourceTree = ""; }; 69EBB0FD91D358560905C6D809C2F904 /* Pods-web3swiftTests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-web3swiftTests-umbrella.h"; sourceTree = ""; }; - 6AB60DE35329FECA2439A0C22D46A928 /* 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 = ""; }; - 6B589E74E26DBF1F82FA947C9530E57E /* crypto_stream_xchacha20.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_stream_xchacha20.h; path = Sodium/libsodium/crypto_stream_xchacha20.h; sourceTree = ""; }; - 6C781EDE8A34E27850F8974D8A562DE2 /* crypto_aead_xchacha20poly1305.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_aead_xchacha20poly1305.h; path = Sodium/libsodium/crypto_aead_xchacha20poly1305.h; sourceTree = ""; }; - 6E42C73C44A8276D98700E6835108B24 /* crypto_secretbox.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_secretbox.h; path = Sodium/libsodium/crypto_secretbox.h; sourceTree = ""; }; - 6F893CA360FAEDC549E5943F84B640DD /* 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 = ""; }; - 6FA593596427B4960926155B13009C29 /* SipHash-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SipHash-umbrella.h"; sourceTree = ""; }; - 700749FE72D20A35BD810D6A1C009883 /* u8.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = u8.h; path = src/libsodium/crypto_stream/chacha20/dolbeau/u8.h; sourceTree = ""; }; - 702BBA9585D507E1C04742322173DA70 /* crypto_sign.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_sign.h; path = Sodium/libsodium/crypto_sign.h; sourceTree = ""; }; - 704BDB95EE949F84EA5F569832FEBFC6 /* 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 = ""; }; - 710C4522253003B2E77E1E5A15F60E3F /* 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 = ""; }; - 71F1C4E9A13CCA5ED4DB3453E54699DE /* consts_aes128ctr.c */ = {isa = PBXFileReference; includeInIndex = 1; name = consts_aes128ctr.c; path = src/libsodium/crypto_stream/aes128ctr/nacl/consts_aes128ctr.c; sourceTree = ""; }; - 72D4FBFB3F620F3965D92AD62A12C79B /* core.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = core.h; path = Sodium/libsodium/core.h; sourceTree = ""; }; - 735C5EF41E9DA9E734D2ACEC8E98CD3C /* 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 = ""; }; - 736C4999BD3D653E8137A15677C01959 /* secretbox_xsalsa20poly1305.c */ = {isa = PBXFileReference; includeInIndex = 1; name = secretbox_xsalsa20poly1305.c; path = src/libsodium/crypto_secretbox/xsalsa20poly1305/secretbox_xsalsa20poly1305.c; sourceTree = ""; }; - 73C11BBD803B2F3855FAD67FED2D7A41 /* 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 = ""; }; + 6A195FF30991D0863F1542B5325CC87F /* UIViewController+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+AnyPromise.m"; path = "Extensions/UIKit/Sources/UIViewController+AnyPromise.m"; sourceTree = ""; }; + 6B9C3B5A326486FB7260424DEAFA0C2B /* wrap.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = wrap.swift; path = Sources/wrap.swift; sourceTree = ""; }; + 6C20D099B353A1338109F5A02B916D4E /* NSObject+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSObject+Promise.swift"; path = "Extensions/Foundation/Sources/NSObject+Promise.swift"; sourceTree = ""; }; + 6C40002B6AB23ADFFDB564AAAB5B2E00 /* Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Alamofire.swift; path = Source/Alamofire.swift; sourceTree = ""; }; + 6C4B8CD312FF8333FB6CEF89B6BBDE02 /* UInt32+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt32+Extension.swift"; path = "Sources/CryptoSwift/UInt32+Extension.swift"; sourceTree = ""; }; + 6D9D11493E3EE35AD3B313FF74EA7557 /* u1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = u1.h; path = src/libsodium/crypto_stream/salsa20/xmm6int/u1.h; sourceTree = ""; }; + 6E1889A8DC1C478F64035CFE6C4913A8 /* crypto_stream_salsa208.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_stream_salsa208.h; path = Sodium/libsodium/crypto_stream_salsa208.h; sourceTree = ""; }; + 6E73A7514C4BCAE2D2B885AED23D5FC8 /* PMKFoundation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PMKFoundation.h; path = Extensions/Foundation/Sources/PMKFoundation.h; sourceTree = ""; }; + 6E74EC7BB0D56771EDD3E24321F7BBF9 /* 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 = ""; }; + 6EAC2CB20F0056806271A830A16836AA /* 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 = ""; }; + 6ED5B2A162192FC4D529A1D45A6FFF7D /* HMAC+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "HMAC+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/HMAC+Foundation.swift"; sourceTree = ""; }; + 6F86BA9EE60961E0634E43644A0BEAE2 /* crypto_secretbox.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_secretbox.h; path = Sodium/libsodium/crypto_secretbox.h; sourceTree = ""; }; + 702D841E2DE003BE799230FEDCF3FA33 /* 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 = ""; }; + 705280A66E79CB7004A3FECADFB45240 /* DispatchQueue+Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DispatchQueue+Alamofire.swift"; path = "Source/DispatchQueue+Alamofire.swift"; sourceTree = ""; }; + 707EF3CE91267D68E9CCC8A76D34975F /* KeyExchange.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KeyExchange.swift; path = Sodium/KeyExchange.swift; sourceTree = ""; }; + 7137563945A9007C26CC8B7FBBA2CBFA /* sign.c */ = {isa = PBXFileReference; includeInIndex = 1; name = sign.c; path = src/libsodium/crypto_sign/ed25519/ref10/sign.c; sourceTree = ""; }; + 71692031281C2400AE2BAE861C032B9A /* PMKUIKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PMKUIKit.h; path = Extensions/UIKit/Sources/PMKUIKit.h; sourceTree = ""; }; + 7237A479ED7621A9ED30984CCD5B5978 /* 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 = ""; }; + 72782FF26452FDF3B5CEE5F077A8CF86 /* crypto_kdf_blake2b.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_kdf_blake2b.h; path = Sodium/libsodium/crypto_kdf_blake2b.h; sourceTree = ""; }; + 7297728853CE6C15038E1195BD36B48F /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 72DE4BB180DBCC97B6181FF78F6CE4DD /* poly1305_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = poly1305_sse2.c; path = src/libsodium/crypto_onetimeauth/poly1305/sse2/poly1305_sse2.c; sourceTree = ""; }; + 72FE1A7DE05FE1BC7004B1E14B5A7CED /* crypto_core_salsa2012.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_core_salsa2012.h; path = Sodium/libsodium/crypto_core_salsa2012.h; sourceTree = ""; }; + 739F5BD35F3CE84CBCE0EECAB410190D /* 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 = ""; }; 74474DAE402C92929A98886E26066EFC /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 74699ACCB2550A55DD1141258DC6C2DA /* 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 = ""; }; - 74DAB21397096EFF1772C7AE4A626D8F /* runtime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = runtime.h; path = Sodium/libsodium/runtime.h; sourceTree = ""; }; - 760B26E0B47A6F1464A65A0AD98AEF89 /* DispatchQueue+Async.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DispatchQueue+Async.swift"; path = "Sources/DispatchQueue+Async.swift"; sourceTree = ""; }; - 762DD7C89E8377486C87C1C8AE58BA43 /* crypto_stream.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_stream.c; path = src/libsodium/crypto_stream/crypto_stream.c; sourceTree = ""; }; - 7630AC45DB36C1B1782FE330D62FC64C /* AwaitKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = AwaitKit.modulemap; sourceTree = ""; }; - 769B93DF09542C97D6A850E4EB6A7A09 /* ParameterEncoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ParameterEncoding.swift; path = Source/ParameterEncoding.swift; sourceTree = ""; }; - 76E424823DC86741C9A842A265D41BE4 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 77647289EC7EC8242C586D386B03A75A /* crypto_verify_16.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_verify_16.h; path = Sodium/libsodium/crypto_verify_16.h; sourceTree = ""; }; - 7767B1C235F27A8B67815FC617BB03A2 /* 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 = ""; }; - 779AB1A206CC9D7758AB6B53AE0C74C0 /* crypto_core_curve25519.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_core_curve25519.h; path = Sodium/libsodium/crypto_core_curve25519.h; sourceTree = ""; }; - 779D3415C252E3D9F6123C54634349F0 /* 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 = ""; }; - 785F8ED3587D35DF586E9E2B5CA20490 /* crypto_hash_sha256.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_hash_sha256.h; path = Sodium/libsodium/crypto_hash_sha256.h; sourceTree = ""; }; - 7886C5024CC7A555B54858183732C13B /* PKCS7.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKCS7.swift; path = Sources/CryptoSwift/PKCS/PKCS7.swift; sourceTree = ""; }; - 79F9F83CE060EC44F6FF64D7AA1DB5DE /* utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = utils.h; path = Sodium/libsodium/utils.h; sourceTree = ""; }; - 7B58E032BB65FB27FB8C69E748BD7092 /* CryptoSwift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CryptoSwift-umbrella.h"; sourceTree = ""; }; + 74E8A63180EC28D4E45AC04BCBCC3E26 /* Generics.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Generics.swift; path = Sources/CryptoSwift/Generics.swift; sourceTree = ""; }; + 750DEB4F0053A5D0D061D7D8BD480CF9 /* core_hchacha20.c */ = {isa = PBXFileReference; includeInIndex = 1; name = core_hchacha20.c; path = src/libsodium/crypto_core/hchacha20/core_hchacha20.c; sourceTree = ""; }; + 754CA0FF649AA40DCE19AD810BA021E2 /* NSNotificationCenter+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSNotificationCenter+AnyPromise.h"; path = "Extensions/Foundation/Sources/NSNotificationCenter+AnyPromise.h"; sourceTree = ""; }; + 7585A4AC74E781A65EB8FD64C1DEB0AD /* Random.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Random.swift; path = sources/Random.swift; sourceTree = ""; }; + 770D18C5486F7A370B1BE0D6F355DC48 /* libsecp256k1-config.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "libsecp256k1-config.h"; path = "secp256k1_ios/libsecp256k1-config.h"; sourceTree = ""; }; + 7715AEC23705AE0548E8D82B38137082 /* 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 = ""; }; + 771D25E0072B760399A96895664C8332 /* 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 = ""; }; + 772E661C30FFBAF7A90E1ABEB7A11491 /* 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 = ""; }; + 774924A94778725E225510B3A46DC462 /* UIView+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+AnyPromise.h"; path = "Extensions/UIKit/Sources/UIView+AnyPromise.h"; sourceTree = ""; }; + 778BFC7BDE2A9FB8579B1E18D8BA8BCE /* NoPadding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NoPadding.swift; path = Sources/CryptoSwift/NoPadding.swift; sourceTree = ""; }; + 77F42C7C67813AC2AB4076A173D1D0D7 /* 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 = ""; }; + 7800523276CC5E8FD108C4330701B0E8 /* secp256k1_ios-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "secp256k1_ios-dummy.m"; sourceTree = ""; }; + 789B599CCA6C037989115E6E029B4694 /* randombytes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = randombytes.h; path = Sodium/libsodium/randombytes.h; sourceTree = ""; }; + 792AAB0B868BF7B27DB74C78D18F5B89 /* 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 = ""; }; + 7939E635B1B11605171D4005B536B633 /* 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 = ""; }; + 79A14242D6ED138AAA97062D1DD8C001 /* crypto_core_curve25519.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_core_curve25519.h; path = Sodium/libsodium/crypto_core_curve25519.h; sourceTree = ""; }; + 7A2928D5D2EDB93525D5CFBB8CDF92F9 /* NSURLSession+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSURLSession+Promise.swift"; path = "Extensions/Foundation/Sources/NSURLSession+Promise.swift"; sourceTree = ""; }; + 7A391940DE501B6BE125DC83AB2795A8 /* curve25519_sandy2x.c */ = {isa = PBXFileReference; includeInIndex = 1; name = curve25519_sandy2x.c; path = src/libsodium/crypto_scalarmult/curve25519/sandy2x/curve25519_sandy2x.c; sourceTree = ""; }; + 7ACBA4291AC8B1FF023A2FAEAC5841E5 /* common.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = common.h; path = src/libsodium/crypto_stream/aes128ctr/nacl/common.h; sourceTree = ""; }; + 7B425AC0F76945E78E0C254BB86ABBCF /* 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 = ""; }; 7B797C5F77D4619E0CFBE4442D5D504B /* PromiseKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PromiseKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 7B7E55FB8AC8C5DE92BEEBFFFEC16571 /* Cryptors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cryptors.swift; path = Sources/CryptoSwift/Cryptors.swift; sourceTree = ""; }; - 7BE4D1E91920CC385DF4FDFBCB9CA797 /* Primitive Types.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Primitive Types.swift"; path = "SipHash/Primitive Types.swift"; sourceTree = ""; }; - 7D08F082492906EB2BD8456D2230104C /* version.c */ = {isa = PBXFileReference; includeInIndex = 1; name = version.c; path = src/libsodium/sodium/version.c; sourceTree = ""; }; - 7D58513B687622AA3CC3068EF7F4B9BC /* Data+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data+Extension.swift"; path = "Sources/CryptoSwift/Foundation/Data+Extension.swift"; sourceTree = ""; }; - 7D6C9B172D5F3AFF240C67087DC931E5 /* 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 = ""; }; - 7E09382ABF7A5A2682C537DAB06578F9 /* Promise+Properties.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Promise+Properties.swift"; path = "Sources/Promise+Properties.swift"; sourceTree = ""; }; - 7E27AA7A536407EC3A92F647F5756C19 /* blake2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = blake2.h; path = src/libsodium/crypto_generichash/blake2b/ref/blake2.h; sourceTree = ""; }; - 7E60F04E66BB9E412F4A4FD1576F34D9 /* 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 = ""; }; - 7EA5E5D26A7382662FEB3DC5931A0ADA /* HMAC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HMAC.swift; path = Sources/CryptoSwift/HMAC.swift; sourceTree = ""; }; - 7EEB20C2A43940582B1D5043763669FC /* Subtraction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Subtraction.swift; path = sources/Subtraction.swift; sourceTree = ""; }; - 7F1CE0B44B9A687132B526D2A5DCAF2D /* Sodium.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Sodium.framework; path = Sodium.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 7F34D5C96F9FD31203F261805F557EBB /* PBKDF2.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PBKDF2.swift; path = Sources/CryptoSwift/PKCS/PBKDF2.swift; sourceTree = ""; }; + 7BC2C7859F38D7C0817524F193AA9D26 /* Pods_web3swiftTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_web3swiftTests.framework; path = "Pods-web3swiftTests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + 7C1BD596E6DBB0FFE3391A9154C2B437 /* 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 = ""; }; + 7C54C74AB7DC5B51E6F6C0C871294708 /* crypto_kx.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_kx.h; path = src/libsodium/include/sodium/crypto_kx.h; sourceTree = ""; }; + 7D4648EE27E146BB24C2C0966CCCFC90 /* base.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = base.h; path = src/libsodium/crypto_core/curve25519/ref10/base.h; sourceTree = ""; }; + 7D64668DE17E1BE1BD58BEA89D001355 /* randombytes_nativeclient.c */ = {isa = PBXFileReference; includeInIndex = 1; name = randombytes_nativeclient.c; path = src/libsodium/randombytes/nativeclient/randombytes_nativeclient.c; sourceTree = ""; }; + 7DE97E5508C0A1FC70E47A0384BAB4BE /* crypto_auth.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_auth.h; path = Sodium/libsodium/crypto_auth.h; sourceTree = ""; }; + 7E9D884B37E08EB92C3743A4D61BF1C5 /* Result.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Result.swift; path = Source/Result.swift; sourceTree = ""; }; + 7EFA15D3576EDBAFFC58D99F393DD0D2 /* stream_aes128ctr.c */ = {isa = PBXFileReference; includeInIndex = 1; name = stream_aes128ctr.c; path = src/libsodium/crypto_stream/aes128ctr/stream_aes128ctr.c; sourceTree = ""; }; 7F57A9FE1E20F2DEE4AD323622D28AFA /* Pods-web3swift.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-web3swift.release.xcconfig"; sourceTree = ""; }; 7FB827FF073873B57FD2D295EED8AC1D /* Pods-web3Swift-Demo-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-web3Swift-Demo-acknowledgements.plist"; sourceTree = ""; }; - 810A660458029BAF298E260DAEC7F97B /* 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 = ""; }; - 816F8287AE67F71CED03AEA0081968F0 /* version.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = version.h; path = Sodium/libsodium/version.h; sourceTree = ""; }; - 818C8B149FF7EE7C277809CF9F4D17E3 /* 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 = ""; }; - 81AD82C45A2CFB1E14DF352809C728A9 /* race.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = race.swift; path = Sources/race.swift; sourceTree = ""; }; - 821D8AF502E093653280A955025F7EFB /* ChaCha20.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ChaCha20.swift; path = Sources/CryptoSwift/ChaCha20.swift; sourceTree = ""; }; - 82A8F6FF0C5CE4278B3E8649E000A8B3 /* Alamofire+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Alamofire+Promise.swift"; path = "Extensions/Alamofire/Sources/Alamofire+Promise.swift"; sourceTree = ""; }; - 8308E9636132D7AB4F64E0D796D57B78 /* stream_salsa20.c */ = {isa = PBXFileReference; includeInIndex = 1; name = stream_salsa20.c; path = src/libsodium/crypto_stream/salsa20/stream_salsa20.c; sourceTree = ""; }; - 8366E96CC3E2E52B17E56DAE63971787 /* crypto_core_ed25519.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_core_ed25519.h; path = Sodium/libsodium/crypto_core_ed25519.h; sourceTree = ""; }; + 8042D52348ADEAFA244CB22ED0365169 /* crypto_kx.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_kx.h; path = Sodium/libsodium/crypto_kx.h; sourceTree = ""; }; + 80603D9A2EE0D52DA2833C2709FC17A7 /* Utils.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Utils.swift; path = Sources/CryptoSwift/Utils.swift; sourceTree = ""; }; + 80C13C21DBA090DEF12D14076D0E0461 /* open.c */ = {isa = PBXFileReference; includeInIndex = 1; name = open.c; path = src/libsodium/crypto_sign/ed25519/ref10/open.c; sourceTree = ""; }; + 80DD8BD467A648B2B4F01DB4A1785BA3 /* hash_sha512.c */ = {isa = PBXFileReference; includeInIndex = 1; name = hash_sha512.c; path = src/libsodium/crypto_hash/sha512/hash_sha512.c; sourceTree = ""; }; + 8116C4E6FB1D91DFAA4F811A17CA432A /* crypto_core_ed25519.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_core_ed25519.h; path = Sodium/libsodium/crypto_core_ed25519.h; sourceTree = ""; }; + 811A188257A65A54B0195ADEDE05FE4A /* 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 = ""; }; + 812B5D47D26F96C9BAD3709A975FF469 /* 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 = ""; }; + 818E0694B30337BFF1853286160D3DE5 /* crypto_pwhash_argon2i.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_pwhash_argon2i.h; path = Sodium/libsodium/crypto_pwhash_argon2i.h; sourceTree = ""; }; + 819DCAE7FBC14CA0F442E18CF1F3AF90 /* String Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String Conversion.swift"; path = "sources/String Conversion.swift"; sourceTree = ""; }; + 82921EC6A1730DE76CF5F6B5482AE67A /* GenericHash.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GenericHash.swift; path = Sodium/GenericHash.swift; sourceTree = ""; }; + 82A2437B6C6C3672ABE44F418374365B /* verify.c */ = {isa = PBXFileReference; includeInIndex = 1; name = verify.c; path = src/libsodium/crypto_verify/sodium/verify.c; sourceTree = ""; }; + 82C4FBE06899BC1853500C9B2DB30656 /* Sodium-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Sodium-dummy.m"; sourceTree = ""; }; + 82F89689FA95E227AA1FD8078BBD5CAF /* generichash_blake2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = generichash_blake2.c; path = src/libsodium/crypto_generichash/blake2b/generichash_blake2.c; sourceTree = ""; }; + 832E9E85AFB0B83032EE656A1B2A6461 /* 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 = ""; }; + 835C70D7E6E084D1BBE284B20D872A00 /* AwaitKitExtension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AwaitKitExtension.swift; path = Sources/AwaitKitExtension.swift; sourceTree = ""; }; 8383A41CFD78D2044512958FDA9FEDEB /* Pods-web3Swift-Demo-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-web3Swift-Demo-frameworks.sh"; sourceTree = ""; }; - 83B42ADDF7C0717AC7296118C9D50D98 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 83FFEE5270B626523220CF563F49D074 /* crypto_kdf_blake2b.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_kdf_blake2b.h; path = Sodium/libsodium/crypto_kdf_blake2b.h; sourceTree = ""; }; - 8458DD49204B0E21C7055CB05FAFAC19 /* TaskDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TaskDelegate.swift; path = Source/TaskDelegate.swift; sourceTree = ""; }; - 8469AFD7F84F71CF0509C01E6E461BE6 /* 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 = ""; }; - 84BF9D2D5666F006E0E7C3DA91C3B056 /* Blowfish.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Blowfish.swift; path = Sources/CryptoSwift/Blowfish.swift; sourceTree = ""; }; - 84E71FA73F1D5874752FEF66FFB5DDF4 /* PromiseKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "PromiseKit-dummy.m"; sourceTree = ""; }; - 862DCE2EB70D3A635BEE5BCE21EC6297 /* Data Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data Conversion.swift"; path = "sources/Data Conversion.swift"; sourceTree = ""; }; - 8689D0D3F9A4C9E4C75D2B7E322D570A /* CryptoSwift.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = CryptoSwift.xcconfig; sourceTree = ""; }; - 86F4390692335E8406575A4CE4C4C02D /* Sodium.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Sodium.swift; path = Sodium/Sodium.swift; sourceTree = ""; }; - 871EE5D967757BE6326B4EF8141344B5 /* 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 = ""; }; - 875EF05C094CC91A4A20FEE91307CD82 /* MD5.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MD5.swift; path = Sources/CryptoSwift/MD5.swift; sourceTree = ""; }; - 87B331AC7C26EE9999B76D9E16AB8FA0 /* BigInt.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BigInt.swift; path = sources/BigInt.swift; sourceTree = ""; }; - 87BF8DF99F1BD2A2258103C0E9B3BBD2 /* 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 = ""; }; - 8840D3CCF38D54B422D17767EF0C87FB /* Addition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Addition.swift; path = sources/Addition.swift; sourceTree = ""; }; - 884A07B6837356CA64FAF158BADA4B38 /* Array+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Array+Extension.swift"; path = "Sources/CryptoSwift/Array+Extension.swift"; sourceTree = ""; }; - 88670CDAF1F762A196BC605C5BE8D615 /* SessionManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionManager.swift; path = Source/SessionManager.swift; sourceTree = ""; }; - 88AA06E26654F8E7655E7820B11C5F75 /* crypto_box.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_box.h; path = Sodium/libsodium/crypto_box.h; sourceTree = ""; }; - 88AD05DB9B5296F0B6746762D9BB788A /* RandomAccessCryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RandomAccessCryptor.swift; path = Sources/CryptoSwift/RandomAccessCryptor.swift; sourceTree = ""; }; - 88CDA6F7B12E6767FA45070FF2799CA1 /* NSNotificationCenter+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSNotificationCenter+Promise.swift"; path = "Extensions/Foundation/Sources/NSNotificationCenter+Promise.swift"; sourceTree = ""; }; - 890A4347F32948BEC7573D6A8BC4AF68 /* SHA3.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SHA3.swift; path = Sources/CryptoSwift/SHA3.swift; sourceTree = ""; }; - 891BB82441F69C42B233F1F8B215E9D4 /* 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 = ""; }; - 89339D9342B89117FD496824477E24C2 /* Utils+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Utils+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Utils+Foundation.swift"; sourceTree = ""; }; - 894108B41497EEAE8DFAD524A430A032 /* randombytes.c */ = {isa = PBXFileReference; includeInIndex = 1; name = randombytes.c; path = src/libsodium/randombytes/randombytes.c; sourceTree = ""; }; - 8984D061545623095E5F32FFEA8F1CA6 /* Alamofire.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Alamofire.framework; path = Alamofire.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 89CCB0B1A340C72ADAEDA8BC6025AEE5 /* pwhash_argon2i.c */ = {isa = PBXFileReference; includeInIndex = 1; name = pwhash_argon2i.c; path = src/libsodium/crypto_pwhash/argon2/pwhash_argon2i.c; sourceTree = ""; }; - 8A0554D47E6BFADA63ABDCF9468DD263 /* BigInt.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = BigInt.xcconfig; sourceTree = ""; }; - 8AD4C1B1FFD7B18F55FBA2E2E78EB2FC /* BigInt.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = BigInt.modulemap; sourceTree = ""; }; - 8C586DDBF2C8228DF8C76E76E0AA3A23 /* UIViewController+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+AnyPromise.m"; path = "Extensions/UIKit/Sources/UIViewController+AnyPromise.m"; sourceTree = ""; }; - 8CAC3E4D865F59B3ABFA31CC1BA97A13 /* Utils.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Utils.swift; path = Sodium/Utils.swift; sourceTree = ""; }; - 8ED755447807B06F68746037A5C18431 /* 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 = ""; }; - 8EFE79B682F9C459CEFF68D6B8F8624A /* Pods_web3Swift_Demo.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_web3Swift_Demo.framework; path = "Pods-web3Swift-Demo.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; - 8F3E30F898088D114E5D15FAB02868C1 /* runtime.c */ = {isa = PBXFileReference; includeInIndex = 1; name = runtime.c; path = src/libsodium/sodium/runtime.c; sourceTree = ""; }; - 8FC06162177A3707CD7DA1DB9FEAB2F7 /* Blowfish+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Blowfish+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Blowfish+Foundation.swift"; sourceTree = ""; }; - 90311BAEFBA8911F22FC541A00F8024F /* 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 = ""; }; - 912F7B30025B6487AFFFF62442B0B9AD /* crypto_core_salsa208.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_core_salsa208.h; path = Sodium/libsodium/crypto_core_salsa208.h; sourceTree = ""; }; - 918DE5192EEBE23030EC8213D0FB3F7F /* CryptoSwift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = CryptoSwift.modulemap; sourceTree = ""; }; - 921B4A2ED93FF4913140DF4A82FCD2B7 /* argon2-core.c */ = {isa = PBXFileReference; includeInIndex = 1; name = "argon2-core.c"; path = "src/libsodium/crypto_pwhash/argon2/argon2-core.c"; sourceTree = ""; }; - 92645F0E42EF6E42F3B91417331C15D7 /* crypto_sign.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_sign.c; path = src/libsodium/crypto_sign/crypto_sign.c; sourceTree = ""; }; - 927A4352588589EF77582F1D5D84EDA2 /* crypto_hash_sha512.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_hash_sha512.h; path = Sodium/libsodium/crypto_hash_sha512.h; sourceTree = ""; }; - 93671FFA714667A9F4303192AC6EC67C /* PWHash.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PWHash.swift; path = Sodium/PWHash.swift; sourceTree = ""; }; - 9374EC3B4021430648823B5267E4DE6B /* NSTask+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSTask+AnyPromise.m"; path = "Extensions/Foundation/Sources/NSTask+AnyPromise.m"; sourceTree = ""; }; - 938400F13CB88F6D31F6CC12114138EC /* Sodium.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = Sodium.modulemap; sourceTree = ""; }; + 84B00AB4B8779752240645DED049277F /* KeyDerivation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KeyDerivation.swift; path = Sodium/KeyDerivation.swift; sourceTree = ""; }; + 855995B5835DD243A809024B6BB3E44F /* RandomAccessBlockModeWorker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RandomAccessBlockModeWorker.swift; path = Sources/CryptoSwift/BlockMode/RandomAccessBlockModeWorker.swift; sourceTree = ""; }; + 855C520CA23CB8E3A12110E26AE36677 /* crypto_generichash.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_generichash.c; path = src/libsodium/crypto_generichash/crypto_generichash.c; sourceTree = ""; }; + 85E35F5B25A4ECE67CD5C470932B3B7D /* 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 = ""; }; + 863BE8939BD666C28E64F211F716D980 /* core.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = core.h; path = src/libsodium/include/sodium/core.h; sourceTree = ""; }; + 86E2BF2097E0611E9F0BBAA6BCA0B3F7 /* DispatchQueue+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DispatchQueue+Promise.swift"; path = "Sources/DispatchQueue+Promise.swift"; sourceTree = ""; }; + 882874EBBE101D20E22D89E3650A14F9 /* stream_xsalsa20.c */ = {isa = PBXFileReference; includeInIndex = 1; name = stream_xsalsa20.c; path = src/libsodium/crypto_stream/xsalsa20/stream_xsalsa20.c; sourceTree = ""; }; + 882BC0475026D21DB2FAF6BFE9AE671E /* utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = utils.h; path = Sodium/libsodium/utils.h; sourceTree = ""; }; + 8833EB488DC8FC2CFF384479F1B8EF77 /* 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 = ""; }; + 88A3BBCF2F9645EE05B1249FC2165D45 /* salsa20_ref.c */ = {isa = PBXFileReference; includeInIndex = 1; name = salsa20_ref.c; path = src/libsodium/crypto_stream/salsa20/ref/salsa20_ref.c; sourceTree = ""; }; + 88AC0D31607BC86E91D7CD53A1E3B559 /* CryptoSwift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = CryptoSwift.modulemap; sourceTree = ""; }; + 89975C5155547E680A0451EA87C09C21 /* 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 = ""; }; + 8A3C0AA85CFCC64440AF9558E389722C /* crypto_verify_32.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_verify_32.h; path = Sodium/libsodium/crypto_verify_32.h; sourceTree = ""; }; + 8AD32718C01819858C56F34692A68460 /* 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 = ""; }; + 8B9DF1FD11BFC5FAC57E2E26742C9E07 /* randombytes.c */ = {isa = PBXFileReference; includeInIndex = 1; name = randombytes.c; path = src/libsodium/randombytes/randombytes.c; sourceTree = ""; }; + 8BA98C5324ABAD49AD501CEDDE791E1F /* version.c */ = {isa = PBXFileReference; includeInIndex = 1; name = version.c; path = src/libsodium/sodium/version.c; sourceTree = ""; }; + 8C64D36651BD2BB25E90D404D20E911A /* PBKDF1.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PBKDF1.swift; path = Sources/CryptoSwift/PKCS/PBKDF1.swift; sourceTree = ""; }; + 8C6660B2BD4ECAAC5E97B07FFEBDA331 /* SecureBytes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SecureBytes.swift; path = Sources/CryptoSwift/SecureBytes.swift; sourceTree = ""; }; + 8CCE7DDD2EA49AC4866EDB03E4C7EAC1 /* Alamofire+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Alamofire+Promise.swift"; path = "Extensions/Alamofire/Sources/Alamofire+Promise.swift"; sourceTree = ""; }; + 8E6D4861BBD434CC3070B11EBEC4453E /* String+FoundationExtension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+FoundationExtension.swift"; path = "Sources/CryptoSwift/Foundation/String+FoundationExtension.swift"; sourceTree = ""; }; + 8E743383FC2059F02E6E5A60F697D6AF /* Strideable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Strideable.swift; path = sources/Strideable.swift; sourceTree = ""; }; + 8ECABF32DD18B149286300E2BD35C8C3 /* DispatchQueue+Await.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DispatchQueue+Await.swift"; path = "Sources/DispatchQueue+Await.swift"; sourceTree = ""; }; + 8F09586E570AB98B8F2A503AD744D778 /* ecmult_gen.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_gen.h; path = secp256k1_ios/src/ecmult_gen.h; sourceTree = ""; }; + 8F5B04706AC846488762D9368309EB4F /* 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 = ""; }; + 8FE55B2A737F69DDE418661102297E59 /* OFB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = OFB.swift; path = Sources/CryptoSwift/BlockMode/OFB.swift; sourceTree = ""; }; + 904DD56165F0855EB80FEC3481446B5A /* SessionManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionManager.swift; path = Source/SessionManager.swift; sourceTree = ""; }; + 907913A69CB4889AE525A8F5803F545D /* BigUInt.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BigUInt.swift; path = sources/BigUInt.swift; sourceTree = ""; }; + 912B295234C0661830A691A0A0E13685 /* crypto_onetimeauth.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_onetimeauth.h; path = src/libsodium/include/sodium/crypto_onetimeauth.h; sourceTree = ""; }; + 9142468A95060DE3D1E549AFD67F7404 /* 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 = ""; }; + 91DA9B1984A76808340777213870CDA1 /* 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 = ""; }; + 91F63BEDD052DF3819CDC6AE56DE7BE9 /* NSURLSession+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSURLSession+AnyPromise.h"; path = "Extensions/Foundation/Sources/NSURLSession+AnyPromise.h"; sourceTree = ""; }; + 930721CFCA4B7636184D238056AC1CE1 /* onetimeauth_poly1305.c */ = {isa = PBXFileReference; includeInIndex = 1; name = onetimeauth_poly1305.c; path = src/libsodium/crypto_onetimeauth/poly1305/onetimeauth_poly1305.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; }; - 93C8409B3AA4A87B86DDEF1DDA1AC40D /* keypair.c */ = {isa = PBXFileReference; includeInIndex = 1; name = keypair.c; path = src/libsodium/crypto_sign/ed25519/ref10/keypair.c; sourceTree = ""; }; - 94C51EFE53D059A0A494ACB765C78A10 /* 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 = ""; }; - 94EDB94F71D60ABA3EB314D4CE168A23 /* Validation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Validation.swift; path = Source/Validation.swift; sourceTree = ""; }; - 954BD2762EE1A6A0D0DBFD694BBBA6ED /* 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 = ""; }; - 9552E59D92B6A40FAB30C5F80273227B /* fe.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = fe.h; path = src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe.h; sourceTree = ""; }; - 96142A4E5AE61FA6DE86A0FFAB459299 /* 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 = ""; }; + 941B630FBC0BBB335949C76C4BB98E74 /* crypto_secretbox_xsalsa20poly1305.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_secretbox_xsalsa20poly1305.h; path = Sodium/libsodium/crypto_secretbox_xsalsa20poly1305.h; sourceTree = ""; }; + 941C4C199B0BD01B309D824EA561D297 /* Addition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Addition.swift; path = sources/Addition.swift; sourceTree = ""; }; + 94FBB315D73430B0AA86C296090D2120 /* crypto_pwhash.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_pwhash.c; path = src/libsodium/crypto_pwhash/crypto_pwhash.c; sourceTree = ""; }; + 95498B857B79AAF3B0D8C50476345603 /* crypto_sign.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_sign.h; path = Sodium/libsodium/crypto_sign.h; sourceTree = ""; }; + 962BC3B8ABF430637646FA2FE62AC600 /* Digest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Digest.swift; path = Sources/CryptoSwift/Digest.swift; sourceTree = ""; }; 962C58920F657D4C3BEC44497B74B5DC /* Pods-web3swift-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-web3swift-acknowledgements.markdown"; sourceTree = ""; }; - 963D12CBA11769BEBC355F012133FE0B /* BigInt-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "BigInt-prefix.pch"; sourceTree = ""; }; - 9693AD64756A4595163D7F21843B6422 /* Alamofire-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-umbrella.h"; sourceTree = ""; }; - 97282C0A3B7FE7421CC4411EA6BAFC74 /* UIView+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+AnyPromise.m"; path = "Extensions/UIKit/Sources/UIView+AnyPromise.m"; sourceTree = ""; }; - 97CBA5EF233438D0775F409E588D721B /* 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 = ""; }; + 963D3BF07345B3BB4ABD73BF4A3F41A9 /* 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 = ""; }; + 96E3B6818B7EB56444F7A2B545DC1E41 /* 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 = ""; }; + 97512CDF813ACB43088555F5E9D997E6 /* Process+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Process+Promise.swift"; path = "Extensions/Foundation/Sources/Process+Promise.swift"; sourceTree = ""; }; 97EF1FA3E083C50AB1CDECCD3C24296B /* Pods-web3swiftTests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-web3swiftTests-frameworks.sh"; sourceTree = ""; }; 9811F0A6E3213D241BF4FD58A20A2DC6 /* Pods-web3swift-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-web3swift-acknowledgements.plist"; sourceTree = ""; }; - 98165224512CD9D6D89230D9B741C2B8 /* String+FoundationExtension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+FoundationExtension.swift"; path = "Sources/CryptoSwift/Foundation/String+FoundationExtension.swift"; sourceTree = ""; }; 983C0463A0F14516802706558C453E14 /* Alamofire.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Alamofire.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 988D6765914684104FB3556B05FC6065 /* 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 = ""; }; - 98F0C2532624BC8A8B4D25579CA1883B /* NSNotificationCenter+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSNotificationCenter+AnyPromise.m"; path = "Extensions/Foundation/Sources/NSNotificationCenter+AnyPromise.m"; sourceTree = ""; }; - 98F3F7866CB1D23A503E9A07FA669317 /* NetworkReachabilityManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkReachabilityManager.swift; path = Source/NetworkReachabilityManager.swift; sourceTree = ""; }; - 991E731E616148148C4E59D062F149D3 /* 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 = ""; }; - 9A1E2EBB40952243FC9C9E9285571834 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 9B649EF5467DADB439E6E35CE5A524D2 /* 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 = ""; }; - 9B73EA5BC0B20FE37AFF7799A68BCB8B /* Floating Point Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Floating Point Conversion.swift"; path = "sources/Floating Point Conversion.swift"; sourceTree = ""; }; + 986515A50801EFE388504274DCC36EF3 /* SipHash-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SipHash-umbrella.h"; sourceTree = ""; }; + 99074594DF0703474EFB686F1C65F0C1 /* crypto_generichash_blake2b.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_generichash_blake2b.h; path = Sodium/libsodium/crypto_generichash_blake2b.h; sourceTree = ""; }; + 99850875B4C70F9899ED093BF2A23486 /* randombytes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = randombytes.h; path = src/libsodium/include/sodium/randombytes.h; sourceTree = ""; }; + 99C29731A5B4DD94AB53AFF57D3B2DEE /* libsodium-ios.a */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = archive.ar; name = "libsodium-ios.a"; path = "Sodium/libsodium/libsodium-ios.a"; sourceTree = ""; }; + 99D8ADE8C3CA2AC41682D4A569D602C2 /* 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 = ""; }; + 9A47965CD90F98C1F73A3EBC0E3729D1 /* NSTask+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSTask+AnyPromise.h"; path = "Extensions/Foundation/Sources/NSTask+AnyPromise.h"; sourceTree = ""; }; + 9A77C99612BF13DE11973DC24BEC610F /* SipHash.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = SipHash.modulemap; sourceTree = ""; }; 9BC044C4B04318779E0FC68BEA9D6321 /* 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; }; - 9D6AE8FA94C9BA2693B9F1F9CAE72A2B /* core_hchacha20.c */ = {isa = PBXFileReference; includeInIndex = 1; name = core_hchacha20.c; path = src/libsodium/crypto_core/hchacha20/core_hchacha20.c; sourceTree = ""; }; - 9D7416E171760C91E26888C9A6150933 /* PKCS5.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKCS5.swift; path = Sources/CryptoSwift/PKCS/PKCS5.swift; sourceTree = ""; }; - 9F60F72ADE94ACBA741DC0FE2250E533 /* crypto_hash.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_hash.c; path = src/libsodium/crypto_hash/crypto_hash.c; sourceTree = ""; }; - 9FD208919408B9824AEC4D29598D99BA /* core.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = core.h; path = src/libsodium/include/sodium/core.h; sourceTree = ""; }; - A006D517257D1C97A7961745A149F8A6 /* 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 = ""; }; - A00B88E3CF87AAA10E89644218843056 /* sodium.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = sodium.h; path = src/libsodium/include/sodium.h; sourceTree = ""; }; - A021A8A8C904A3CEBFBEF4657E8ABB1C /* 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 = ""; }; - A086B144D03B81A9078E19DD6A027FBB /* AwaitKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AwaitKit.xcconfig; sourceTree = ""; }; - A0FA84CFC0E90175AEB061DCB2EC36FF /* dispatch_promise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = dispatch_promise.m; path = Sources/dispatch_promise.m; sourceTree = ""; }; - A132FA08A215B5C18EEF42F9EE0845B6 /* 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 = ""; }; - A1A008A6866816B51824B7C99BA6B095 /* GenericHash.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GenericHash.swift; path = Sodium/GenericHash.swift; sourceTree = ""; }; - A23C2EC8CC0F010A06926A9F086F7066 /* libsodium.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = libsodium.framework; path = libsodium.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - A2510DD098271C3F6BD6BBF571628EB1 /* Multiplication.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Multiplication.swift; path = sources/Multiplication.swift; sourceTree = ""; }; - A2AD2F2FB3632F5FA1C26DEB19308D4C /* u0.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = u0.h; path = src/libsodium/crypto_stream/chacha20/dolbeau/u0.h; sourceTree = ""; }; - A3551CA0F49C75A2C6FB8B7164888B81 /* SecureBytes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SecureBytes.swift; path = Sources/CryptoSwift/SecureBytes.swift; sourceTree = ""; }; - A385FD5BD4160D26B15DC59E0C0A4684 /* after.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = after.m; path = Sources/after.m; sourceTree = ""; }; - A388CED3C347A4DD974F069E34EEB032 /* hang.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = hang.m; path = Sources/hang.m; sourceTree = ""; }; - A3D3FF2745D777DFA9D6BB4A9A4EC657 /* crypto_sign_edwards25519sha512batch.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_sign_edwards25519sha512batch.h; path = Sodium/libsodium/crypto_sign_edwards25519sha512batch.h; sourceTree = ""; }; - A42491FEED1F6B26F1E9D9E2155E8D17 /* crypto_pwhash_scryptsalsa208sha256.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_pwhash_scryptsalsa208sha256.h; path = Sodium/libsodium/crypto_pwhash_scryptsalsa208sha256.h; sourceTree = ""; }; - A446554429C8A51E8B7C216F83270456 /* wrap.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = wrap.swift; path = Sources/wrap.swift; sourceTree = ""; }; - A46198638D03BEC8C33A4E5958F20D1C /* u1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = u1.h; path = src/libsodium/crypto_stream/salsa20/xmm6int/u1.h; sourceTree = ""; }; - A4A331F88F30FE5A9D446A0AD35AB51C /* crypto_shorthash.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_shorthash.c; path = src/libsodium/crypto_shorthash/crypto_shorthash.c; sourceTree = ""; }; - A4D735C1D60367A6469C484F8473A4B8 /* crypto_sign.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_sign.h; path = src/libsodium/include/sodium/crypto_sign.h; sourceTree = ""; }; - A53D3BD819E7DFC8FDA251FE78F3231C /* AES+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "AES+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/AES+Foundation.swift"; sourceTree = ""; }; - A55B26E912C39914E13AC2C69B72D917 /* crypto_onetimeauth_poly1305.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_onetimeauth_poly1305.h; path = Sodium/libsodium/crypto_onetimeauth_poly1305.h; sourceTree = ""; }; + 9CADA8E8EB907CF49504D41969B66E1A /* 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 = ""; }; + 9CB21DCD5F3411154A2D1613935DDA33 /* AES.Cryptors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AES.Cryptors.swift; path = Sources/CryptoSwift/AES.Cryptors.swift; sourceTree = ""; }; + 9CD74735540355253E1F4AD6C8AD0B01 /* u8.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = u8.h; path = src/libsodium/crypto_stream/salsa20/xmm6int/u8.h; sourceTree = ""; }; + 9CF0E7F8EFB95EF4A7B697532F742A82 /* 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 = ""; }; + 9D0D933C66AF52C3B04E16F8B4472459 /* argon2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = argon2.h; path = src/libsodium/crypto_pwhash/argon2/argon2.h; sourceTree = ""; }; + 9D1E2D13D418001F731BBAA01132AD38 /* crypto_scalarmult.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_scalarmult.c; path = src/libsodium/crypto_scalarmult/crypto_scalarmult.c; sourceTree = ""; }; + 9E7AE4332CF4946574A53ED2E70272F7 /* BigInt-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "BigInt-dummy.m"; sourceTree = ""; }; + 9EE4A8C9D93C48A924AEE4C22117A322 /* BlockMode.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockMode.swift; path = Sources/CryptoSwift/BlockMode/BlockMode.swift; sourceTree = ""; }; + 9EFF37BC52F3023DD45213EB15161FE3 /* 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 = ""; }; + 9F5B4C9E692E1FDA78F5D61FC2EB5D90 /* crypto_verify_64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_verify_64.h; path = Sodium/libsodium/crypto_verify_64.h; sourceTree = ""; }; + 9FEBAD18AC0C32989F0D6DE435255E40 /* Poly1305.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Poly1305.swift; path = Sources/CryptoSwift/Poly1305.swift; sourceTree = ""; }; + A0D32A6507C07821D4D7053666EFF830 /* State.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = State.swift; path = Sources/State.swift; sourceTree = ""; }; + A0D4A370C25E9C534700F68F261CC9D8 /* SipHashable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SipHashable.swift; path = SipHash/SipHashable.swift; sourceTree = ""; }; + A10A0B5D0F25A6FEBC580E19614C59E8 /* stream_salsa20.c */ = {isa = PBXFileReference; includeInIndex = 1; name = stream_salsa20.c; path = src/libsodium/crypto_stream/salsa20/stream_salsa20.c; sourceTree = ""; }; + A122608E3EA15CE162B320153E50FD1C /* crypto_secretbox_xchacha20poly1305.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_secretbox_xchacha20poly1305.h; path = Sodium/libsodium/crypto_secretbox_xchacha20poly1305.h; sourceTree = ""; }; + A144987DDDED702EB5E258B7DBA66061 /* u0.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = u0.h; path = src/libsodium/crypto_stream/chacha20/dolbeau/u0.h; sourceTree = ""; }; + A19A92D697511E33B378801748F55BC9 /* 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 = ""; }; + A1C1E539D98D15BE30F81B0597792FD3 /* RandomBytesSequence.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RandomBytesSequence.swift; path = Sources/CryptoSwift/RandomBytesSequence.swift; sourceTree = ""; }; + A1EE4B8D38AC2A157DDDA92FE1D71272 /* PMKAlertController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PMKAlertController.swift; path = Extensions/UIKit/Sources/PMKAlertController.swift; sourceTree = ""; }; + A248A3E7C6F766F1E38153BAE14F5F75 /* NSNotificationCenter+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSNotificationCenter+Promise.swift"; path = "Extensions/Foundation/Sources/NSNotificationCenter+Promise.swift"; sourceTree = ""; }; + A26DCC2932F1074BAB0C7CCD6FABCEC6 /* export.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = export.h; path = Sodium/libsodium/export.h; sourceTree = ""; }; + A270C77A8A74A29E5D488AC838839EB4 /* Prime Test.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Prime Test.swift"; path = "sources/Prime Test.swift"; sourceTree = ""; }; + A2CE4C93D3EE0771C0A73EE0657A7EEA /* crypto_auth.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_auth.c; path = src/libsodium/crypto_auth/crypto_auth.c; sourceTree = ""; }; + A2F63423642935965844FE77EB88D975 /* Sodium.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Sodium.h; path = Sodium/Sodium.h; sourceTree = ""; }; + A3324A5954A5BB93394BBFD5710817D7 /* Alamofire-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-umbrella.h"; sourceTree = ""; }; + A36104F32BA41DCAF9D50291DD752465 /* PBKDF2.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PBKDF2.swift; path = Sources/CryptoSwift/PKCS/PBKDF2.swift; sourceTree = ""; }; + A361335FBC7529C373055D35F00522E2 /* ParameterEncoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ParameterEncoding.swift; path = Source/ParameterEncoding.swift; sourceTree = ""; }; + A3ABDE6F6F3219032FD4C7FB454EAAFC /* Alamofire.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = Alamofire.modulemap; sourceTree = ""; }; + A49A91A56F3491450551804088F2CAF6 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + A4D8637478D75F16DCE82433FD8E3157 /* 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 = ""; }; + A5D9BA76E487C1D292FD730234B1AE25 /* crypto_box.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_box.c; path = src/libsodium/crypto_box/crypto_box.c; sourceTree = ""; }; A5ECE6EA5AADEAC703873C853FF56253 /* Pods-web3swift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-web3swift-umbrella.h"; sourceTree = ""; }; - A62C3D81BB4A8F4AB511974F1D1CA2CF /* crypto_core_hchacha20.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_core_hchacha20.h; path = Sodium/libsodium/crypto_core_hchacha20.h; sourceTree = ""; }; - A6D5AD484AE13D360E43C5EEAFB4019B /* 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 = ""; }; - A6DCA6AC369C0BCAE9A5CBB1B8D62CB7 /* crypto_box.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_box.h; path = src/libsodium/include/sodium/crypto_box.h; sourceTree = ""; }; - A73C1E7F3AB6676FD25D13F20470CAFC /* CFB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CFB.swift; path = Sources/CryptoSwift/BlockMode/CFB.swift; sourceTree = ""; }; - A7C95F1AB2FF095B834BBEB1640500E3 /* 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 = ""; }; - A8EDFF6E0C69BBEA160BC090FF394E61 /* crypto_auth.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_auth.h; path = Sodium/libsodium/crypto_auth.h; sourceTree = ""; }; - A9A536463390FA2F304312DD11AC8EB7 /* 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 = ""; }; - AB13FE01F203D4B1698DD35B67D00823 /* DispatchQueue+Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DispatchQueue+Alamofire.swift"; path = "Source/DispatchQueue+Alamofire.swift"; sourceTree = ""; }; - AB2DF9FD64F1C8CCB4DE8BE9DEB14EBF /* crypto_core_hsalsa20.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_core_hsalsa20.h; path = Sodium/libsodium/crypto_core_hsalsa20.h; sourceTree = ""; }; - AB4684483FF54B94636E96CA8D597FEC /* randombytes_nativeclient.c */ = {isa = PBXFileReference; includeInIndex = 1; name = randombytes_nativeclient.c; path = src/libsodium/randombytes/nativeclient/randombytes_nativeclient.c; sourceTree = ""; }; - AB51CC9B0693F64119B762C37136AE87 /* Pods_web3swift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_web3swift.framework; path = "Pods-web3swift.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; - ACA4A70D7B5E06B51DCA6AEDF3B3CAC2 /* 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 = ""; }; - AE7A1B5E35E55006A510CD1531E8E8C1 /* SessionDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionDelegate.swift; path = Source/SessionDelegate.swift; sourceTree = ""; }; - AFDEA9B8108FD19B3C3B56020DC4665A /* crypto_generichash.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_generichash.c; path = src/libsodium/crypto_generichash/crypto_generichash.c; sourceTree = ""; }; - B0019EB0E52DAD55C66459CE6151B772 /* 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 = ""; }; + A624E79873D85DBBA0B99408C1057430 /* auth_hmacsha512256.c */ = {isa = PBXFileReference; includeInIndex = 1; name = auth_hmacsha512256.c; path = src/libsodium/crypto_auth/hmacsha512256/auth_hmacsha512256.c; sourceTree = ""; }; + A69603D04DC111DFD17C4DB0BBD25A49 /* AwaitKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AwaitKit.xcconfig; sourceTree = ""; }; + A6B5ACA48653BB8F76CA1B3C7BDFAA96 /* utils.c */ = {isa = PBXFileReference; includeInIndex = 1; name = utils.c; path = src/libsodium/sodium/utils.c; sourceTree = ""; }; + A6EB93EB92398F82FABCCCD853710937 /* beforenm_aes128ctr.c */ = {isa = PBXFileReference; includeInIndex = 1; name = beforenm_aes128ctr.c; path = src/libsodium/crypto_stream/aes128ctr/nacl/beforenm_aes128ctr.c; sourceTree = ""; }; + A7338AD202AF0A4E747CFB565A4D55D4 /* afternm_aes128ctr.c */ = {isa = PBXFileReference; includeInIndex = 1; name = afternm_aes128ctr.c; path = src/libsodium/crypto_stream/aes128ctr/nacl/afternm_aes128ctr.c; sourceTree = ""; }; + A74B3387C56B8EF5D392C652FDA01928 /* crypto_box_easy.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_box_easy.c; path = src/libsodium/crypto_box/crypto_box_easy.c; sourceTree = ""; }; + A7A51446A74E1AC0217F4212E9EA1D1C /* randombytes_sysrandom.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = randombytes_sysrandom.h; path = Sodium/libsodium/randombytes_sysrandom.h; sourceTree = ""; }; + A7A96E7A2334264B3F3EC5EC35C42925 /* 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 = ""; }; + A7D45A9CD3E26DA47608CD8C21DDFAAB /* fe.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = fe.h; path = src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe.h; sourceTree = ""; }; + A806138470021A30F1FDF370500E7405 /* CBC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CBC.swift; path = Sources/CryptoSwift/BlockMode/CBC.swift; sourceTree = ""; }; + A8B44B93FD18F128EFFD84EEDB9EEE7C /* 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 = ""; }; + A8B97DA5307D1B7DA32E266D34327DEB /* crypto_secretstream_xchacha20poly1305.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_secretstream_xchacha20poly1305.h; path = Sodium/libsodium/crypto_secretstream_xchacha20poly1305.h; sourceTree = ""; }; + A9193210B51913ACA7CA410C46669B02 /* String+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+Extension.swift"; path = "Sources/CryptoSwift/String+Extension.swift"; sourceTree = ""; }; + A94FE59FF02CA1BF3C4C36AD073FB485 /* stream_salsa208.c */ = {isa = PBXFileReference; includeInIndex = 1; name = stream_salsa208.c; path = src/libsodium/crypto_stream/salsa208/stream_salsa208.c; sourceTree = ""; }; + AA51C6EDAB8F58FAA02E0DD739398741 /* BigInt.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = BigInt.xcconfig; sourceTree = ""; }; + AAC3E46F1E1BAF03DF6FC016BBFC8B0C /* secp256k1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = secp256k1.h; path = secp256k1_ios/include/secp256k1.h; sourceTree = ""; }; + AB334AE0476FB66AC66311E6D354CAA4 /* Pods_web3swift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_web3swift.framework; path = "Pods-web3swift.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + ABA767A321FE49B7686BA1E79F3676EB /* dispatch_promise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = dispatch_promise.m; path = Sources/dispatch_promise.m; sourceTree = ""; }; + ABAEB533263065A56B85421D9C76852B /* ecdsa_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecdsa_impl.h; path = secp256k1_ios/src/ecdsa_impl.h; sourceTree = ""; }; + ABE071F115DABC5611980E48CF6733A8 /* Alamofire-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Alamofire-dummy.m"; sourceTree = ""; }; + AC4E785FB09A13C3F7CE094AE5BC0BD0 /* hash_sha256.c */ = {isa = PBXFileReference; includeInIndex = 1; name = hash_sha256.c; path = src/libsodium/crypto_hash/sha256/hash_sha256.c; sourceTree = ""; }; + AC901887624E2DE87FBBAFA6AA4C5BA8 /* randombytes_nativeclient.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = randombytes_nativeclient.h; path = src/libsodium/include/sodium/randombytes_nativeclient.h; sourceTree = ""; }; + AC97701660A1C57C612C75C8885B9B5F /* shorthash_siphash24.c */ = {isa = PBXFileReference; includeInIndex = 1; name = shorthash_siphash24.c; path = src/libsodium/crypto_shorthash/siphash24/shorthash_siphash24.c; sourceTree = ""; }; + ACB90F919DDF8611BF7E7B69BCBD809C /* num.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = num.h; path = secp256k1_ios/src/num.h; sourceTree = ""; }; + AD06B1F65EB15F6A0E4D35A756BA49F0 /* field_10x26.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_10x26.h; path = secp256k1_ios/src/field_10x26.h; sourceTree = ""; }; + AD0E753FE7441C5B4B5E53E6FD0D8BF9 /* libsodium.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = libsodium.xcconfig; sourceTree = ""; }; + ADE049DE218DC98824BB35884F61D5CB /* AwaitKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = AwaitKit.modulemap; sourceTree = ""; }; + AE10E194DE69EA610A2293C070B8426F /* when.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = when.m; path = Sources/when.m; sourceTree = ""; }; + AE1AD3260782CB1A196B80F10E86C885 /* Exponentiation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Exponentiation.swift; path = sources/Exponentiation.swift; sourceTree = ""; }; + AEA1BB0659091BE909860B67DC5AC347 /* stream_salsa2012.c */ = {isa = PBXFileReference; includeInIndex = 1; name = stream_salsa2012.c; path = src/libsodium/crypto_stream/salsa2012/stream_salsa2012.c; sourceTree = ""; }; + AEBD96DB688BDCF12921FAAB4CE7F9B1 /* 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 = ""; }; + B04D3B26CA2B1E9B3FDDCB69DEC64FFF /* base2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = base2.h; path = src/libsodium/crypto_core/curve25519/ref10/base2.h; sourceTree = ""; }; B073561F67539EED4041964C54D6AFD1 /* Pods-web3swiftTests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = "Pods-web3swiftTests.modulemap"; sourceTree = ""; }; - B0ABA4E3E67D289FE88CA8143C4A30D7 /* PBKDF1.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PBKDF1.swift; path = Sources/CryptoSwift/PKCS/PBKDF1.swift; sourceTree = ""; }; - B0B906A4E9D483526F49D2E7D64554F8 /* crypto_box_curve25519xchacha20poly1305.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_box_curve25519xchacha20poly1305.h; path = Sodium/libsodium/crypto_box_curve25519xchacha20poly1305.h; sourceTree = ""; }; - B101E96819B63784DE294323D74B9CCD /* 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 = ""; }; - B22B318AB2A488D73D8A82806BB0E2E1 /* Promise+AnyPromise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Promise+AnyPromise.swift"; path = "Sources/Promise+AnyPromise.swift"; sourceTree = ""; }; - B26F18E3327DBA08BEB8749E9A1DAAA5 /* afternm_aes128ctr.c */ = {isa = PBXFileReference; includeInIndex = 1; name = afternm_aes128ctr.c; path = src/libsodium/crypto_stream/aes128ctr/nacl/afternm_aes128ctr.c; sourceTree = ""; }; - B2A0A8C7EB9FD69A844409B215700892 /* crypto_secretbox_xchacha20poly1305.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_secretbox_xchacha20poly1305.h; path = Sodium/libsodium/crypto_secretbox_xchacha20poly1305.h; sourceTree = ""; }; - B36353933A6E920E0A59DCAD60CB62CE /* generichash_blake2b.c */ = {isa = PBXFileReference; includeInIndex = 1; name = generichash_blake2b.c; path = src/libsodium/crypto_generichash/blake2b/ref/generichash_blake2b.c; sourceTree = ""; }; - B39A56572DC6B8EB19139D8E2960B959 /* stream_chacha20.c */ = {isa = PBXFileReference; includeInIndex = 1; name = stream_chacha20.c; path = src/libsodium/crypto_stream/chacha20/stream_chacha20.c; sourceTree = ""; }; - B551D746CF560D8B9DFB043B3FCCDBFE /* 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 = ""; }; - B590C80B2EA2D26D05372FE51E0E176B /* 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 = ""; }; - B60EF11E77872012BDABF55C534ADFE3 /* crypto_aead_aes256gcm.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_aead_aes256gcm.h; path = Sodium/libsodium/crypto_aead_aes256gcm.h; sourceTree = ""; }; - B6901EF722C6C5B3E00C2D18518E9E28 /* crypto_kdf.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_kdf.c; path = src/libsodium/crypto_kdf/crypto_kdf.c; sourceTree = ""; }; - B6A32356029CA16B9B0EB9DE4E017172 /* SipHashable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SipHashable.swift; path = SipHash/SipHashable.swift; sourceTree = ""; }; - B867717ADA4ABC98597E839AAA3CF5B3 /* u4.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = u4.h; path = src/libsodium/crypto_stream/chacha20/dolbeau/u4.h; sourceTree = ""; }; - B889FDF199314EA888E7A3FB2BE67CE6 /* crypto_auth.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_auth.h; path = src/libsodium/include/sodium/crypto_auth.h; sourceTree = ""; }; - B8FAF1583FB3495FEF0585A02D27BD74 /* core.c */ = {isa = PBXFileReference; includeInIndex = 1; name = core.c; path = src/libsodium/sodium/core.c; sourceTree = ""; }; - B93AD61C6FF02691A6BBDD6314157ACD /* AES.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AES.swift; path = Sources/CryptoSwift/AES.swift; sourceTree = ""; }; - B95D2BC236C1BB8EF266DA40E9C9DDD7 /* 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 = ""; }; - BA26594019F4E949950B51C1AC8431AA /* 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 = ""; }; - BA50C6FD6AD4118DA0989A5BB014306D /* base.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = base.h; path = src/libsodium/crypto_core/curve25519/ref10/base.h; sourceTree = ""; }; - BA853ECD5B6B683B24B64E2342FCF25F /* Padding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Padding.swift; path = Sources/CryptoSwift/Padding.swift; sourceTree = ""; }; - BB1F3A9314BB7DA0573B872D09703DF2 /* ECB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ECB.swift; path = Sources/CryptoSwift/BlockMode/ECB.swift; sourceTree = ""; }; - BBBDF5896217B4BC1205D48008B5A813 /* PromiseKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = PromiseKit.modulemap; sourceTree = ""; }; - BBDB0A5A2304C622C7912198CB92C561 /* SHA2.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SHA2.swift; path = Sources/CryptoSwift/SHA2.swift; sourceTree = ""; }; - BC10FFF0A8458ECE7E33629954A64277 /* pwhash_scryptsalsa208sha256.c */ = {isa = PBXFileReference; includeInIndex = 1; name = pwhash_scryptsalsa208sha256.c; path = src/libsodium/crypto_pwhash/scryptsalsa208sha256/pwhash_scryptsalsa208sha256.c; sourceTree = ""; }; - BC668F258AEA31AC53D7C6CCE7E4E707 /* Integer Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Integer Conversion.swift"; path = "sources/Integer Conversion.swift"; sourceTree = ""; }; - BCAD54B337692D7BE38D588249483AB9 /* Pods_web3swiftTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_web3swiftTests.framework; path = "Pods-web3swiftTests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; - BCBA7A77BF5B339F043FD49D1C91E14C /* Array+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Array+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Array+Foundation.swift"; sourceTree = ""; }; - BCC16CED95421AA9D9852B212B4FD301 /* 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 = ""; }; - BD1B910902B731C788D4438432C1AF02 /* Comparable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Comparable.swift; path = sources/Comparable.swift; sourceTree = ""; }; - BDE2D53A097AE2EBCD4B1EE9D4423155 /* 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 = ""; }; - BDE327CC64B818B526A49742460E39B3 /* curve25519_sandy2x.c */ = {isa = PBXFileReference; includeInIndex = 1; name = curve25519_sandy2x.c; path = src/libsodium/crypto_scalarmult/curve25519/sandy2x/curve25519_sandy2x.c; sourceTree = ""; }; - BDFF7C1B4FD61764E6C681162ED9C397 /* RandomAccessBlockModeWorker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RandomAccessBlockModeWorker.swift; path = Sources/CryptoSwift/BlockMode/RandomAccessBlockModeWorker.swift; sourceTree = ""; }; - BF21F9017E9A93F72F694260565C10CE /* AwaitKit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AwaitKit.swift; path = Sources/AwaitKit.swift; sourceTree = ""; }; - BF415CDBCFDE08125DFAF989519A56AB /* SipHash-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SipHash-prefix.pch"; sourceTree = ""; }; - C04479979B4AE62024ADAFE7D7D02C9F /* 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 = ""; }; - C056F9C76C48F568CB50537FBB908F32 /* DigestType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DigestType.swift; path = Sources/CryptoSwift/DigestType.swift; sourceTree = ""; }; - C0B652C026E3425895D737F69723E5A8 /* version.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = version.h; path = src/libsodium/include/sodium/version.h; sourceTree = ""; }; - C0FCAE74F0F6D6E2C4590F45D0380EB4 /* crypto_stream.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_stream.h; path = Sodium/libsodium/crypto_stream.h; sourceTree = ""; }; - C115B1679AC5A0F30BD50F722B0E3584 /* 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 = ""; }; - C18B37DFBC5156B01601ECA9A7F0E448 /* PMKAlertController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PMKAlertController.swift; path = Extensions/UIKit/Sources/PMKAlertController.swift; sourceTree = ""; }; - C249E78AA58EB7BAF490FF75C2DEE293 /* argon2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = argon2.c; path = src/libsodium/crypto_pwhash/argon2/argon2.c; sourceTree = ""; }; - C2562A587DC1E0BCF4B9898CD759C598 /* stream_xsalsa20.c */ = {isa = PBXFileReference; includeInIndex = 1; name = stream_xsalsa20.c; path = src/libsodium/crypto_stream/xsalsa20/stream_xsalsa20.c; sourceTree = ""; }; - C36232150A443296F0FDFEB3EF1184B7 /* kdf_blake2b.c */ = {isa = PBXFileReference; includeInIndex = 1; name = kdf_blake2b.c; path = src/libsodium/crypto_kdf/blake2b/kdf_blake2b.c; sourceTree = ""; }; - C4409D6BE5E70AA79515BCE82C62E40B /* SecretBox.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SecretBox.swift; path = Sodium/SecretBox.swift; sourceTree = ""; }; - C47153A0531E54FB8635505A1DCA7A9A /* argon2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = argon2.h; path = src/libsodium/crypto_pwhash/argon2/argon2.h; sourceTree = ""; }; - C50D54526E4FB9B70073E846C0AB19D4 /* RandomUInt64.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RandomUInt64.swift; path = SipHash/RandomUInt64.swift; sourceTree = ""; }; - C5C8F4341D4F0ECC12782B331DBBCF5C /* 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 = ""; }; - C6468F7876B8471C2334F4DD9E55F44F /* BlockModeWorker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockModeWorker.swift; path = Sources/CryptoSwift/BlockMode/BlockModeWorker.swift; sourceTree = ""; }; - C64B66232C9D37ED3072A80AE0EE2F49 /* Sign.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Sign.swift; path = Sodium/Sign.swift; sourceTree = ""; }; - C655E23FBB8C21C66C0418C5189E1716 /* stream_salsa208.c */ = {isa = PBXFileReference; includeInIndex = 1; name = stream_salsa208.c; path = src/libsodium/crypto_stream/salsa208/stream_salsa208.c; sourceTree = ""; }; - C6A77F33B8864EAEC280D315E122F5B9 /* DispatchQueue+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DispatchQueue+Promise.swift"; path = "Sources/DispatchQueue+Promise.swift"; sourceTree = ""; }; - C6EC2B99AF281438BA2E7BC6A71BDEBD /* chacha20_ref.c */ = {isa = PBXFileReference; includeInIndex = 1; name = chacha20_ref.c; path = src/libsodium/crypto_stream/chacha20/ref/chacha20_ref.c; sourceTree = ""; }; - C7BB5F73F6B8A2AAA4D3C65843ABCDD1 /* crypto_kx.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_kx.c; path = src/libsodium/crypto_kx/crypto_kx.c; sourceTree = ""; }; - C7F858463A74DDEE23754F7FA24304D6 /* NSURLSession+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSURLSession+AnyPromise.m"; path = "Extensions/Foundation/Sources/NSURLSession+AnyPromise.m"; sourceTree = ""; }; - C82E6B66D574352290251A84B08E3A40 /* generichash_blake2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = generichash_blake2.c; path = src/libsodium/crypto_generichash/blake2b/generichash_blake2.c; sourceTree = ""; }; - C85A39C94EB58220C2E1139B2D95A359 /* AwaitKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "AwaitKit-dummy.m"; sourceTree = ""; }; - C864C7864F697E7F4B1256982AB881CB /* RandomBytes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RandomBytes.swift; path = Sodium/RandomBytes.swift; sourceTree = ""; }; - C882186B076DB2CEE3935BF84AF992AC /* 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 = ""; }; - C8C6A282E8C80B0531A45A768E896D4B /* crypto_shorthash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_shorthash.h; path = Sodium/libsodium/crypto_shorthash.h; sourceTree = ""; }; - C927C0606CA4E95D31493BDD651DFFF7 /* 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 = ""; }; - C9D1DF849F2188CD9EA2EF66FAFCAF69 /* PromiseKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PromiseKit.h; path = Sources/PromiseKit.h; sourceTree = ""; }; - CA31E4ABBA0E27582BEB6ADA8BABB91D /* sodium_lib.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = sodium_lib.h; path = Sodium/libsodium/sodium_lib.h; sourceTree = ""; }; - CAB1F376B16515A9363F01965D003074 /* Box.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Box.swift; path = Sodium/Box.swift; sourceTree = ""; }; - CB484B5F552B1F5D6A18654410B4A772 /* u0.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = u0.h; path = src/libsodium/crypto_stream/salsa20/xmm6int/u0.h; sourceTree = ""; }; - CB7439327F3AA5CF77B7C4EE38D13961 /* shorthash_siphashx24.c */ = {isa = PBXFileReference; includeInIndex = 1; name = shorthash_siphashx24.c; path = src/libsodium/crypto_shorthash/siphash24/shorthash_siphashx24.c; sourceTree = ""; }; - CBA4772E08B0088301B5AAFE4E7CEC7F /* Notifications.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Notifications.swift; path = Source/Notifications.swift; sourceTree = ""; }; - CBCA7F502C5E7AC00B6F0A6821922B4B /* crypto_box.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_box.c; path = src/libsodium/crypto_box/crypto_box.c; sourceTree = ""; }; - CCD05FE6A8A976D047B064E0E36B2A44 /* auth_hmacsha512256.c */ = {isa = PBXFileReference; includeInIndex = 1; name = auth_hmacsha512256.c; path = src/libsodium/crypto_auth/hmacsha512256/auth_hmacsha512256.c; sourceTree = ""; }; - CD887F908D9DB20AC208FB692AE50C59 /* secretbox_xchacha20poly1305.c */ = {isa = PBXFileReference; includeInIndex = 1; name = secretbox_xchacha20poly1305.c; path = src/libsodium/crypto_secretbox/xchacha20poly1305/secretbox_xchacha20poly1305.c; sourceTree = ""; }; - CD93C36231E53ADD1F9B6B8F064BEBCC /* Generics.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Generics.swift; path = Sources/CryptoSwift/Generics.swift; sourceTree = ""; }; - CE00FE26614EF8C662EB5B0420C45D20 /* UIView+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+Promise.swift"; path = "Extensions/UIKit/Sources/UIView+Promise.swift"; sourceTree = ""; }; - CEE962279D5BD5992AADE18B52E3F449 /* Updatable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Updatable.swift; path = Sources/CryptoSwift/Updatable.swift; sourceTree = ""; }; - CF644E17D74DC771AB9A2C13BB5D656A /* PKCS7Padding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKCS7Padding.swift; path = Sources/CryptoSwift/PKCS/PKCS7Padding.swift; sourceTree = ""; }; - CFA150240F4B99D3A6A82F8047F9803A /* shorthash_siphash24.c */ = {isa = PBXFileReference; includeInIndex = 1; name = shorthash_siphash24.c; path = src/libsodium/crypto_shorthash/siphash24/shorthash_siphash24.c; sourceTree = ""; }; - D04ABFA976029B930018AAE42B9AD820 /* PromiseKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = PromiseKit.xcconfig; sourceTree = ""; }; - D0D19AE7C9B2A5D1ECE739022BB054B3 /* scalarmult_curve25519.c */ = {isa = PBXFileReference; includeInIndex = 1; name = scalarmult_curve25519.c; path = src/libsodium/crypto_scalarmult/curve25519/scalarmult_curve25519.c; sourceTree = ""; }; - D12CC3DAACE09D0C6594CF29B2BECAC5 /* 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 = ""; }; - D12F9FF7D94A533B244BA69D70AC376C /* 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 = ""; }; - D260CB70BCBA84F6A1DDC8D6C064D36C /* Words and Bits.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Words and Bits.swift"; path = "sources/Words and Bits.swift"; sourceTree = ""; }; - D29FB119763086DC8AEE0D47EC4BFC72 /* 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 = ""; }; - D3A5A68D9F120319208735753EBF8A33 /* crypto_pwhash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_pwhash.h; path = src/libsodium/include/sodium/crypto_pwhash.h; sourceTree = ""; }; + B1408CD377151BAD54BD7E2219731C25 /* int128_aes128ctr.c */ = {isa = PBXFileReference; includeInIndex = 1; name = int128_aes128ctr.c; path = src/libsodium/crypto_stream/aes128ctr/nacl/int128_aes128ctr.c; sourceTree = ""; }; + B19CBC40C69F5207FF87890A3B60DF68 /* runtime.c */ = {isa = PBXFileReference; includeInIndex = 1; name = runtime.c; path = src/libsodium/sodium/runtime.c; sourceTree = ""; }; + B240610E594B955FC112AFFD1CF7891E /* 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 = ""; }; + B2769F723C3DE1F56C3FF7E574EEEACD /* Utils+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Utils+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Utils+Foundation.swift"; sourceTree = ""; }; + B277EC7B1F52D372514A1F5C1CA729AB /* secp256k1_ios.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = secp256k1_ios.h; path = secp256k1_ios/secp256k1_ios.h; sourceTree = ""; }; + B2CE148B70CCAC164166865F0F7C49F6 /* 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 = ""; }; + B3A443A3BCFB436B3C32F0D7FEF025B3 /* salsa20_xmm6.c */ = {isa = PBXFileReference; includeInIndex = 1; name = salsa20_xmm6.c; path = src/libsodium/crypto_stream/salsa20/xmm6/salsa20_xmm6.c; sourceTree = ""; }; + B3D725119A53C3636896E8190110756C /* UIView+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+Promise.swift"; path = "Extensions/UIKit/Sources/UIView+Promise.swift"; sourceTree = ""; }; + B3E35B0BA0536866DB699D689341865F /* AES.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AES.swift; path = Sources/CryptoSwift/AES.swift; sourceTree = ""; }; + B3FCA78B5FD3B288EDF169D9D45313CC /* scalar_8x32.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_8x32.h; path = secp256k1_ios/src/scalar_8x32.h; sourceTree = ""; }; + B41E875A13E1EEFCB3F0106FADECF01F /* 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 = ""; }; + B45709B61AE990A24C890267EA607C3E /* 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 = ""; }; + B4A6AC6D195915584BFEFCE646DA9430 /* 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 = ""; }; + B57D38EC17EDC879D9911671ABC64C3F /* Array+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Array+Extensions.swift"; path = "Sources/CryptoSwift/Array+Extensions.swift"; sourceTree = ""; }; + B5DD4D337A5B312DB9ADEE21B2804CB6 /* ResponseSerialization.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ResponseSerialization.swift; path = Source/ResponseSerialization.swift; sourceTree = ""; }; + B71BCDDE02282E6F507A98E6605730F7 /* core_hsalsa20.c */ = {isa = PBXFileReference; includeInIndex = 1; name = core_hsalsa20.c; path = src/libsodium/crypto_core/hsalsa20/core_hsalsa20.c; sourceTree = ""; }; + B858671F2F5CF2C63AB87D3505BCA664 /* 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 = ""; }; + B89C0B253B5F6C24C45013381E2CAC99 /* 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 = ""; }; + B98AE4C2D95A57A81283819409FACEA3 /* 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 = ""; }; + B9D5D0310DEB039C22C55846250FAC55 /* Promise+AnyPromise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Promise+AnyPromise.swift"; path = "Sources/Promise+AnyPromise.swift"; sourceTree = ""; }; + BACB3475EDF505CCBD8C6DA9D9B79E1A /* 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 = ""; }; + BACE51C2884801FFC9CC5BF92AC49895 /* CryptoSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = CryptoSwift.framework; path = CryptoSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + BB1C4BA760DD6389E4504F84209E46FD /* 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 = ""; }; + BBC8C35543F9510A70256ADA6D99B131 /* eckey.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = eckey.h; path = secp256k1_ios/src/eckey.h; sourceTree = ""; }; + BCAF291B241373EFC19176F0FBBEABC2 /* Timeline.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Timeline.swift; path = Source/Timeline.swift; sourceTree = ""; }; + BD57CDAC8629E26568DAB7556C3C9FDD /* blake2b-ref.c */ = {isa = PBXFileReference; includeInIndex = 1; name = "blake2b-ref.c"; path = "src/libsodium/crypto_generichash/blake2b/ref/blake2b-ref.c"; sourceTree = ""; }; + BDA71F60A204305FF5B1D02D12A9D1BF /* crypto_box_curve25519xsalsa20poly1305.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_box_curve25519xsalsa20poly1305.h; path = Sodium/libsodium/crypto_box_curve25519xsalsa20poly1305.h; sourceTree = ""; }; + BDAA848019BF7368ACE8278178DBCE7F /* randombytes_sysrandom.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = randombytes_sysrandom.h; path = src/libsodium/include/sodium/randombytes_sysrandom.h; sourceTree = ""; }; + BE008C29E5430422D5A8E67AE4A3F1D4 /* Promise+Properties.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Promise+Properties.swift"; path = "Sources/Promise+Properties.swift"; sourceTree = ""; }; + BF36A3F9796A65CF8CC87C6A3B847FEE /* AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AnyPromise.m; path = Sources/AnyPromise.m; sourceTree = ""; }; + BF80B2F659CE776A65A26085FBA33DB3 /* crypto_shorthash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_shorthash.h; path = src/libsodium/include/sodium/crypto_shorthash.h; sourceTree = ""; }; + BFED47516B1C2287E474D79F238CFBF5 /* Rabbit+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Rabbit+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Rabbit+Foundation.swift"; sourceTree = ""; }; + C04F62431EDF8408731465821FAB17AA /* after.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = after.m; path = Sources/after.m; sourceTree = ""; }; + C0979E27F93B161CA113FDDB1FE2D83D /* u8.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = u8.h; path = src/libsodium/crypto_stream/chacha20/dolbeau/u8.h; sourceTree = ""; }; + C0ED4796B375704E4A0243BCD4B6187A /* 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 = ""; }; + C12185645CFC421A07B700064AA478AD /* ShortHash.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ShortHash.swift; path = Sodium/ShortHash.swift; sourceTree = ""; }; + C123A2EEC460F1EF453D014E83FA8C2A /* Padding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Padding.swift; path = Sources/CryptoSwift/Padding.swift; sourceTree = ""; }; + C1351083D8F2D315FDE0DAE3A0508C0F /* Floating Point Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Floating Point Conversion.swift"; path = "sources/Floating Point Conversion.swift"; sourceTree = ""; }; + C173468047C56904E86BA78107B5BA34 /* Utils.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Utils.swift; path = Sodium/Utils.swift; sourceTree = ""; }; + C21BBFBD9973A5D55D1ED11FA5162B13 /* crypto_scalarmult_ed25519.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_scalarmult_ed25519.h; path = Sodium/libsodium/crypto_scalarmult_ed25519.h; sourceTree = ""; }; + C37846855D22D8BABC13D46926494B21 /* 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 = ""; }; + C38BCC86401EC1098D276129407562CC /* 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 = ""; }; + C407320A4BC7D3AF6A889F53AD519F84 /* crypto_pwhash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_pwhash.h; path = Sodium/libsodium/crypto_pwhash.h; sourceTree = ""; }; + C531BE1198FAD3752DB90C4716820CA8 /* Sodium-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Sodium-prefix.pch"; sourceTree = ""; }; + C576B68F42B74E95ED91DB4F4D4D3E8C /* AwaitKit-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AwaitKit-umbrella.h"; sourceTree = ""; }; + C595D9929F0D5D176E60F6ADFDAC650D /* libsodium-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "libsodium-dummy.m"; sourceTree = ""; }; + C5A7898D8B9EDE11BC9884DB5894E9BF /* secp256k1_ios.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = secp256k1_ios.modulemap; sourceTree = ""; }; + C5CC4E2B1C1EAD723D8A238FCDF407FF /* 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 = ""; }; + C6DF673C384AE4AE144AEC27145D9350 /* CryptoSwift.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = CryptoSwift.xcconfig; sourceTree = ""; }; + C6E3A74831778B694DC3C431DF37798E /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + C79AC39B6CE0FD2E178E500D74CC7F27 /* BlockModeOptions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockModeOptions.swift; path = Sources/CryptoSwift/BlockMode/BlockModeOptions.swift; sourceTree = ""; }; + C8BC3A4F511CD3C13C0C128343DE3718 /* 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 = ""; }; + C8DD6F18DCA15D6313A4A4CF257AA7CF /* SipHasher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SipHasher.swift; path = SipHash/SipHasher.swift; sourceTree = ""; }; + CA7880AC73EC7F919FED94798AEC9633 /* 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 = ""; }; + CB3DBBD5876C9D40DB599897201BFA19 /* 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 = ""; }; + CB8B65459A525583CAEA598043913B8C /* crypto_shorthash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_shorthash.h; path = Sodium/libsodium/crypto_shorthash.h; sourceTree = ""; }; + CBFC8F745CA566C8DF572672FBBEF064 /* 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 = ""; }; + CD55642000AC22C1D801AA5EAD34EBBD /* PromiseKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "PromiseKit-dummy.m"; sourceTree = ""; }; + CDC97B01BF460D5588B01DE4A96370B6 /* 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 = ""; }; + CE1E12EAA613A45AD83AFB6C0C74C5C8 /* SessionDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionDelegate.swift; path = Source/SessionDelegate.swift; sourceTree = ""; }; + CE5203F63A8342E95DB0C719FF689B9B /* num_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = num_impl.h; path = secp256k1_ios/src/num_impl.h; sourceTree = ""; }; + CE786DDC57924F9383758BECE7886086 /* SHA3.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SHA3.swift; path = Sources/CryptoSwift/SHA3.swift; sourceTree = ""; }; + CF2A6C1EEC5F3989D63F1ECEA6110555 /* scrypt_platform.c */ = {isa = PBXFileReference; includeInIndex = 1; name = scrypt_platform.c; path = src/libsodium/crypto_pwhash/scryptsalsa208sha256/scrypt_platform.c; sourceTree = ""; }; + CFA46C683F32C65C824BE2C0457818F5 /* 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 = ""; }; + CFAFB8DE7471D2B574E10DB53EF93647 /* hash_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = hash_impl.h; path = secp256k1_ios/src/hash_impl.h; sourceTree = ""; }; + D0600F183C24625738DAC5C03F8C057D /* 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 = ""; }; + D0A1AEC86C8D75A14A57346408E82AFE /* CryptoSwift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CryptoSwift-prefix.pch"; sourceTree = ""; }; + D12DA18FBD174BCE1FA98F65D2AA126C /* crypto_auth_hmacsha512256.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_auth_hmacsha512256.h; path = Sodium/libsodium/crypto_auth_hmacsha512256.h; sourceTree = ""; }; + D12F9A14671F713C138E36D1BFBB4368 /* AES+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "AES+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/AES+Foundation.swift"; sourceTree = ""; }; + D176FC18B34D481AB25938E55CD4418B /* 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 = ""; }; + D1E81ECE603635080B1B8863CCC3BA87 /* curve25519_ref10.c */ = {isa = PBXFileReference; includeInIndex = 1; name = curve25519_ref10.c; path = src/libsodium/crypto_core/curve25519/ref10/curve25519_ref10.c; sourceTree = ""; }; + D2A49F4C3ABC154B1037C4E9EB70D1EE /* when.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = when.swift; path = Sources/when.swift; sourceTree = ""; }; D3D12C3677695C4A0F7632E18BB477CA /* Pods-web3swiftTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-web3swiftTests.release.xcconfig"; sourceTree = ""; }; - D476AF40BE0C051EBEB495E12A8B1E84 /* State.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = State.swift; path = Sources/State.swift; sourceTree = ""; }; - D51B75A5F8BE2CA82C55BB4FF6923B0C /* libsodium.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = libsodium.xcconfig; sourceTree = ""; }; - D569CE1B427C121B5BAE0449BEC9CEEE /* Rabbit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Rabbit.swift; path = Sources/CryptoSwift/Rabbit.swift; sourceTree = ""; }; - D79E795CB7ED938F0E5DE7FEADF7F422 /* Codable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Codable.swift; path = sources/Codable.swift; sourceTree = ""; }; - D7CB61F288E217D8C436CD35AAF7E8D4 /* CBC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CBC.swift; path = Sources/CryptoSwift/BlockMode/CBC.swift; sourceTree = ""; }; - D7DA98D495BCE5E6153FAB7166A55386 /* obsolete.c */ = {isa = PBXFileReference; includeInIndex = 1; name = obsolete.c; path = src/libsodium/crypto_sign/ed25519/ref10/obsolete.c; sourceTree = ""; }; - D7FEC28F3DBFD25BCA60F3E7C8D6FF15 /* Hashable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Hashable.swift; path = sources/Hashable.swift; sourceTree = ""; }; - D878F47BD0BBDE5E21B803E9DB7521A6 /* crypto_box_curve25519xsalsa20poly1305.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_box_curve25519xsalsa20poly1305.h; path = Sodium/libsodium/crypto_box_curve25519xsalsa20poly1305.h; sourceTree = ""; }; - D894EE15417C0D91C98EEA35EB6DEFE3 /* UIView+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+AnyPromise.h"; path = "Extensions/UIKit/Sources/UIView+AnyPromise.h"; sourceTree = ""; }; + D3F0134ED7A7C9535A7EA63014F8B211 /* 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 = ""; }; + D459D8919804E2BBD0578996A641B056 /* 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 = ""; }; + D480F5CE7805F1FBFDFF1DC3BA9A6259 /* aead_xchacha20poly1305.c */ = {isa = PBXFileReference; includeInIndex = 1; name = aead_xchacha20poly1305.c; path = src/libsodium/crypto_aead/xchacha20poly1305/sodium/aead_xchacha20poly1305.c; sourceTree = ""; }; + D4BB87ACC78B3A8FC305B1A154ED6056 /* field_5x52.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_5x52.h; path = secp256k1_ios/src/field_5x52.h; sourceTree = ""; }; + D4E9B5F5ACE5E1E134A1B24C7B4979C4 /* ecmult_const.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_const.h; path = secp256k1_ios/src/ecmult_const.h; sourceTree = ""; }; + D4F6B5E28C06CAD97093E40CC12B2A85 /* shorthash_siphashx24.c */ = {isa = PBXFileReference; includeInIndex = 1; name = shorthash_siphashx24.c; path = src/libsodium/crypto_shorthash/siphash24/shorthash_siphashx24.c; sourceTree = ""; }; + D5E447044BE8E846F5491C860AE71506 /* blake2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = blake2.h; path = src/libsodium/crypto_generichash/blake2b/ref/blake2.h; sourceTree = ""; }; + D61847250C4C7CBE45D003EA69C61A5F /* Rabbit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Rabbit.swift; path = Sources/CryptoSwift/Rabbit.swift; sourceTree = ""; }; + D635AFC67550FFF6CFD9657596309E83 /* PKCS7.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKCS7.swift; path = Sources/CryptoSwift/PKCS/PKCS7.swift; sourceTree = ""; }; + D63E32BE11A632E454EC0531A03A0CDD /* AwaitKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "AwaitKit-dummy.m"; sourceTree = ""; }; + D6D2DE33877F1E1F525ADA572F7E2C31 /* crypto_stream_chacha20.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_stream_chacha20.h; path = Sodium/libsodium/crypto_stream_chacha20.h; sourceTree = ""; }; + D83DBCFCB5B5634C2C5910AD5FF80960 /* 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 = ""; }; + D86710F8FD8B56DF258FDC7BA1B9340F /* Alamofire.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Alamofire.xcconfig; sourceTree = ""; }; + D89C57FF4DCF499E2C6D50E0F7516A68 /* box_curve25519xsalsa20poly1305.c */ = {isa = PBXFileReference; includeInIndex = 1; name = box_curve25519xsalsa20poly1305.c; path = src/libsodium/crypto_box/curve25519xsalsa20poly1305/box_curve25519xsalsa20poly1305.c; sourceTree = ""; }; + D8B09469916027AEBD69A005947711C3 /* runtime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = runtime.h; path = Sodium/libsodium/runtime.h; sourceTree = ""; }; D90E1E26CA8CAE84EB848EDF122F5ACF /* Pods-web3swiftTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-web3swiftTests.debug.xcconfig"; sourceTree = ""; }; - D9B8DDB8B2D4E76AEB8765DD9DAFDB06 /* AES.Cryptors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AES.Cryptors.swift; path = Sources/CryptoSwift/AES.Cryptors.swift; sourceTree = ""; }; - DA096D577ABA6B477017D33EDE64D5E2 /* PMKQuartzCore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PMKQuartzCore.h; path = Extensions/QuartzCore/Sources/PMKQuartzCore.h; sourceTree = ""; }; - DBA57E97588DF44843A9837C449BE4F4 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - DBC05BB39007CF3D59B462B7595BDFAD /* crypto_stream_salsa20.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_stream_salsa20.h; path = Sodium/libsodium/crypto_stream_salsa20.h; sourceTree = ""; }; - DBD8AB896BC29A2FF3CED039FB478D15 /* 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 = ""; }; - DBE177FDD337A34000509522613D88F6 /* BigInt-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "BigInt-dummy.m"; sourceTree = ""; }; - DCEC94BA988FD836C18B1C985E3E9602 /* Bitwise Ops.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Bitwise Ops.swift"; path = "sources/Bitwise Ops.swift"; sourceTree = ""; }; - DDBE22905E1628E164583709CBB88DB3 /* Stream.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Stream.swift; path = Sodium/Stream.swift; sourceTree = ""; }; - DDC378F885805A36731D06E74B6D435B /* RandomBytesSequence.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RandomBytesSequence.swift; path = Sources/CryptoSwift/RandomBytesSequence.swift; sourceTree = ""; }; - DE35A76091F603AAD6E14F1193928E56 /* 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 = ""; }; - DEF0CEF8C7ECB3361F1E7BD494C9E050 /* when.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = when.m; path = Sources/when.m; sourceTree = ""; }; - DEFE3E096D3BB5041CFCA86B81D6DDDB /* crypto_verify_64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_verify_64.h; path = Sodium/libsodium/crypto_verify_64.h; sourceTree = ""; }; - E04C873C03647589F53D4F42C5DBA07B /* 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 = ""; }; + D91B8E6F194E81A3CDA720F0CF3017DA /* crypto_hash.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_hash.c; path = src/libsodium/crypto_hash/crypto_hash.c; sourceTree = ""; }; + D93734C487E37CC497643FCD95C8D03D /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + D957C62883D0C9D288754C24EAF62339 /* 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 = ""; }; + D9724CFE2F9521E0559D3D4F8A48B7DD /* 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 = ""; }; + D9AB746F582E11271969F057529E7E33 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + DB0C9B099068852FF502081301B6AEA6 /* 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 = ""; }; + DDCD1A7265B03C270E306C6ECFC708F2 /* DispatchQueue+Async.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DispatchQueue+Async.swift"; path = "Sources/DispatchQueue+Async.swift"; sourceTree = ""; }; + DDE7F239B8D5113CABFDD4456739BC0E /* fwd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = fwd.h; path = Sources/fwd.h; sourceTree = ""; }; + DE205A1A1516149F559DCA26CBFA94B0 /* 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 = ""; }; + DE9DF7CDD6CFCDFF62F76D27201B2BBC /* crypto_box.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_box.h; path = src/libsodium/include/sodium/crypto_box.h; sourceTree = ""; }; + DF9E21D371710F06647DC8AF6D073D56 /* race.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = race.swift; path = Sources/race.swift; sourceTree = ""; }; + E08589A3E265B3B8A45AAE1054F48429 /* 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 = ""; }; + E0B78A2E8884D56F9139A00AA9FD8780 /* crypto_stream_salsa20.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_stream_salsa20.h; path = Sodium/libsodium/crypto_stream_salsa20.h; sourceTree = ""; }; + E108AA36A595A6F2292E3A782A78EAEA /* argon2-core.c */ = {isa = PBXFileReference; includeInIndex = 1; name = "argon2-core.c"; path = "src/libsodium/crypto_pwhash/argon2/argon2-core.c"; sourceTree = ""; }; E14BBDF05637B9445829C77BAEF0D06B /* Pods-web3swift-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-web3swift-resources.sh"; sourceTree = ""; }; - E15CEF791E59BB1C7DA3E385DDB2C821 /* crypto_auth.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_auth.c; path = src/libsodium/crypto_auth/crypto_auth.c; sourceTree = ""; }; - E17540CD69DC5F1BBC7B873764867CBB /* join.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = join.swift; path = Sources/join.swift; sourceTree = ""; }; - E1B4717EF68E8258690059482072CBD6 /* 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 = ""; }; - E21AAADAB04796882DC6907516351F93 /* 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 = ""; }; - E290CB5518060C3274D2BECB67CA4835 /* Cipher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cipher.swift; path = Sources/CryptoSwift/Cipher.swift; sourceTree = ""; }; - E29715822318F05AE76DDCD18B9539DA /* box_curve25519xsalsa20poly1305.c */ = {isa = PBXFileReference; includeInIndex = 1; name = box_curve25519xsalsa20poly1305.c; path = src/libsodium/crypto_box/curve25519xsalsa20poly1305/box_curve25519xsalsa20poly1305.c; sourceTree = ""; }; - E2B74125E27DA8D444DE24EB9F4953F6 /* crypto_auth_hmacsha512.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_auth_hmacsha512.h; path = Sodium/libsodium/crypto_auth_hmacsha512.h; sourceTree = ""; }; - E2DC45459F0F7F28AD7CF062AE6B3795 /* crypto_secretbox.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_secretbox.h; path = src/libsodium/include/sodium/crypto_secretbox.h; sourceTree = ""; }; + E17458EFEC6464A8314DEAFC599FC03D /* GCD.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GCD.swift; path = sources/GCD.swift; sourceTree = ""; }; + E19AA6B463732AC1CD725BB1BACE53E2 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + E23FC85BD650B5CD0593D5E8CD3CF69F /* Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Promise.swift; path = Sources/Promise.swift; sourceTree = ""; }; + E24ED0404E0A0DA4DDA672473B5C99B8 /* ecmult_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_impl.h; path = secp256k1_ios/src/ecmult_impl.h; sourceTree = ""; }; + E26D4A27311EA1A6919E4A79E0A46483 /* Validation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Validation.swift; path = Source/Validation.swift; sourceTree = ""; }; + E27CDA0F2A2A95F9F26ABD98551BF5F1 /* ECB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ECB.swift; path = Sources/CryptoSwift/BlockMode/ECB.swift; sourceTree = ""; }; + E2885498B9E41D1CD60EB8D8170B0A1C /* kdf_blake2b.c */ = {isa = PBXFileReference; includeInIndex = 1; name = kdf_blake2b.c; path = src/libsodium/crypto_kdf/blake2b/kdf_blake2b.c; sourceTree = ""; }; + E2CA5E67E0AA450FE288FF9234B143D2 /* group.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = group.h; path = secp256k1_ios/src/group.h; sourceTree = ""; }; + E2DDB0D8C2DAC4F2A6EDC52F6E0C0654 /* 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 = ""; }; E2F5581D0772B129577EA7ABDBA8C813 /* Pods-web3Swift-Demo-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-web3Swift-Demo-umbrella.h"; sourceTree = ""; }; - E396FBD91C56C17E94BDAE8CED5802C2 /* SecretStream.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SecretStream.swift; path = Sodium/SecretStream.swift; sourceTree = ""; }; + E309D9CA14061B95F28432178D6866F7 /* 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 = ""; }; + E3922E3CCB98553653A88BE4AECF0066 /* 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 = ""; }; + E3B99777B000BD1E545EEADF4E8D4FED /* secp256k1_recovery.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = secp256k1_recovery.h; path = secp256k1_ios/include/secp256k1_recovery.h; sourceTree = ""; }; + E3C34753E5E5F3886A4AF14E9EF50CAA /* 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 = ""; }; + E3D4950CFDD58A88E82D31E171B2A0A3 /* crypto_core_salsa20.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_core_salsa20.h; path = Sodium/libsodium/crypto_core_salsa20.h; sourceTree = ""; }; + E472DA93F83DB1E4987B9327279E5802 /* crypto_scalarmult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_scalarmult.h; path = src/libsodium/include/sodium/crypto_scalarmult.h; sourceTree = ""; }; E4756506502D2DD4159F8FA00D001DA1 /* Pods-web3swift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = "Pods-web3swift.modulemap"; sourceTree = ""; }; - E4797EFA44F3B769238902C2F5F6A4BF /* 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 = ""; }; - E48A3CB74046D49F274AF740255FF298 /* salsa20_xmm6.c */ = {isa = PBXFileReference; includeInIndex = 1; name = salsa20_xmm6.c; path = src/libsodium/crypto_stream/salsa20/xmm6/salsa20_xmm6.c; sourceTree = ""; }; - E4E4CA3DD750DF656144DBC4C3CEF882 /* AFError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AFError.swift; path = Source/AFError.swift; sourceTree = ""; }; - E529DE777AFD1E5370D4724C20C225A0 /* NSTask+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSTask+AnyPromise.h"; path = "Extensions/Foundation/Sources/NSTask+AnyPromise.h"; sourceTree = ""; }; + E4BC008AC2104E0AB8D617C76C7E1937 /* SecretBox.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SecretBox.swift; path = Sodium/SecretBox.swift; sourceTree = ""; }; E52D64EBBCD6AA9FB168ACD9FD9EF33B /* Pods-web3swiftTests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-web3swiftTests-dummy.m"; sourceTree = ""; }; - E5F65F987117D26FD9D9D32C68AB3750 /* crypto_onetimeauth.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_onetimeauth.c; path = src/libsodium/crypto_onetimeauth/crypto_onetimeauth.c; sourceTree = ""; }; - E7398A2E85143F8471EA25E81F9926F4 /* 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 = ""; }; - E759F7D4B2094E694B942243481FAE26 /* BlockModeOptions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockModeOptions.swift; path = Sources/CryptoSwift/BlockMode/BlockModeOptions.swift; sourceTree = ""; }; - E7EA887E557B5613F701F400083054F5 /* crypto_auth_hmacsha256.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_auth_hmacsha256.h; path = Sodium/libsodium/crypto_auth_hmacsha256.h; sourceTree = ""; }; - E80E5EA27D02B1FEEEF1D5D0029B8703 /* crypto_auth_hmacsha512256.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_auth_hmacsha512256.h; path = Sodium/libsodium/crypto_auth_hmacsha512256.h; sourceTree = ""; }; - E8135EB8B8AA793953230E6D9CA06C59 /* CALayer+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CALayer+AnyPromise.h"; path = "Extensions/QuartzCore/Sources/CALayer+AnyPromise.h"; sourceTree = ""; }; + E5CAB017EB0CC4F0D6C21C341953A4FF /* Pods_web3Swift_Demo.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_web3Swift_Demo.framework; path = "Pods-web3Swift-Demo.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + E5F64ADA40753F1FE7267A17A536882E /* AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AnyPromise.h; path = Sources/AnyPromise.h; sourceTree = ""; }; + E60E47AE8A68FE2F1BC17B1B470B35A8 /* 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 = ""; }; + E612172B5EC8A35BE2BE84F05D8828BA /* fe51.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = fe51.h; path = src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51.h; sourceTree = ""; }; + E613EA139E44FE65BBA7B79EDF0731B6 /* fe51_invert.c */ = {isa = PBXFileReference; includeInIndex = 1; name = fe51_invert.c; path = src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_invert.c; sourceTree = ""; }; + E61A7C34E2811F18B407EBEF5B301368 /* 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 = ""; }; + E741BB492570036869CFBA7D59476010 /* 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 = ""; }; + E74A8CFCF1827026C6E4899D6DB42DB2 /* hang.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = hang.m; path = Sources/hang.m; sourceTree = ""; }; + E7E9A9AB76A9522BE280E7227D5D7258 /* secp256k1_ios.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = secp256k1_ios.xcconfig; sourceTree = ""; }; E876D0C9EB4B559A4FEE3BDC0BC4CA03 /* Pods-web3swiftTests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-web3swiftTests-acknowledgements.plist"; sourceTree = ""; }; - E8827F004C799D73CE6774B97ED3F198 /* 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 = ""; }; - E8D48EF82D79720DEA5ABCF6378E6086 /* crypto_secretstream_xchacha20poly1305.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_secretstream_xchacha20poly1305.h; path = Sodium/libsodium/crypto_secretstream_xchacha20poly1305.h; sourceTree = ""; }; - E8DFB4C58E652CD3849E3CDC9649EF72 /* Exponentiation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Exponentiation.swift; path = sources/Exponentiation.swift; sourceTree = ""; }; - E8EB5BF78D0D556ECD423032A985D248 /* crypto_kdf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_kdf.h; path = src/libsodium/include/sodium/crypto_kdf.h; sourceTree = ""; }; - E99443F101FEE6C7422D6F68E92CA3EC /* UInt32+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt32+Extension.swift"; path = "Sources/CryptoSwift/UInt32+Extension.swift"; sourceTree = ""; }; - E9DDA2A9AD89F335F41760009AED4A2C /* stream_aes128ctr.c */ = {isa = PBXFileReference; includeInIndex = 1; name = stream_aes128ctr.c; path = src/libsodium/crypto_stream/aes128ctr/stream_aes128ctr.c; sourceTree = ""; }; - EA63B8FD047079681D55D7C81F0D84B5 /* PromiseKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PromiseKit-prefix.pch"; sourceTree = ""; }; - EA798B81B55F2665470AD5EBC76E6DB3 /* Shifts.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Shifts.swift; path = sources/Shifts.swift; sourceTree = ""; }; + E88AF6EDA20AE2830F19AC192BF410A3 /* consts.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = consts.h; path = src/libsodium/crypto_stream/aes128ctr/nacl/consts.h; sourceTree = ""; }; + E88D8C10529622E9AB903834D20B37C9 /* scalar_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_impl.h; path = secp256k1_ios/src/scalar_impl.h; sourceTree = ""; }; + E974A7C8E586D5D228C7459016BEAA2C /* crypto_box.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_box.h; path = Sodium/libsodium/crypto_box.h; sourceTree = ""; }; + E994C064DB3F93EC87170C0196358C21 /* PromiseKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = PromiseKit.framework; path = PromiseKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + E997BA6884E45BA4379B76872903FD4F /* 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 = ""; }; + E9B31E3BC870D3F0CCC1CDD2520C3771 /* PromiseKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PromiseKit-prefix.pch"; sourceTree = ""; }; + EA8E03E0252AC9BB1F087D520557BE50 /* Notifications.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Notifications.swift; path = Source/Notifications.swift; sourceTree = ""; }; EABA1D68D3EEE3AF72041EB4B32F047B /* SipHash.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SipHash.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - EC9C143E88FB15761B5A85C577A522B2 /* 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 = ""; }; - ED6A7E40E402EE82715CABD6845C96EA /* Zalgo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Zalgo.swift; path = Sources/Zalgo.swift; sourceTree = ""; }; - EDA037C5ADD0B7C9FAF3DC6D140A51DE /* UInt64+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt64+Extension.swift"; path = "Sources/CryptoSwift/UInt64+Extension.swift"; sourceTree = ""; }; - EEC9DC121948BAC1B3BEDBC65EBED54B /* beforenm_aes128ctr.c */ = {isa = PBXFileReference; includeInIndex = 1; name = beforenm_aes128ctr.c; path = src/libsodium/crypto_stream/aes128ctr/nacl/beforenm_aes128ctr.c; sourceTree = ""; }; - EF04303D7B2818876F041A8E68A8353B /* KeyDerivation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KeyDerivation.swift; path = Sodium/KeyDerivation.swift; sourceTree = ""; }; - EF276126611EBE9D50BD544D5ED09A3F /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - EF3BFE91B26C01FBB2CAC5BB83EB5D00 /* Alamofire.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = Alamofire.modulemap; sourceTree = ""; }; - EF8D1AA8470987C23FD75AEB7493FE7C /* Utils.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Utils.swift; path = Sources/CryptoSwift/Utils.swift; sourceTree = ""; }; - EF949CC142729F5D464E2A5A2888352E /* crypto_hash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_hash.h; path = src/libsodium/include/sodium/crypto_hash.h; sourceTree = ""; }; - F03999B5FD8FC48C689AADA8853A188B /* Sodium.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Sodium.h; path = Sodium/Sodium.h; sourceTree = ""; }; + EAF664422D10623D6C5AC8753997E10C /* pbkdf2-sha256.c */ = {isa = PBXFileReference; includeInIndex = 1; name = "pbkdf2-sha256.c"; path = "src/libsodium/crypto_pwhash/scryptsalsa208sha256/pbkdf2-sha256.c"; sourceTree = ""; }; + EAF88EF17DC709BD802C0E57F078E878 /* 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 = ""; }; + EC7449EB9268B15EDD3B97A0A26F71B6 /* version.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = version.h; path = Sodium/libsodium/version.h; sourceTree = ""; }; + ECD7AB08EF8C8FF863D7B4E850AC726F /* 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 = ""; }; + ED0D20C17362D69D27893545D5E5D287 /* HMAC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HMAC.swift; path = Sources/CryptoSwift/HMAC.swift; sourceTree = ""; }; + ED9E2120E47F514B3E0D0A6E20BC2901 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + EDCCF73D93A57CA87DEFA1765EF38AB3 /* secretbox_xsalsa20poly1305.c */ = {isa = PBXFileReference; includeInIndex = 1; name = secretbox_xsalsa20poly1305.c; path = src/libsodium/crypto_secretbox/xsalsa20poly1305/secretbox_xsalsa20poly1305.c; sourceTree = ""; }; + EE1D15C808270874570DD294A48887C6 /* u0.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = u0.h; path = src/libsodium/crypto_stream/salsa20/xmm6int/u0.h; sourceTree = ""; }; + EE8D28A3351F1F43EBF7B63F9773E4A0 /* 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 = ""; }; + EE9B24DD7D2EEFD4CE6ED69359F155CB /* PCBC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PCBC.swift; path = Sources/CryptoSwift/BlockMode/PCBC.swift; sourceTree = ""; }; + EF2B473B6FD8B03E940D2CDA6878B720 /* secp256k1.c */ = {isa = PBXFileReference; includeInIndex = 1; name = secp256k1.c; path = secp256k1_ios/src/secp256k1.c; sourceTree = ""; }; F0A02C0C88262B7197513710F6EF061D /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - F0AF7E7C367AB2DA5A42BC0F17AD4E75 /* randombytes_salsa20_random.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = randombytes_salsa20_random.h; path = Sodium/libsodium/randombytes_salsa20_random.h; sourceTree = ""; }; - F0BB96CB62B6873D3E98DF1347CB719A /* 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 = ""; }; - F0CC2BBE7120DF2D9CB24C425A6D1735 /* BlockMode.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockMode.swift; path = Sources/CryptoSwift/BlockMode/BlockMode.swift; sourceTree = ""; }; - F3B834FEECF91EB4ED2EB9B56D4A2D77 /* CryptoSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = CryptoSwift.framework; path = CryptoSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - F46733AE4E4B1F477E3B07C4392B5F05 /* 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 = ""; }; - F5830D3F2F4E1C6C860A029F26F2F132 /* SipHash.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SipHash.xcconfig; sourceTree = ""; }; - F590A82B515161A678869630ADBA9E15 /* ladder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ladder.h; path = src/libsodium/crypto_scalarmult/curve25519/sandy2x/ladder.h; sourceTree = ""; }; - F640C82080BD7574A2C429A3CC39C85E /* libsodium-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "libsodium-dummy.m"; sourceTree = ""; }; - F6CBAA67EDE1BDA9DEB56772016F528A /* ChaCha20+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ChaCha20+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/ChaCha20+Foundation.swift"; sourceTree = ""; }; - F6EA938C31EF31D6024DEC6F450AA1AC /* 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 = ""; }; - F7101D07389E7E02BBB25BA89420D69C /* poly1305_donna.c */ = {isa = PBXFileReference; includeInIndex = 1; name = poly1305_donna.c; path = src/libsodium/crypto_onetimeauth/poly1305/donna/poly1305_donna.c; sourceTree = ""; }; - F8115F70BDFD8BE3E2C2423A49C31108 /* PMKFoundation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PMKFoundation.h; path = Extensions/Foundation/Sources/PMKFoundation.h; sourceTree = ""; }; - F882C900F84E7B9D312C9A225A61F98F /* 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 = ""; }; - F90B7341523806D70335F9C0DCF5F9DB /* sign_ed25519.c */ = {isa = PBXFileReference; includeInIndex = 1; name = sign_ed25519.c; path = src/libsodium/crypto_sign/ed25519/sign_ed25519.c; sourceTree = ""; }; - F913CC4F2405BEBC5E723E1FC0AFCBA0 /* 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 = ""; }; - F94671D067B63D3031BB746521FFC605 /* BatchedCollection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BatchedCollection.swift; path = Sources/CryptoSwift/BatchedCollection.swift; sourceTree = ""; }; - F98B617BC076A2B70A723554D8944C87 /* Error.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Error.swift; path = Sources/Error.swift; sourceTree = ""; }; - FA3BB286B2C429F1AEA39AB59F3217D2 /* crypto_verify_32.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_verify_32.h; path = Sodium/libsodium/crypto_verify_32.h; sourceTree = ""; }; - FA4358D582ABD1AB7473D3FF105A0BB9 /* Sodium-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Sodium-umbrella.h"; sourceTree = ""; }; - FA43EBAB7DA175DC9BA7E02EC462E9B1 /* SipHash.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = SipHash.modulemap; sourceTree = ""; }; - FAA4DCBF3C1CE7AECA7DA585EC8C3877 /* crypto_hash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_hash.h; path = Sodium/libsodium/crypto_hash.h; sourceTree = ""; }; - FAF24B664575C88F790FC95622D5DC6A /* crypto_shorthash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_shorthash.h; path = src/libsodium/include/sodium/crypto_shorthash.h; sourceTree = ""; }; - FB0404E0EA931A72E9DA7795B9222090 /* BigInt-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "BigInt-umbrella.h"; sourceTree = ""; }; - FB93B58926CB4967A01BD37D6AF20489 /* box_curve25519xchacha20poly1305.c */ = {isa = PBXFileReference; includeInIndex = 1; name = box_curve25519xchacha20poly1305.c; path = src/libsodium/crypto_box/curve25519xchacha20poly1305/box_curve25519xchacha20poly1305.c; sourceTree = ""; }; - FBE5EDC0D8BB184955502C1D95B78D1F /* PromiseKit-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PromiseKit-umbrella.h"; sourceTree = ""; }; - FBEAA135553BC406F908BAD21B726743 /* PromiseKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = PromiseKit.framework; path = PromiseKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - FC1236DE9C128EEB97958020FC3634BA /* hash_sha512.c */ = {isa = PBXFileReference; includeInIndex = 1; name = hash_sha512.c; path = src/libsodium/crypto_hash/sha512/hash_sha512.c; sourceTree = ""; }; - FC1CA0D8D767F08057955D98FBC67AC8 /* 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 = ""; }; - FD6C3F0DF341AB61FA03ED2D0512C889 /* crypto_stream_xsalsa20.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_stream_xsalsa20.h; path = Sodium/libsodium/crypto_stream_xsalsa20.h; sourceTree = ""; }; - FDFD3F6F778C52F97699B36406BA738A /* 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 = ""; }; - FEB571437F00CBEF70B447CAF8089B98 /* CTR.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CTR.swift; path = Sources/CryptoSwift/BlockMode/CTR.swift; sourceTree = ""; }; - FEF0E5643D8E080FA89E3E553A18BC77 /* 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 = ""; }; - FF2D8B6F00BB672FC8F78DBFF26B786E /* randombytes_salsa20_random.c */ = {isa = PBXFileReference; includeInIndex = 1; name = randombytes_salsa20_random.c; path = src/libsodium/randombytes/salsa20/randombytes_salsa20_random.c; sourceTree = ""; }; - FF2DF7C9806BA9E6C5D4C33A56D92F65 /* Process+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Process+Promise.swift"; path = "Extensions/Foundation/Sources/Process+Promise.swift"; sourceTree = ""; }; - FFD1A6EDF1303A694BE66EAAFA6B1960 /* 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 = ""; }; - FFFAB920EA66166C023C323250EF7C79 /* auth_hmacsha256.c */ = {isa = PBXFileReference; includeInIndex = 1; name = auth_hmacsha256.c; path = src/libsodium/crypto_auth/hmacsha256/auth_hmacsha256.c; sourceTree = ""; }; + F16F778FF7C25D4E1A3F9D3F127D5049 /* box_curve25519xchacha20poly1305.c */ = {isa = PBXFileReference; includeInIndex = 1; name = box_curve25519xchacha20poly1305.c; path = src/libsodium/crypto_box/curve25519xchacha20poly1305/box_curve25519xchacha20poly1305.c; sourceTree = ""; }; + F21C35CA5E6CC21FE368236CCB7C9B5B /* crypto_sign_ed25519.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_sign_ed25519.h; path = Sodium/libsodium/crypto_sign_ed25519.h; sourceTree = ""; }; + F2C981F61422118967CBF03EF54FA026 /* Request.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Request.swift; path = Source/Request.swift; sourceTree = ""; }; + F31106D0FCB6CEE542DC48827D70BAE7 /* crypto_hash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_hash.h; path = Sodium/libsodium/crypto_hash.h; sourceTree = ""; }; + F433BCA56DB4CE61C476AC0BE3BC997B /* PKCS5.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKCS5.swift; path = Sources/CryptoSwift/PKCS/PKCS5.swift; sourceTree = ""; }; + F465EAE03BDC061A09E71DDD019A80B4 /* BigInt-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "BigInt-umbrella.h"; sourceTree = ""; }; + F4FBBFD965DF052B8288416F8ECE820D /* libsodium.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = libsodium.modulemap; sourceTree = ""; }; + F50A68F24912B392ED77969594E36B3A /* Array+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Array+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Array+Foundation.swift"; sourceTree = ""; }; + F54B112723A72E3B144733F0E8D21EF4 /* core.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = core.h; path = Sodium/libsodium/core.h; sourceTree = ""; }; + F59B11885A0CFB1B32352ADD0B2D7AA8 /* 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 = ""; }; + F5C345E23EEC1A018831DEEFD1566591 /* PWHash.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PWHash.swift; path = Sodium/PWHash.swift; sourceTree = ""; }; + F6182AB470715D0DC65595CAEBA0A087 /* NSNotificationCenter+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSNotificationCenter+AnyPromise.m"; path = "Extensions/Foundation/Sources/NSNotificationCenter+AnyPromise.m"; sourceTree = ""; }; + F70B2509DBD7BA84D68373BC2264219A /* Int+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Int+Extension.swift"; path = "Sources/CryptoSwift/Int+Extension.swift"; sourceTree = ""; }; + F79DB63F81A4C5B0AAB463DAF9894EA4 /* BigInt.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BigInt.swift; path = sources/BigInt.swift; sourceTree = ""; }; + F81A8F97AC5F7AF062738E8F94E74014 /* crypto_stream.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_stream.h; path = Sodium/libsodium/crypto_stream.h; sourceTree = ""; }; + F836BDA62460EB1012844A1FE8FDF9DD /* UIView+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+AnyPromise.m"; path = "Extensions/UIKit/Sources/UIView+AnyPromise.m"; sourceTree = ""; }; + F880B9DB12A0C175AC38E0C7DAB329DE /* afterlife.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = afterlife.swift; path = Extensions/Foundation/Sources/afterlife.swift; sourceTree = ""; }; + F89012584150A82F53FB77A113DC3C7E /* stream_chacha20.c */ = {isa = PBXFileReference; includeInIndex = 1; name = stream_chacha20.c; path = src/libsodium/crypto_stream/chacha20/stream_chacha20.c; sourceTree = ""; }; + F975D20521AAFBFC41C6CD288AEE7570 /* NSTask+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSTask+AnyPromise.m"; path = "Extensions/Foundation/Sources/NSTask+AnyPromise.m"; sourceTree = ""; }; + F9F718679D1EEB1DDFFCFEDE3AE12E59 /* keypair.c */ = {isa = PBXFileReference; includeInIndex = 1; name = keypair.c; path = src/libsodium/crypto_sign/ed25519/ref10/keypair.c; sourceTree = ""; }; + FA6E203FA63E11ED4253C057238FDA83 /* SipHash.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SipHash.xcconfig; sourceTree = ""; }; + FAD8B1A0353421019632DFAA69E13A02 /* crypto_kdf.c */ = {isa = PBXFileReference; includeInIndex = 1; name = crypto_kdf.c; path = src/libsodium/crypto_kdf/crypto_kdf.c; sourceTree = ""; }; + FAFBECBF0699CF3EEA8462A0E1CD353D /* PromiseKit-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PromiseKit-umbrella.h"; sourceTree = ""; }; + FB3C4BD598AE14C32AE77FF5FD20D87F /* libsodium-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "libsodium-prefix.pch"; sourceTree = ""; }; + FC0C74D474FB6473137A07FDCEC76FF2 /* Box.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Box.swift; path = Sodium/Box.swift; sourceTree = ""; }; + FCE740FA7EC07ABF6578C0F337CE66B5 /* Square Root.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Square Root.swift"; path = "sources/Square Root.swift"; sourceTree = ""; }; + FD5110BF64D11F842134688BBED75E60 /* mutex.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = mutex.h; path = src/libsodium/include/sodium/private/mutex.h; sourceTree = ""; }; + FD5786515E1BBCED149C8144626D3C47 /* libsodium.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = libsodium.framework; path = libsodium.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + FE376550A8CBEF1C9BC27EFF4801B346 /* Primitive Types.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Primitive Types.swift"; path = "SipHash/Primitive Types.swift"; sourceTree = ""; }; + FEB35885E0F16F5531B533C9621FCC1E /* crypto_auth_hmacsha512.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = crypto_auth_hmacsha512.h; path = Sodium/libsodium/crypto_auth_hmacsha512.h; sourceTree = ""; }; + FF14233605F943940BCDCCD8F3629E8B /* Data+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data+Extension.swift"; path = "Sources/CryptoSwift/Foundation/Data+Extension.swift"; sourceTree = ""; }; + FF40CAE7B5FA9C6D5C50E48A28A4D563 /* int128.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = int128.h; path = src/libsodium/crypto_stream/aes128ctr/nacl/int128.h; sourceTree = ""; }; + FF6520AC0622133ECCB92B10A716E1A7 /* Multiplication.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Multiplication.swift; path = sources/Multiplication.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + 02C9284B267BF0DA21595395BE986313 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 09F93153C909B2AB3749991F58400186 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 06FC3E95509224887C8E9111CDB9D572 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -1265,11 +1400,19 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 18361E7FE71DD6D0CF8D3D6F9B648C24 /* Frameworks */ = { + 12288D53BD3458F666B6D92D3CB9A6BC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 24AED1447A9581AB5D9F5CE1F3F1D2C3 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 46D3D7890C10FDEDB37C94E1A2CADC8E /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C62A2197753EECDE01EE4037FBD0F091 /* Foundation.framework in Frameworks */, + ADEE8892F42EA37E2762D8FAE7D80952 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1284,45 +1427,45 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 752B4ED0415C87837D344CBC97CC0B3B /* Frameworks */ = { + 6FE1074B39C2574EE08A57913F45977A /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - DADB149520BA9B4E1C6DE4998629D224 /* Foundation.framework in Frameworks */, - D68EBBD4056AE13BE83F9BAB86F3B1BA /* SipHash.framework in Frameworks */, + C0068BBE7CE85C9CA092A44C3EBAD101 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 99195E4207764744AEC07ECCBCD550EB /* Frameworks */ = { + 752B4ED0415C87837D344CBC97CC0B3B /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 73B9C996AED49ED7CF8EC2A6F1738059 /* Foundation.framework in Frameworks */, + DADB149520BA9B4E1C6DE4998629D224 /* Foundation.framework in Frameworks */, + D68EBBD4056AE13BE83F9BAB86F3B1BA /* SipHash.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - AB0C87ADD04AC48805842A3BA5E58894 /* Frameworks */ = { + 7CFDAE3A1E4BBFC7B9D942F7AEFE8F7C /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 520277896BDB16DF0820331D1C828728 /* Foundation.framework in Frameworks */, - 6018AED181431FEFB51B045CE8959180 /* PromiseKit.framework in Frameworks */, + 3D01EE4C585437945F6ACF95D41A7985 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - AF12C11EE7A362FC27BB72391A38A251 /* Frameworks */ = { + 99195E4207764744AEC07ECCBCD550EB /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - FD827B859EBD7F44BA8FE9E6C32391A2 /* Foundation.framework in Frameworks */, + 73B9C996AED49ED7CF8EC2A6F1738059 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - CB552344BBFB8C4E662FEB5A0E907588 /* Frameworks */ = { + AB0C87ADD04AC48805842A3BA5E58894 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - F84241B1DA3BE1493BAEC4382D758763 /* Foundation.framework in Frameworks */, + 520277896BDB16DF0820331D1C828728 /* Foundation.framework in Frameworks */, + 6018AED181431FEFB51B045CE8959180 /* PromiseKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1342,96 +1485,138 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - ED2D694E86E4C12664D4B2BE794E0B6D /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 3D133071AF42DFDA7E1D2D2A2414B700 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 02A93EF6E67B89B9C8B12855ADCAC761 /* SipHash */ = { - isa = PBXGroup; - children = ( - 7BE4D1E91920CC385DF4FDFBCB9CA797 /* Primitive Types.swift */, - C50D54526E4FB9B70073E846C0AB19D4 /* RandomUInt64.swift */, - B6A32356029CA16B9B0EB9DE4E017172 /* SipHashable.swift */, - 4179BA0C81529BA84385A2A4D90BF09C /* SipHasher.swift */, - 9379A7899856658C2CAF35B6CBC48E3B /* Support Files */, - ); - name = SipHash; - path = SipHash; - sourceTree = ""; - }; - 02EAF5CBCFB1042F957B3AA699E45B54 /* Pods */ = { - isa = PBXGroup; - children = ( - 06514E2498310EF9110471043B8C0183 /* Alamofire */, - 0E4B24B33117C8037BCA95392B8C7DC8 /* AwaitKit */, - E412F472A6F2364CF89FBA2EBA6B160A /* BigInt */, - 8D13A1C41864FDE7E38718764DE16B26 /* CryptoSwift */, - 2A65D79326FA31E12A5268EDDF501388 /* libsodium */, - 630094660E1FBAD8548ABBE3887AFA6E /* PromiseKit */, - 02A93EF6E67B89B9C8B12855ADCAC761 /* SipHash */, - B6DE25EA2B1F9F586FD11C67A63830FB /* Sodium */, - ); - name = Pods; - sourceTree = ""; - }; - 06514E2498310EF9110471043B8C0183 /* Alamofire */ = { + 02AA3F6BA5110B2866B3B490E07DCD88 /* AwaitKit */ = { isa = PBXGroup; children = ( - E4E4CA3DD750DF656144DBC4C3CEF882 /* AFError.swift */, - 15D4691A9B0FE6D7EAB687FEAA46F2DE /* Alamofire.swift */, - AB13FE01F203D4B1698DD35B67D00823 /* DispatchQueue+Alamofire.swift */, - 3FECA9358885E0B80EA14BCEEC8FA6A7 /* MultipartFormData.swift */, - 98F3F7866CB1D23A503E9A07FA669317 /* NetworkReachabilityManager.swift */, - CBA4772E08B0088301B5AAFE4E7CEC7F /* Notifications.swift */, - 769B93DF09542C97D6A850E4EB6A7A09 /* ParameterEncoding.swift */, - 4EEF66FB0714B796614B1D411FCA6804 /* Request.swift */, - 0D3BC3C45D705077795EFE4798BFDE15 /* Response.swift */, - 18D0D724107030A4BEC68DA36C56D528 /* ResponseSerialization.swift */, - 2B3861F17DF08D9F18C2A1B2FC42C262 /* Result.swift */, - 06473A7FEB53EFEC8578956155DAA880 /* ServerTrustPolicy.swift */, - AE7A1B5E35E55006A510CD1531E8E8C1 /* SessionDelegate.swift */, - 88670CDAF1F762A196BC605C5BE8D615 /* SessionManager.swift */, - 8458DD49204B0E21C7055CB05FAFAC19 /* TaskDelegate.swift */, - 53E2FF4CDFE83A52651978AE5802CDB6 /* Timeline.swift */, - 94EDB94F71D60ABA3EB314D4CE168A23 /* Validation.swift */, - 3FA08A74E74F1068855B6B0673E094A6 /* Support Files */, + 43E1A11E65ED2701A473D9D471EBE10C /* AwaitKit.swift */, + 835C70D7E6E084D1BBE284B20D872A00 /* AwaitKitExtension.swift */, + DDCD1A7265B03C270E306C6ECFC708F2 /* DispatchQueue+Async.swift */, + 8ECABF32DD18B149286300E2BD35C8C3 /* DispatchQueue+Await.swift */, + DE64ECF58E3F57CF7C98931572D14FAC /* Support Files */, ); - name = Alamofire; - path = Alamofire; + name = AwaitKit; + path = AwaitKit; sourceTree = ""; }; - 0E4B24B33117C8037BCA95392B8C7DC8 /* AwaitKit */ = { + 158B341F1819F7F9DDC9E22BECC4D70D /* Sodium */ = { isa = PBXGroup; children = ( - BF21F9017E9A93F72F694260565C10CE /* AwaitKit.swift */, - 376EA041D80D70A5F6639E5C24CE02CF /* AwaitKitExtension.swift */, - 760B26E0B47A6F1464A65A0AD98AEF89 /* DispatchQueue+Async.swift */, - 172B50E013F87E6F8F7DF07401A1084A /* DispatchQueue+Await.swift */, - 3C3D97733D510379BF2B476B3A000945 /* Support Files */, + 2EF6DEB3CB4E95C3252E7CBB3B12588F /* Auth.swift */, + FC0C74D474FB6473137A07FDCEC76FF2 /* Box.swift */, + F54B112723A72E3B144733F0E8D21EF4 /* core.h */, + 28C18FDDDDB9701BB3FE62632D8CA23F /* crypto_aead_aes256gcm.h */, + 3D663C0CDF436D17D90A04E052218AFB /* crypto_aead_chacha20poly1305.h */, + 2A7A32794631740B74DB60445F9E3D3C /* crypto_aead_xchacha20poly1305.h */, + 7DE97E5508C0A1FC70E47A0384BAB4BE /* crypto_auth.h */, + 0EEFE57ACD69B006019558A2F179D7C4 /* crypto_auth_hmacsha256.h */, + FEB35885E0F16F5531B533C9621FCC1E /* crypto_auth_hmacsha512.h */, + D12DA18FBD174BCE1FA98F65D2AA126C /* crypto_auth_hmacsha512256.h */, + E974A7C8E586D5D228C7459016BEAA2C /* crypto_box.h */, + 28008B7D35486A5CB4E9062EF3CFB712 /* crypto_box_curve25519xchacha20poly1305.h */, + BDA71F60A204305FF5B1D02D12A9D1BF /* crypto_box_curve25519xsalsa20poly1305.h */, + 79A14242D6ED138AAA97062D1DD8C001 /* crypto_core_curve25519.h */, + 8116C4E6FB1D91DFAA4F811A17CA432A /* crypto_core_ed25519.h */, + 1F2B2AF0204E5B155C5501B32A9EDDBD /* crypto_core_hchacha20.h */, + 4076C429A743BB72EE5B4A1674E99D7C /* crypto_core_hsalsa20.h */, + E3D4950CFDD58A88E82D31E171B2A0A3 /* crypto_core_salsa20.h */, + 72FE1A7DE05FE1BC7004B1E14B5A7CED /* crypto_core_salsa2012.h */, + 524FE5AC9C63DBC074545CD4CC6DB23B /* crypto_core_salsa208.h */, + 38284CB145778671690E69B89C01C939 /* crypto_generichash.h */, + 99074594DF0703474EFB686F1C65F0C1 /* crypto_generichash_blake2b.h */, + F31106D0FCB6CEE542DC48827D70BAE7 /* crypto_hash.h */, + 3431FE02FD7945DF82E6ECC08A7F354F /* crypto_hash_sha256.h */, + 12053A4209496A4A19A160E28F961618 /* crypto_hash_sha512.h */, + 2D9B08D152005ABECB7CBC2AC1EB8634 /* crypto_kdf.h */, + 72782FF26452FDF3B5CEE5F077A8CF86 /* crypto_kdf_blake2b.h */, + 8042D52348ADEAFA244CB22ED0365169 /* crypto_kx.h */, + 5CDA2AED9BCEC68B3DB3554A8F1152BB /* crypto_onetimeauth.h */, + 1E1DA3CC83C5A9C0DF6CFEFAFB4066B4 /* crypto_onetimeauth_poly1305.h */, + C407320A4BC7D3AF6A889F53AD519F84 /* crypto_pwhash.h */, + 818E0694B30337BFF1853286160D3DE5 /* crypto_pwhash_argon2i.h */, + 4BB5D6A2398A86AEE160E6CC065A9743 /* crypto_pwhash_argon2id.h */, + 49F50AA2D7F488D13023A1F3DCE5D554 /* crypto_pwhash_scryptsalsa208sha256.h */, + 177B97316A783C6D8299DF47BC8DBFE1 /* crypto_scalarmult.h */, + 26F4133F691E405A0582153198ABE109 /* crypto_scalarmult_curve25519.h */, + C21BBFBD9973A5D55D1ED11FA5162B13 /* crypto_scalarmult_ed25519.h */, + 6F86BA9EE60961E0634E43644A0BEAE2 /* crypto_secretbox.h */, + A122608E3EA15CE162B320153E50FD1C /* crypto_secretbox_xchacha20poly1305.h */, + 941B630FBC0BBB335949C76C4BB98E74 /* crypto_secretbox_xsalsa20poly1305.h */, + A8B97DA5307D1B7DA32E266D34327DEB /* crypto_secretstream_xchacha20poly1305.h */, + CB8B65459A525583CAEA598043913B8C /* crypto_shorthash.h */, + 09FCF4661FE7FF5B713712D229D4A21F /* crypto_shorthash_siphash24.h */, + 95498B857B79AAF3B0D8C50476345603 /* crypto_sign.h */, + F21C35CA5E6CC21FE368236CCB7C9B5B /* crypto_sign_ed25519.h */, + 0EB415CD3D551173C0775C0C806F4AF8 /* crypto_sign_edwards25519sha512batch.h */, + F81A8F97AC5F7AF062738E8F94E74014 /* crypto_stream.h */, + D6D2DE33877F1E1F525ADA572F7E2C31 /* crypto_stream_chacha20.h */, + E0B78A2E8884D56F9139A00AA9FD8780 /* crypto_stream_salsa20.h */, + 1699057AB58BCC4482C13C26AD4868AA /* crypto_stream_salsa2012.h */, + 6E1889A8DC1C478F64035CFE6C4913A8 /* crypto_stream_salsa208.h */, + 060398BC43B44A6EB87209055126CF7D /* crypto_stream_xchacha20.h */, + 1A5FAA6C3122E3B0EA41EFC34A427E00 /* crypto_stream_xsalsa20.h */, + 30054AA6B00300917677FEE68BDD67D1 /* crypto_verify_16.h */, + 8A3C0AA85CFCC64440AF9558E389722C /* crypto_verify_32.h */, + 9F5B4C9E692E1FDA78F5D61FC2EB5D90 /* crypto_verify_64.h */, + A26DCC2932F1074BAB0C7CCD6FABCEC6 /* export.h */, + 82921EC6A1730DE76CF5F6B5482AE67A /* GenericHash.swift */, + 84B00AB4B8779752240645DED049277F /* KeyDerivation.swift */, + 707EF3CE91267D68E9CCC8A76D34975F /* KeyExchange.swift */, + F5C345E23EEC1A018831DEEFD1566591 /* PWHash.swift */, + 789B599CCA6C037989115E6E029B4694 /* randombytes.h */, + 08D2CF26947DAAB4512ECCF242CC504D /* RandomBytes.swift */, + 1D97C1CFBE0D027B4FA1982674AFD4F5 /* randombytes_salsa20_random.h */, + A7A51446A74E1AC0217F4212E9EA1D1C /* randombytes_sysrandom.h */, + D8B09469916027AEBD69A005947711C3 /* runtime.h */, + E4BC008AC2104E0AB8D617C76C7E1937 /* SecretBox.swift */, + 39FB7DB913E7E943C0468DA89619A75D /* SecretStream.swift */, + C12185645CFC421A07B700064AA478AD /* ShortHash.swift */, + 4E9C8E6D6E8B32B5AB5E0A3A44D0ADB1 /* Sign.swift */, + A2F63423642935965844FE77EB88D975 /* Sodium.h */, + 200C7AA5438C49D9F2F8520247F40DA5 /* Sodium.swift */, + 5FA2FE36770EF846EC9857FCCA53E0B8 /* sodium_lib.h */, + 4F081C8188E08175788D1B747A9497E4 /* Stream.swift */, + 882BC0475026D21DB2FAF6BFE9AE671E /* utils.h */, + C173468047C56904E86BA78107B5BA34 /* Utils.swift */, + EC7449EB9268B15EDD3B97A0A26F71B6 /* version.h */, + F8025394A1F5064B2AAF2665A824B445 /* Frameworks */, + E352299C8367EDC372304D2C2DB3A904 /* Support Files */, ); - name = AwaitKit; - path = AwaitKit; + name = Sodium; + path = Sodium; sourceTree = ""; }; - 18CAAF6E378D4DB29B1347E06884C39B /* Support Files */ = { + 165BD8034D43498D3069171848166ACF /* BigInt */ = { isa = PBXGroup; children = ( - 8AD4C1B1FFD7B18F55FBA2E2E78EB2FC /* BigInt.modulemap */, - 8A0554D47E6BFADA63ABDCF9468DD263 /* BigInt.xcconfig */, - DBE177FDD337A34000509522613D88F6 /* BigInt-dummy.m */, - 963D12CBA11769BEBC355F012133FE0B /* BigInt-prefix.pch */, - FB0404E0EA931A72E9DA7795B9222090 /* BigInt-umbrella.h */, - 5B1A31456BDB6A463717508CF35477F5 /* Info.plist */, + 941C4C199B0BD01B309D824EA561D297 /* Addition.swift */, + F79DB63F81A4C5B0AAB463DAF9894EA4 /* BigInt.swift */, + 907913A69CB4889AE525A8F5803F545D /* BigUInt.swift */, + 3FDA2E4E741C25EFB8BA4857530E6E74 /* Bitwise Ops.swift */, + 07B32A8F8469159EFAAE310B31B0EB59 /* Codable.swift */, + 1A41CAC38257F5E0E39E1C873BBC8023 /* Comparable.swift */, + 125752E2897141636B6750A628014033 /* Data Conversion.swift */, + 3315A7F13EB31197449F67906970378D /* Division.swift */, + AE1AD3260782CB1A196B80F10E86C885 /* Exponentiation.swift */, + C1351083D8F2D315FDE0DAE3A0508C0F /* Floating Point Conversion.swift */, + E17458EFEC6464A8314DEAFC599FC03D /* GCD.swift */, + 55404F2D8B8FC884ACE8D8CDD8C416EC /* Hashable.swift */, + 14811DBE509E4540763DEED9B026CCA4 /* Integer Conversion.swift */, + FF6520AC0622133ECCB92B10A716E1A7 /* Multiplication.swift */, + A270C77A8A74A29E5D488AC838839EB4 /* Prime Test.swift */, + 7585A4AC74E781A65EB8FD64C1DEB0AD /* Random.swift */, + 5F1731254D7AC27611BF2A5B5BC102E9 /* Shifts.swift */, + FCE740FA7EC07ABF6578C0F337CE66B5 /* Square Root.swift */, + 8E743383FC2059F02E6E5A60F697D6AF /* Strideable.swift */, + 819DCAE7FBC14CA0F442E18CF1F3AF90 /* String Conversion.swift */, + 2613F6517D24E98257A33C0BD86AA417 /* Subtraction.swift */, + 5F544855B13A11A23E32CA2E7611394F /* Words and Bits.swift */, + B2789C8A127E3DEAF197CA5D7606206F /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/BigInt"; + name = BigInt; + path = BigInt; sourceTree = ""; }; 1C44C469F52DE28BA0B9236B8296E1BA /* Targets Support Files */ = { @@ -1444,335 +1629,160 @@ name = "Targets Support Files"; sourceTree = ""; }; - 238496D7548DB8A820862136BA356EAC /* Support Files */ = { + 1D96D10D12F585512EF491F26B19918A /* Support Files */ = { isa = PBXGroup; children = ( - DBA57E97588DF44843A9837C449BE4F4 /* Info.plist */, - 2AD5BCC936EC382040D95452EA20E027 /* libsodium.modulemap */, - D51B75A5F8BE2CA82C55BB4FF6923B0C /* libsodium.xcconfig */, - F640C82080BD7574A2C429A3CC39C85E /* libsodium-dummy.m */, - 5EDD5946C6A97197B7641A16723E2C20 /* libsodium-prefix.pch */, - 28856DA85C5DD10797A80F5B7916569A /* libsodium-umbrella.h */, + D93734C487E37CC497643FCD95C8D03D /* Info.plist */, + 4C15A8CBB2CE353FB834AE5DA818A261 /* PromiseKit.modulemap */, + 56619F425F23D77AF457BE2A793FAEB7 /* PromiseKit.xcconfig */, + CD55642000AC22C1D801AA5EAD34EBBD /* PromiseKit-dummy.m */, + E9B31E3BC870D3F0CCC1CDD2520C3771 /* PromiseKit-prefix.pch */, + FAFBECBF0699CF3EEA8462A0E1CD353D /* PromiseKit-umbrella.h */, ); name = "Support Files"; - path = "../Target Support Files/libsodium"; - sourceTree = ""; - }; - 24D1160A2BBE9D47796E4A4E47F33FB9 /* Foundation */ = { - isa = PBXGroup; - children = ( - 4DCCB5E1AE204FF68CA7C30AD97D2EE6 /* afterlife.swift */, - 5AB40F5A84F17AACFDEF5A7F420D25DD /* NSNotificationCenter+AnyPromise.h */, - 98F0C2532624BC8A8B4D25579CA1883B /* NSNotificationCenter+AnyPromise.m */, - 88CDA6F7B12E6767FA45070FF2799CA1 /* NSNotificationCenter+Promise.swift */, - 19CA5B906CB5C2A2E1A8A2C90CCE34E6 /* NSObject+Promise.swift */, - E529DE777AFD1E5370D4724C20C225A0 /* NSTask+AnyPromise.h */, - 9374EC3B4021430648823B5267E4DE6B /* NSTask+AnyPromise.m */, - 19E36865FE9FFFB8BA4CC1B35F679C73 /* NSURLSession+AnyPromise.h */, - C7F858463A74DDEE23754F7FA24304D6 /* NSURLSession+AnyPromise.m */, - 1DD0E98E1907020FE22D43E0F3DE0EF1 /* NSURLSession+Promise.swift */, - F8115F70BDFD8BE3E2C2423A49C31108 /* PMKFoundation.h */, - FF2DF7C9806BA9E6C5D4C33A56D92F65 /* Process+Promise.swift */, - 4B1DBF646CDC22716FEE13BC368018B8 /* URLDataPromise.swift */, - ); - name = Foundation; + path = "../Target Support Files/PromiseKit"; sourceTree = ""; }; - 2A65D79326FA31E12A5268EDDF501388 /* libsodium */ = { + 2D65DF0E6D440D8FED5251A7485638AE /* Support Files */ = { isa = PBXGroup; children = ( - BA26594019F4E949950B51C1AC8431AA /* aead_aes256gcm_aesni.c */, - 1C88EA29C85CAC8051209E919A051993 /* aead_chacha20poly1305.c */, - 506DD7EC4AEFA9ABC3A8270D0F5B6728 /* aead_xchacha20poly1305.c */, - B26F18E3327DBA08BEB8749E9A1DAAA5 /* afternm_aes128ctr.c */, - C249E78AA58EB7BAF490FF75C2DEE293 /* argon2.c */, - C47153A0531E54FB8635505A1DCA7A9A /* argon2.h */, - 921B4A2ED93FF4913140DF4A82FCD2B7 /* argon2-core.c */, - 779D3415C252E3D9F6123C54634349F0 /* argon2-core.h */, - 012E3D677F3A8015D34F5CF43E031129 /* argon2-encoding.c */, - 2B1AA6462359C75E74DC3666A5C75355 /* argon2-encoding.h */, - 66BC94970CED446B2BDEF5AE336671E4 /* argon2-fill-block-ref.c */, - 4428840BB518C94A83A7C5028A5AD8C9 /* argon2-fill-block-ssse3.c */, - FFFAB920EA66166C023C323250EF7C79 /* auth_hmacsha256.c */, - 62DB12E71BD7D9374B61B2B37A446894 /* auth_hmacsha512.c */, - CCD05FE6A8A976D047B064E0E36B2A44 /* auth_hmacsha512256.c */, - BA50C6FD6AD4118DA0989A5BB014306D /* base.h */, - 485FD4248C3F35857951295FC75BEEA4 /* base2.h */, - EEC9DC121948BAC1B3BEDBC65EBED54B /* beforenm_aes128ctr.c */, - 7E27AA7A536407EC3A92F647F5756C19 /* blake2.h */, - 09D297A455F948F73953BA77E47C7A92 /* blake2b-compress-avx2.c */, - 871EE5D967757BE6326B4EF8141344B5 /* blake2b-compress-avx2.h */, - 6AB60DE35329FECA2439A0C22D46A928 /* blake2b-compress-ref.c */, - 3E1FD3BEF2DBD3315041E54AAD026D21 /* blake2b-compress-sse41.c */, - 74699ACCB2550A55DD1141258DC6C2DA /* blake2b-compress-sse41.h */, - D29FB119763086DC8AEE0D47EC4BFC72 /* blake2b-compress-ssse3.c */, - B551D746CF560D8B9DFB043B3FCCDBFE /* blake2b-compress-ssse3.h */, - 2DA29FBF28B43695551B6A7FAA3F56E7 /* blake2b-load-avx2.h */, - 12A161236B2B12A35F7C741991C6F279 /* blake2b-load-sse2.h */, - 2A0C721886EB5726D9ECB3C4AD9F001C /* blake2b-load-sse41.h */, - 467F8FFA42FBDCA2CD2D7F0C4F19D974 /* blake2b-long.c */, - 90311BAEFBA8911F22FC541A00F8024F /* blake2b-long.h */, - 4125321C6E32CB429AF035D000BA45E6 /* blake2b-ref.c */, - F0BB96CB62B6873D3E98DF1347CB719A /* blamka-round-ref.h */, - 73C11BBD803B2F3855FAD67FED2D7A41 /* blamka-round-ssse3.h */, - FB93B58926CB4967A01BD37D6AF20489 /* box_curve25519xchacha20poly1305.c */, - E29715822318F05AE76DDCD18B9539DA /* box_curve25519xsalsa20poly1305.c */, - 96142A4E5AE61FA6DE86A0FFAB459299 /* chacha20_dolbeau-avx2.c */, - C5C8F4341D4F0ECC12782B331DBBCF5C /* chacha20_dolbeau-avx2.h */, - 44630F1CBB231597D6CB0143A0897581 /* chacha20_dolbeau-ssse3.c */, - 8ED755447807B06F68746037A5C18431 /* chacha20_dolbeau-ssse3.h */, - C6EC2B99AF281438BA2E7BC6A71BDEBD /* chacha20_ref.c */, - 1ED7FB48BF0703478184016DF789A03F /* chacha20_ref.h */, - 41531B74D6A98E518F7CD6E3E1BE1D6A /* common.h */, - 15F4F8A6F49242931A6F972D3A21B327 /* common.h */, - 62E8E74D8EA1F18BBF9764CBA8CC2840 /* consts.h */, - 71F1C4E9A13CCA5ED4DB3453E54699DE /* consts_aes128ctr.c */, - E7398A2E85143F8471EA25E81F9926F4 /* consts_namespace.h */, - B8FAF1583FB3495FEF0585A02D27BD74 /* core.c */, - 9FD208919408B9824AEC4D29598D99BA /* core.h */, - 9D6AE8FA94C9BA2693B9F1F9CAE72A2B /* core_hchacha20.c */, - 10E317435D5F68F7B094B254D888FEAB /* core_hsalsa20.c */, - BCC16CED95421AA9D9852B212B4FD301 /* core_hsalsa20_ref2.c */, - 735C5EF41E9DA9E734D2ACEC8E98CD3C /* core_salsa_ref.c */, - B101E96819B63784DE294323D74B9CCD /* crypto_aead_aes256gcm.h */, - 97CBA5EF233438D0775F409E588D721B /* crypto_aead_chacha20poly1305.h */, - 988D6765914684104FB3556B05FC6065 /* crypto_aead_xchacha20poly1305.h */, - E15CEF791E59BB1C7DA3E385DDB2C821 /* crypto_auth.c */, - B889FDF199314EA888E7A3FB2BE67CE6 /* crypto_auth.h */, - BDE2D53A097AE2EBCD4B1EE9D4423155 /* crypto_auth_hmacsha256.h */, - 1AFFA07FA17054E8E612B3B0849BEB5D /* crypto_auth_hmacsha512.h */, - 8469AFD7F84F71CF0509C01E6E461BE6 /* crypto_auth_hmacsha512256.h */, - CBCA7F502C5E7AC00B6F0A6821922B4B /* crypto_box.c */, - A6DCA6AC369C0BCAE9A5CBB1B8D62CB7 /* crypto_box.h */, - 21D1DBD278CB9CFB93FE728EC04334E2 /* crypto_box_curve25519xchacha20poly1305.h */, - FC1CA0D8D767F08057955D98FBC67AC8 /* crypto_box_curve25519xsalsa20poly1305.h */, - 55F79C1A81BE69AC0D45F01396EB56AC /* crypto_box_easy.c */, - 36AB04E1564A9C0592D75F115A0AABB9 /* crypto_box_seal.c */, - B0019EB0E52DAD55C66459CE6151B772 /* crypto_core_hchacha20.h */, - A006D517257D1C97A7961745A149F8A6 /* crypto_core_hsalsa20.h */, - 9B649EF5467DADB439E6E35CE5A524D2 /* crypto_core_salsa20.h */, - E21AAADAB04796882DC6907516351F93 /* crypto_core_salsa2012.h */, - 954BD2762EE1A6A0D0DBFD694BBBA6ED /* crypto_core_salsa208.h */, - AFDEA9B8108FD19B3C3B56020DC4665A /* crypto_generichash.c */, - 6418FB6338F0EA93B24A61DA176171B3 /* crypto_generichash.h */, - 34EC3DB74409CA1BA1E7282E4B9651C2 /* crypto_generichash_blake2b.h */, - 9F60F72ADE94ACBA741DC0FE2250E533 /* crypto_hash.c */, - EF949CC142729F5D464E2A5A2888352E /* crypto_hash.h */, - 3249AF372A590954EF1BC5B2C908BAA0 /* crypto_hash_sha256.h */, - 94C51EFE53D059A0A494ACB765C78A10 /* crypto_hash_sha512.h */, - B6901EF722C6C5B3E00C2D18518E9E28 /* crypto_kdf.c */, - E8EB5BF78D0D556ECD423032A985D248 /* crypto_kdf.h */, - EC9C143E88FB15761B5A85C577A522B2 /* crypto_kdf_blake2b.h */, - C7BB5F73F6B8A2AAA4D3C65843ABCDD1 /* crypto_kx.c */, - 4015A814D74E0993F2C42A71AD614A2A /* crypto_kx.h */, - E5F65F987117D26FD9D9D32C68AB3750 /* crypto_onetimeauth.c */, - 374F05E31597663B98E2142A133DCA73 /* crypto_onetimeauth.h */, - 704BDB95EE949F84EA5F569832FEBFC6 /* crypto_onetimeauth_poly1305.h */, - 64E5F50B881BC161C6BC3ACADBE29679 /* crypto_pwhash.c */, - D3A5A68D9F120319208735753EBF8A33 /* crypto_pwhash.h */, - D12CC3DAACE09D0C6594CF29B2BECAC5 /* crypto_pwhash_argon2i.h */, - FFD1A6EDF1303A694BE66EAAFA6B1960 /* crypto_pwhash_scryptsalsa208sha256.h */, - 4D237382CBD0A506434A3DFA4F1BE60A /* crypto_scalarmult.c */, - 3366339B8E4AA3C65147A352191C75DA /* crypto_scalarmult.h */, - E4797EFA44F3B769238902C2F5F6A4BF /* crypto_scalarmult_curve25519.h */, - F913CC4F2405BEBC5E723E1FC0AFCBA0 /* crypto_scrypt.h */, - 0BBB041BD70E156D98BF9883A1F5177B /* crypto_scrypt-common.c */, - 63D33E9236AA92C503A75F7FDBDD3C94 /* crypto_secretbox.c */, - E2DC45459F0F7F28AD7CF062AE6B3795 /* crypto_secretbox.h */, - 0FE4F50E6FB25D4E9A1B79D609D10D21 /* crypto_secretbox_easy.c */, - B95D2BC236C1BB8EF266DA40E9C9DDD7 /* crypto_secretbox_xchacha20poly1305.h */, - 810A660458029BAF298E260DAEC7F97B /* crypto_secretbox_xsalsa20poly1305.h */, - A4A331F88F30FE5A9D446A0AD35AB51C /* crypto_shorthash.c */, - FAF24B664575C88F790FC95622D5DC6A /* crypto_shorthash.h */, - 2454490E1007FB369BF6BFAD4868AADC /* crypto_shorthash_siphash24.h */, - 92645F0E42EF6E42F3B91417331C15D7 /* crypto_sign.c */, - A4D735C1D60367A6469C484F8473A4B8 /* crypto_sign.h */, - 2C56397FBCE332E99C16633327D9CAF8 /* crypto_sign_ed25519.h */, - 53CA490432DB98016EDCC5C8FB644E12 /* crypto_sign_edwards25519sha512batch.h */, - 762DD7C89E8377486C87C1C8AE58BA43 /* crypto_stream.c */, - 0249AF8B4327ECC161894ACBE107CC8D /* crypto_stream.h */, - 2D7213900822929C9A20CFBB508043A8 /* crypto_stream_aes128ctr.h */, - 7D6C9B172D5F3AFF240C67087DC931E5 /* crypto_stream_chacha20.h */, - 6684B83B1C27095CE205E5E089ED7F7E /* crypto_stream_salsa20.h */, - A9A536463390FA2F304312DD11AC8EB7 /* crypto_stream_salsa2012.h */, - A6D5AD484AE13D360E43C5EEAFB4019B /* crypto_stream_salsa208.h */, - ACA4A70D7B5E06B51DCA6AEDF3B3CAC2 /* crypto_stream_xchacha20.h */, - 2297056A0DACF7263DC20816B217431F /* crypto_stream_xsalsa20.h */, - E1B4717EF68E8258690059482072CBD6 /* crypto_verify_16.h */, - 55D1A93C6998B29E6865786A334D6BD1 /* crypto_verify_32.h */, - C04479979B4AE62024ADAFE7D7D02C9F /* crypto_verify_64.h */, - C927C0606CA4E95D31493BDD651DFFF7 /* curve25519_donna_c64.c */, - 5B3BC3576E2A2CD1B0E2022637747FC1 /* curve25519_donna_c64.h */, - 070E63DDBD4B5AD9AA742B405B48B7CF /* curve25519_ref10.c */, - DE35A76091F603AAD6E14F1193928E56 /* curve25519_ref10.h */, - BDE327CC64B818B526A49742460E39B3 /* curve25519_sandy2x.c */, - 65C4E40F4D1A8FE089D576CA83CDEB57 /* curve25519_sandy2x.h */, - A132FA08A215B5C18EEF42F9EE0845B6 /* ed25519_ref10.h */, - 17FDCE0DA1FA9B2151211E2393ECB3C6 /* export.h */, - 9552E59D92B6A40FAB30C5F80273227B /* fe.h */, - 21552B00F36B74636FA9CFB62D9FAFF7 /* fe51.h */, - 09552E8BB30CEE856A46B2DFA6C0592A /* fe51_invert.c */, - 991E731E616148148C4E59D062F149D3 /* fe51_namespace.h */, - B590C80B2EA2D26D05372FE51E0E176B /* fe_frombytes_sandy2x.c */, - C82E6B66D574352290251A84B08E3A40 /* generichash_blake2.c */, - B36353933A6E920E0A59DCAD60CB62CE /* generichash_blake2b.c */, - 0E633D9D4034C45CA186E876F997BF8F /* hash_sha256.c */, - 69A82590A5422AE2BBD41399F35789A1 /* hash_sha256_cp.c */, - FC1236DE9C128EEB97958020FC3634BA /* hash_sha512.c */, - 0D981548FC89F73B8572C308EF3D525D /* hash_sha512_cp.c */, - 473AD07BCE5ECD29C1F8F28C47D607D3 /* int128.h */, - 169FEF91B9E37E23AA6E4328D4234C87 /* int128_aes128ctr.c */, - C36232150A443296F0FDFEB3EF1184B7 /* kdf_blake2b.c */, - 93C8409B3AA4A87B86DDEF1DDA1AC40D /* keypair.c */, - F590A82B515161A678869630ADBA9E15 /* ladder.h */, - 55B142AD0CA5A5FEA009BACDB3E833F4 /* ladder_base.h */, - 0BA0B7FF20263E9F074910358BC1FF12 /* ladder_base_namespace.h */, - 7E60F04E66BB9E412F4A4FD1576F34D9 /* ladder_namespace.h */, - 03D40C34CE63BBF60440B06C22257316 /* mutex.h */, - D7DA98D495BCE5E6153FAB7166A55386 /* obsolete.c */, - 41A4019745ECCE29DCA77B0C7A801C0B /* onetimeauth_poly1305.c */, - F882C900F84E7B9D312C9A225A61F98F /* onetimeauth_poly1305.h */, - 02FD701120D18ED550004DEE17BF7862 /* open.c */, - 44DDC8CD70F7865BD90059B6E8573D54 /* pbkdf2-sha256.c */, - 5CEA11E5873E67E86630A39D7EB8B2A3 /* pbkdf2-sha256.h */, - F7101D07389E7E02BBB25BA89420D69C /* poly1305_donna.c */, - D12F9FF7D94A533B244BA69D70AC376C /* poly1305_donna.h */, - FDFD3F6F778C52F97699B36406BA738A /* poly1305_donna32.h */, - 161D3284FB54591A66E4FDB5C24B53C7 /* poly1305_donna64.h */, - 2159C4D014D35FCFD07FEB421BC7A60D /* poly1305_sse2.c */, - 6F893CA360FAEDC549E5943F84B640DD /* poly1305_sse2.h */, - 89CCB0B1A340C72ADAEDA8BC6025AEE5 /* pwhash_argon2i.c */, - BC10FFF0A8458ECE7E33629954A64277 /* pwhash_scryptsalsa208sha256.c */, - 340B278D3DAE3DA81C08A2D9F62362FA /* pwhash_scryptsalsa208sha256_nosse.c */, - E04C873C03647589F53D4F42C5DBA07B /* pwhash_scryptsalsa208sha256_sse.c */, - 894108B41497EEAE8DFAD524A430A032 /* randombytes.c */, - 0253AA2DE30B4DC79892B0785F9E2515 /* randombytes.h */, - AB4684483FF54B94636E96CA8D597FEC /* randombytes_nativeclient.c */, - 11161408170DF52BBD741446104FC8C9 /* randombytes_nativeclient.h */, - FF2D8B6F00BB672FC8F78DBFF26B786E /* randombytes_salsa20_random.c */, - DBD8AB896BC29A2FF3CED039FB478D15 /* randombytes_salsa20_random.h */, - 36F010C412B0464B6D658002BEDF5723 /* randombytes_sysrandom.c */, - 021D9B7C19129D73B8088AD0CB0833EE /* randombytes_sysrandom.h */, - 8F3E30F898088D114E5D15FAB02868C1 /* runtime.c */, - 2057792A91F668E3AF4D7B96579D73E2 /* runtime.h */, - 5D6880B39A46D38EDFC3673C6F03942F /* salsa20_ref.c */, - 710C4522253003B2E77E1E5A15F60E3F /* salsa20_ref.h */, - E48A3CB74046D49F274AF740255FF298 /* salsa20_xmm6.c */, - 818C8B149FF7EE7C277809CF9F4D17E3 /* salsa20_xmm6.h */, - C115B1679AC5A0F30BD50F722B0E3584 /* salsa20_xmm6int-avx2.c */, - A021A8A8C904A3CEBFBEF4657E8ABB1C /* salsa20_xmm6int-avx2.h */, - F46733AE4E4B1F477E3B07C4392B5F05 /* salsa20_xmm6int-sse2.c */, - 324F91F63FDDC4B0E982B1F2725216EF /* salsa20_xmm6int-sse2.h */, - D0D19AE7C9B2A5D1ECE739022BB054B3 /* scalarmult_curve25519.c */, - E8827F004C799D73CE6774B97ED3F198 /* scalarmult_curve25519.h */, - 66E6A8118A5FF4ECB263CE796EB2B918 /* scrypt_platform.c */, - CD887F908D9DB20AC208FB692AE50C59 /* secretbox_xchacha20poly1305.c */, - 736C4999BD3D653E8137A15677C01959 /* secretbox_xsalsa20poly1305.c */, - CFA150240F4B99D3A6A82F8047F9803A /* shorthash_siphash24.c */, - F6EA938C31EF31D6024DEC6F450AA1AC /* shorthash_siphash24_ref.c */, - 51A8D6EE4030FB23F41DE19D64792230 /* shorthash_siphash_ref.h */, - CB7439327F3AA5CF77B7C4EE38D13961 /* shorthash_siphashx24.c */, - FEF0E5643D8E080FA89E3E553A18BC77 /* shorthash_siphashx24_ref.c */, - 12CBC9364917F3E69494C9763FBD26C9 /* sign.c */, - F90B7341523806D70335F9C0DCF5F9DB /* sign_ed25519.c */, - A00B88E3CF87AAA10E89644218843056 /* sodium.h */, - 04A37EE3399FFC51092457C51A04D374 /* sse2_64_32.h */, - E9DDA2A9AD89F335F41760009AED4A2C /* stream_aes128ctr.c */, - 87BF8DF99F1BD2A2258103C0E9B3BBD2 /* stream_aes128ctr_nacl.c */, - B39A56572DC6B8EB19139D8E2960B959 /* stream_chacha20.c */, - 891BB82441F69C42B233F1F8B215E9D4 /* stream_chacha20.h */, - 8308E9636132D7AB4F64E0D796D57B78 /* stream_salsa20.c */, - A7C95F1AB2FF095B834BBEB1640500E3 /* stream_salsa20.h */, - 63323E9B800FE8CDA25BC895FC1E3B2C /* stream_salsa2012.c */, - C882186B076DB2CEE3935BF84AF992AC /* stream_salsa2012_ref.c */, - C655E23FBB8C21C66C0418C5189E1716 /* stream_salsa208.c */, - 34DDE3DB766969661F353977F4893D4E /* stream_salsa208_ref.c */, - 617FCEDFE88862D121167BCFAD12C8F1 /* stream_xchacha20.c */, - C2562A587DC1E0BCF4B9898CD759C598 /* stream_xsalsa20.c */, - CB484B5F552B1F5D6A18654410B4A772 /* u0.h */, - A2AD2F2FB3632F5FA1C26DEB19308D4C /* u0.h */, - 196BF0D72A1BCDEE8EE398EE7281D047 /* u1.h */, - A46198638D03BEC8C33A4E5958F20D1C /* u1.h */, - 4720AB7429158BCA361A6B70808A01D1 /* u4.h */, - B867717ADA4ABC98597E839AAA3CF5B3 /* u4.h */, - 700749FE72D20A35BD810D6A1C009883 /* u8.h */, - 150C1A3648B59850E33D0CCBBA907D56 /* u8.h */, - 1161F8DD1AD0197E07CAB86DA0D09B6B /* utils.c */, - 135A4BF162559A6AD26E24815341775A /* utils.h */, - 58C76624A45228A50EBA19A00433E427 /* verify.c */, - 7D08F082492906EB2BD8456D2230104C /* version.c */, - C0B652C026E3425895D737F69723E5A8 /* version.h */, - 5612CA2C2894935DA376198E451D3182 /* x25519_ref10.c */, - 66D47623B03864DAB77ABD331BEA3EEB /* x25519_ref10.h */, - 7767B1C235F27A8B67815FC617BB03A2 /* xor_afternm_aes128ctr.c */, - 238496D7548DB8A820862136BA356EAC /* Support Files */, + A49A91A56F3491450551804088F2CAF6 /* Info.plist */, + F4FBBFD965DF052B8288416F8ECE820D /* libsodium.modulemap */, + AD0E753FE7441C5B4B5E53E6FD0D8BF9 /* libsodium.xcconfig */, + C595D9929F0D5D176E60F6ADFDAC650D /* libsodium-dummy.m */, + FB3C4BD598AE14C32AE77FF5FD20D87F /* libsodium-prefix.pch */, + 6073EE64D441EB045BD0A8D8B99828E0 /* libsodium-umbrella.h */, ); - name = libsodium; - path = libsodium; + name = "Support Files"; + path = "../Target Support Files/libsodium"; sourceTree = ""; }; - 3C3D97733D510379BF2B476B3A000945 /* Support Files */ = { + 39C9BD553BB5569CCDB2D334F21F2412 /* UIKit */ = { isa = PBXGroup; children = ( - 7630AC45DB36C1B1782FE330D62FC64C /* AwaitKit.modulemap */, - A086B144D03B81A9078E19DD6A027FBB /* AwaitKit.xcconfig */, - C85A39C94EB58220C2E1139B2D95A359 /* AwaitKit-dummy.m */, - 4412B49437337EB385103715C6C4DB60 /* AwaitKit-prefix.pch */, - 4E51137FE6F7F1D6B3E45E9A880DAF06 /* AwaitKit-umbrella.h */, - 9A1E2EBB40952243FC9C9E9285571834 /* Info.plist */, + A1EE4B8D38AC2A157DDDA92FE1D71272 /* PMKAlertController.swift */, + 71692031281C2400AE2BAE861C032B9A /* PMKUIKit.h */, + 774924A94778725E225510B3A46DC462 /* UIView+AnyPromise.h */, + F836BDA62460EB1012844A1FE8FDF9DD /* UIView+AnyPromise.m */, + B3D725119A53C3636896E8190110756C /* UIView+Promise.swift */, + 0A5105585840D80B41FA88318A5B7CB5 /* UIViewController+AnyPromise.h */, + 6A195FF30991D0863F1542B5325CC87F /* UIViewController+AnyPromise.m */, + 044CEBCBDDB06635F3AD760380F4063C /* UIViewController+Promise.swift */, ); - name = "Support Files"; - path = "../Target Support Files/AwaitKit"; + name = UIKit; sourceTree = ""; }; - 3FA08A74E74F1068855B6B0673E094A6 /* Support Files */ = { + 3B57D29E35D6A54FF5A2080CB2EBA0C4 /* Support Files */ = { isa = PBXGroup; children = ( - EF3BFE91B26C01FBB2CAC5BB83EB5D00 /* Alamofire.modulemap */, - 46048AE549927050092CABF289EA28AC /* Alamofire.xcconfig */, - 3D27601B1C38F8DF92D4EBF3F8B99155 /* Alamofire-dummy.m */, - 46A1AF5215C8D16C2BAE8FEF9D5C2E94 /* Alamofire-prefix.pch */, - 9693AD64756A4595163D7F21843B6422 /* Alamofire-umbrella.h */, - 76E424823DC86741C9A842A265D41BE4 /* Info.plist */, + A3ABDE6F6F3219032FD4C7FB454EAAFC /* Alamofire.modulemap */, + D86710F8FD8B56DF258FDC7BA1B9340F /* Alamofire.xcconfig */, + ABE071F115DABC5611980E48CF6733A8 /* Alamofire-dummy.m */, + 654B8DF1C6956ACCBB28DAD69AAD4524 /* Alamofire-prefix.pch */, + A3324A5954A5BB93394BBFD5710817D7 /* Alamofire-umbrella.h */, + D9AB746F582E11271969F057529E7E33 /* Info.plist */, ); name = "Support Files"; path = "../Target Support Files/Alamofire"; sourceTree = ""; }; - 5F6FC4552E1552EFD11A8B69C8B4262C /* Frameworks */ = { + 4CF61D8FC6209432BE9AD900850A7F95 /* Support Files */ = { isa = PBXGroup; children = ( - 36C11A041883FC4C9DFAF96FE7120B66 /* libsodium-ios.a */, + 88AC0D31607BC86E91D7CD53A1E3B559 /* CryptoSwift.modulemap */, + C6DF673C384AE4AE144AEC27145D9350 /* CryptoSwift.xcconfig */, + 5A7FEDADFAC08A2326F910EFBD8D22DA /* CryptoSwift-dummy.m */, + D0A1AEC86C8D75A14A57346408E82AFE /* CryptoSwift-prefix.pch */, + 3DA94EFA6F466464282B7C6EEE9DC7EE /* CryptoSwift-umbrella.h */, + 2F52261F76679DE347BCA8FEFBBDBF8C /* Info.plist */, ); - name = Frameworks; + name = "Support Files"; + path = "../Target Support Files/CryptoSwift"; sourceTree = ""; }; - 630094660E1FBAD8548ABBE3887AFA6E /* PromiseKit */ = { + 59034212CECE8DDE037A66BF75DCBF83 /* SipHash */ = { isa = PBXGroup; children = ( - FD2FDEF9DD3E783B6910A5C7BC8F9B19 /* Alamofire */, - 94FB0ED184022DC3D6BC490C73FD4FD9 /* CorePromise */, - 24D1160A2BBE9D47796E4A4E47F33FB9 /* Foundation */, - 9F8F0768BF44C91E64A17B07A30BE37D /* QuartzCore */, - AEE9E5A94D101587D8AF7758E3D2D409 /* Support Files */, - DBA29870FEED8E769438C64F8C386A02 /* UIKit */, + FE376550A8CBEF1C9BC27EFF4801B346 /* Primitive Types.swift */, + 1EC930D0D02B72829CB15062821D7BEC /* RandomUInt64.swift */, + A0D4A370C25E9C534700F68F261CC9D8 /* SipHashable.swift */, + C8DD6F18DCA15D6313A4A4CF257AA7CF /* SipHasher.swift */, + CEFEFBE04232A08918126622D7854475 /* Support Files */, ); - name = PromiseKit; - path = PromiseKit; + name = SipHash; + path = SipHash; sourceTree = ""; }; - 649A808EF4E130291103976D31F3349F /* Support Files */ = { + 5ABA73677E3E55D56FC8240013853854 /* CryptoSwift */ = { isa = PBXGroup; children = ( - 918DE5192EEBE23030EC8213D0FB3F7F /* CryptoSwift.modulemap */, - 8689D0D3F9A4C9E4C75D2B7E322D570A /* CryptoSwift.xcconfig */, - 23B26B1E8E7CB6D90FD3E624B6395E86 /* CryptoSwift-dummy.m */, - 1AE81BB0C446BBADC4E40474F357827A /* CryptoSwift-prefix.pch */, - 7B58E032BB65FB27FB8C69E748BD7092 /* CryptoSwift-umbrella.h */, - EF276126611EBE9D50BD544D5ED09A3F /* Info.plist */, + B3E35B0BA0536866DB699D689341865F /* AES.swift */, + D12F9A14671F713C138E36D1BFBB4368 /* AES+Foundation.swift */, + 9CB21DCD5F3411154A2D1613935DDA33 /* AES.Cryptors.swift */, + 68CA01C773F279980B3D1A83F49CA3D3 /* Array+Extension.swift */, + B57D38EC17EDC879D9911671ABC64C3F /* Array+Extensions.swift */, + F50A68F24912B392ED77969594E36B3A /* Array+Foundation.swift */, + 3B32079A83AC320B219446AE2531508C /* Authenticator.swift */, + 2870AEA355A04299E1B47AF73F98D49D /* BatchedCollection.swift */, + 4B48F416E53A88C68ACD28CCF2D8DD04 /* Bit.swift */, + 5146777967E221509D2284182907726C /* BlockCipher.swift */, + 9EE4A8C9D93C48A924AEE4C22117A322 /* BlockMode.swift */, + C79AC39B6CE0FD2E178E500D74CC7F27 /* BlockModeOptions.swift */, + 535DE36EBDF24B535FE9E6BA837338CE /* BlockModeWorker.swift */, + 33439E619816C7FFBD21D52EF1A03188 /* Blowfish.swift */, + 478BE0257179D940A8B8D1CDCEE3BCF8 /* Blowfish+Foundation.swift */, + A806138470021A30F1FDF370500E7405 /* CBC.swift */, + 1D8E821905DA6F9616C0E6CA4699A3F3 /* CFB.swift */, + 68702A3A19892E502030605B3F934569 /* ChaCha20.swift */, + 0F47EB6037C20607C42605255B4058AC /* ChaCha20+Foundation.swift */, + 04A7C3FC53F5588E186BB76CDA2CB1B6 /* Checksum.swift */, + 6583EB655E29E9C6B68A647052801DAE /* Cipher.swift */, + 2D3A67C3CF08A886A95F5A1283C7322D /* Collection+Extension.swift */, + 37622AFC62D26E0BB0F565E58601836B /* Cryptors.swift */, + 4C020ADA019EA1026DAA6DB93D358824 /* CTR.swift */, + FF14233605F943940BCDCCD8F3629E8B /* Data+Extension.swift */, + 962BC3B8ABF430637646FA2FE62AC600 /* Digest.swift */, + 23610349DAACB1AE48617F22E587B8DB /* DigestType.swift */, + E27CDA0F2A2A95F9F26ABD98551BF5F1 /* ECB.swift */, + 74E8A63180EC28D4E45AC04BCBCC3E26 /* Generics.swift */, + ED0D20C17362D69D27893545D5E5D287 /* HMAC.swift */, + 6ED5B2A162192FC4D529A1D45A6FFF7D /* HMAC+Foundation.swift */, + F70B2509DBD7BA84D68373BC2264219A /* Int+Extension.swift */, + 616D848F3B3563FFBFD1D6333B439FC8 /* MD5.swift */, + 778BFC7BDE2A9FB8579B1E18D8BA8BCE /* NoPadding.swift */, + 8FE55B2A737F69DDE418661102297E59 /* OFB.swift */, + 1116FE155CA82FF9C62F96DA56CE8DD8 /* Operators.swift */, + C123A2EEC460F1EF453D014E83FA8C2A /* Padding.swift */, + 8C64D36651BD2BB25E90D404D20E911A /* PBKDF1.swift */, + A36104F32BA41DCAF9D50291DD752465 /* PBKDF2.swift */, + EE9B24DD7D2EEFD4CE6ED69359F155CB /* PCBC.swift */, + F433BCA56DB4CE61C476AC0BE3BC997B /* PKCS5.swift */, + D635AFC67550FFF6CFD9657596309E83 /* PKCS7.swift */, + 54BC56C20AF340B4ACCC9CA8FB8EEFF7 /* PKCS7Padding.swift */, + 9FEBAD18AC0C32989F0D6DE435255E40 /* Poly1305.swift */, + D61847250C4C7CBE45D003EA69C61A5F /* Rabbit.swift */, + BFED47516B1C2287E474D79F238CFBF5 /* Rabbit+Foundation.swift */, + 855995B5835DD243A809024B6BB3E44F /* RandomAccessBlockModeWorker.swift */, + 33C6D53C98D84EC5EC20B99CAFC911E7 /* RandomAccessCryptor.swift */, + A1C1E539D98D15BE30F81B0597792FD3 /* RandomBytesSequence.swift */, + 8C6660B2BD4ECAAC5E97B07FFEBDA331 /* SecureBytes.swift */, + 29C85F1725416148DAAF74A954DEED0A /* SHA1.swift */, + 057F53420FDA630614C89C973462B974 /* SHA2.swift */, + CE786DDC57924F9383758BECE7886086 /* SHA3.swift */, + A9193210B51913ACA7CA410C46669B02 /* String+Extension.swift */, + 8E6D4861BBD434CC3070B11EBEC4453E /* String+FoundationExtension.swift */, + 66DB1566220A991E843B1BEDEAE5CEC6 /* UInt16+Extension.swift */, + 6C4B8CD312FF8333FB6CEF89B6BBDE02 /* UInt32+Extension.swift */, + 1A86535A248F7C92CA8B4A18EECA240E /* UInt64+Extension.swift */, + 04FCD0962B5B6B3132FCF9727BA5AC1C /* UInt8+Extension.swift */, + 149D31681CD859BFA868AF02E0207D98 /* Updatable.swift */, + 80603D9A2EE0D52DA2833C2709FC17A7 /* Utils.swift */, + B2769F723C3DE1F56C3FF7E574EEEACD /* Utils+Foundation.swift */, + 523BD1513B740E697C87C0ABCEB0C9DC /* ZeroPadding.swift */, + 4CF61D8FC6209432BE9AD900850A7F95 /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/CryptoSwift"; + name = CryptoSwift; + path = CryptoSwift; sourceTree = ""; }; 6BB125DE73B87E4232C1BAB6B8290FF4 /* iOS */ = { @@ -1785,18 +1795,23 @@ name = iOS; sourceTree = ""; }; - 7AF4420BD4D18CE73A2A4A5A3E51FC14 /* Support Files */ = { + 767E33A3B31A607EEAAADFF40326BA10 /* Products */ = { isa = PBXGroup; children = ( - 614E21038A2EFBF5D16668B5AD9319D2 /* Info.plist */, - 938400F13CB88F6D31F6CC12114138EC /* Sodium.modulemap */, - 2AD9C5FA27E8ADCD10A4B11BFB9253E6 /* Sodium.xcconfig */, - 1E67050266B4560B8D795D8784F3A6F0 /* Sodium-dummy.m */, - 204A093C2CC672D1C6A6F6235B731470 /* Sodium-prefix.pch */, - FA4358D582ABD1AB7473D3FF105A0BB9 /* Sodium-umbrella.h */, + 504FCEBD6653EEDDE9D78256E1E075E4 /* Alamofire.framework */, + 690DC0113B257B0C12616123C8C25137 /* AwaitKit.framework */, + 4B0F4AB89F59EC16D1FFED1075233D4B /* BigInt.framework */, + BACE51C2884801FFC9CC5BF92AC49895 /* CryptoSwift.framework */, + FD5786515E1BBCED149C8144626D3C47 /* libsodium.framework */, + AB334AE0476FB66AC66311E6D354CAA4 /* Pods_web3swift.framework */, + E5CAB017EB0CC4F0D6C21C341953A4FF /* Pods_web3Swift_Demo.framework */, + 7BC2C7859F38D7C0817524F193AA9D26 /* Pods_web3swiftTests.framework */, + E994C064DB3F93EC87170C0196358C21 /* PromiseKit.framework */, + 3410D4C76AA77E811FADAE9655D072D5 /* secp256k1_ios.framework */, + 4AFAAF8AE3A927D901DAD3CAED357790 /* SipHash.framework */, + 56C9D15997923C0E855B94F27980598B /* Sodium.framework */, ); - name = "Support Files"; - path = "../Target Support Files/Sodium"; + name = Products; sourceTree = ""; }; 7DB346D0F39D3F0E887471402A8071AB = { @@ -1804,8 +1819,8 @@ children = ( 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, B685FA5854B9ED6CCED3D70DD80FBCD0 /* Frameworks */, - 02EAF5CBCFB1042F957B3AA699E45B54 /* Pods */, - A633B295DCB5C128B949BC8605C31D81 /* Products */, + BDC5EF7BC049C2874A3580E04D3CB43C /* Pods */, + 767E33A3B31A607EEAAADFF40326BA10 /* Products */, 1C44C469F52DE28BA0B9236B8296E1BA /* Targets Support Files */, ); sourceTree = ""; @@ -1827,162 +1842,28 @@ path = "Target Support Files/Pods-web3swift"; sourceTree = ""; }; - 8D13A1C41864FDE7E38718764DE16B26 /* CryptoSwift */ = { - isa = PBXGroup; - children = ( - B93AD61C6FF02691A6BBDD6314157ACD /* AES.swift */, - A53D3BD819E7DFC8FDA251FE78F3231C /* AES+Foundation.swift */, - D9B8DDB8B2D4E76AEB8765DD9DAFDB06 /* AES.Cryptors.swift */, - 884A07B6837356CA64FAF158BADA4B38 /* Array+Extension.swift */, - 58EAA8B24BF0FF0E582B2077B0E65675 /* Array+Extensions.swift */, - BCBA7A77BF5B339F043FD49D1C91E14C /* Array+Foundation.swift */, - 317DFACAC8499FE790B2F62585685EBD /* Authenticator.swift */, - F94671D067B63D3031BB746521FFC605 /* BatchedCollection.swift */, - 5F181056A496433180F2706C91F92BF7 /* Bit.swift */, - 54323F849787990A3D0ADB3332A51EF9 /* BlockCipher.swift */, - F0CC2BBE7120DF2D9CB24C425A6D1735 /* BlockMode.swift */, - E759F7D4B2094E694B942243481FAE26 /* BlockModeOptions.swift */, - C6468F7876B8471C2334F4DD9E55F44F /* BlockModeWorker.swift */, - 84BF9D2D5666F006E0E7C3DA91C3B056 /* Blowfish.swift */, - 8FC06162177A3707CD7DA1DB9FEAB2F7 /* Blowfish+Foundation.swift */, - D7CB61F288E217D8C436CD35AAF7E8D4 /* CBC.swift */, - A73C1E7F3AB6676FD25D13F20470CAFC /* CFB.swift */, - 821D8AF502E093653280A955025F7EFB /* ChaCha20.swift */, - F6CBAA67EDE1BDA9DEB56772016F528A /* ChaCha20+Foundation.swift */, - 1A7D889D7F90D814AC0BFE67AAA0AF36 /* Checksum.swift */, - E290CB5518060C3274D2BECB67CA4835 /* Cipher.swift */, - 1D6F9FB030621398C9F85520B7DD17E0 /* Collection+Extension.swift */, - 7B7E55FB8AC8C5DE92BEEBFFFEC16571 /* Cryptors.swift */, - FEB571437F00CBEF70B447CAF8089B98 /* CTR.swift */, - 7D58513B687622AA3CC3068EF7F4B9BC /* Data+Extension.swift */, - 2424D262125BFFB4F7D50925AC598014 /* Digest.swift */, - C056F9C76C48F568CB50537FBB908F32 /* DigestType.swift */, - BB1F3A9314BB7DA0573B872D09703DF2 /* ECB.swift */, - CD93C36231E53ADD1F9B6B8F064BEBCC /* Generics.swift */, - 7EA5E5D26A7382662FEB3DC5931A0ADA /* HMAC.swift */, - 3E492F9F107AE43CB50CAF2658C3D1F9 /* HMAC+Foundation.swift */, - 32F10CC5985F01316863EFFC96AE0DD0 /* Int+Extension.swift */, - 875EF05C094CC91A4A20FEE91307CD82 /* MD5.swift */, - 0995131DBCD6FD1CED8EB2A08E9BD9D0 /* NoPadding.swift */, - 26A5581984769CA8A1FBA68672C4BC0E /* OFB.swift */, - 66BC8AB794E5AEC7CD041FFF73A7F309 /* Operators.swift */, - BA853ECD5B6B683B24B64E2342FCF25F /* Padding.swift */, - B0ABA4E3E67D289FE88CA8143C4A30D7 /* PBKDF1.swift */, - 7F34D5C96F9FD31203F261805F557EBB /* PBKDF2.swift */, - 1748E8209421822049EA7820F6265394 /* PCBC.swift */, - 9D7416E171760C91E26888C9A6150933 /* PKCS5.swift */, - 7886C5024CC7A555B54858183732C13B /* PKCS7.swift */, - CF644E17D74DC771AB9A2C13BB5D656A /* PKCS7Padding.swift */, - 0418853173CC001617AE605CE8BA0145 /* Poly1305.swift */, - D569CE1B427C121B5BAE0449BEC9CEEE /* Rabbit.swift */, - 680028695EBB33D20595E1AEBA356238 /* Rabbit+Foundation.swift */, - BDFF7C1B4FD61764E6C681162ED9C397 /* RandomAccessBlockModeWorker.swift */, - 88AD05DB9B5296F0B6746762D9BB788A /* RandomAccessCryptor.swift */, - DDC378F885805A36731D06E74B6D435B /* RandomBytesSequence.swift */, - A3551CA0F49C75A2C6FB8B7164888B81 /* SecureBytes.swift */, - 144DBFCFA5BCF39EBE93195EEAB45EE1 /* SHA1.swift */, - BBDB0A5A2304C622C7912198CB92C561 /* SHA2.swift */, - 890A4347F32948BEC7573D6A8BC4AF68 /* SHA3.swift */, - 68995304898E60BDD23D474DEF305CBD /* String+Extension.swift */, - 98165224512CD9D6D89230D9B741C2B8 /* String+FoundationExtension.swift */, - 0B1762C21A76FCE00B628962A9CFCAD7 /* UInt16+Extension.swift */, - E99443F101FEE6C7422D6F68E92CA3EC /* UInt32+Extension.swift */, - EDA037C5ADD0B7C9FAF3DC6D140A51DE /* UInt64+Extension.swift */, - 35B21FD888D70D5B1720AA9A851F6917 /* UInt8+Extension.swift */, - CEE962279D5BD5992AADE18B52E3F449 /* Updatable.swift */, - EF8D1AA8470987C23FD75AEB7493FE7C /* Utils.swift */, - 89339D9342B89117FD496824477E24C2 /* Utils+Foundation.swift */, - 0F2161AAD28EFFA2135EF3FEDAAC07F9 /* ZeroPadding.swift */, - 649A808EF4E130291103976D31F3349F /* Support Files */, - ); - name = CryptoSwift; - path = CryptoSwift; - sourceTree = ""; - }; - 9379A7899856658C2CAF35B6CBC48E3B /* Support Files */ = { - isa = PBXGroup; - children = ( - 83B42ADDF7C0717AC7296118C9D50D98 /* Info.plist */, - FA43EBAB7DA175DC9BA7E02EC462E9B1 /* SipHash.modulemap */, - F5830D3F2F4E1C6C860A029F26F2F132 /* SipHash.xcconfig */, - 654C3EB91BB5C33EFBC41C95F729108E /* SipHash-dummy.m */, - BF415CDBCFDE08125DFAF989519A56AB /* SipHash-prefix.pch */, - 6FA593596427B4960926155B13009C29 /* SipHash-umbrella.h */, - ); - name = "Support Files"; - path = "../Target Support Files/SipHash"; - sourceTree = ""; - }; - 94FB0ED184022DC3D6BC490C73FD4FD9 /* CorePromise */ = { - isa = PBXGroup; - children = ( - A385FD5BD4160D26B15DC59E0C0A4684 /* after.m */, - 53E02D0F59804EFA620F2B47137F186B /* after.swift */, - 699FF09F4E5D5928D4DE8CB8D495B093 /* AnyPromise.h */, - 115FAFF9F15D3D7F4835CB4EA1207223 /* AnyPromise.m */, - 083AD0902035CAA57413CC1FBC6B5B8A /* AnyPromise.swift */, - A0FA84CFC0E90175AEB061DCB2EC36FF /* dispatch_promise.m */, - C6A77F33B8864EAEC280D315E122F5B9 /* DispatchQueue+Promise.swift */, - F98B617BC076A2B70A723554D8944C87 /* Error.swift */, - 15AADC1A0ED4397158A6183AC0091358 /* fwd.h */, - 2096C99928A1AF6849A2397197884096 /* GlobalState.m */, - A388CED3C347A4DD974F069E34EEB032 /* hang.m */, - 05F3D6E5542C87C9C66FC25369D62B3F /* join.m */, - E17540CD69DC5F1BBC7B873764867CBB /* join.swift */, - 2722613A016A50F1D5F6657B99C26E9A /* Promise.swift */, - B22B318AB2A488D73D8A82806BB0E2E1 /* Promise+AnyPromise.swift */, - 7E09382ABF7A5A2682C537DAB06578F9 /* Promise+Properties.swift */, - C9D1DF849F2188CD9EA2EF66FAFCAF69 /* PromiseKit.h */, - 81AD82C45A2CFB1E14DF352809C728A9 /* race.swift */, - D476AF40BE0C051EBEB495E12A8B1E84 /* State.swift */, - DEF0CEF8C7ECB3361F1E7BD494C9E050 /* when.m */, - 4995C95AF974370951907DDA0C10B63B /* when.swift */, - A446554429C8A51E8B7C216F83270456 /* wrap.swift */, - ED6A7E40E402EE82715CABD6845C96EA /* Zalgo.swift */, - ); - name = CorePromise; - sourceTree = ""; - }; - 9F8F0768BF44C91E64A17B07A30BE37D /* QuartzCore */ = { + 8EF1C9644702D3269EBD674D29375D70 /* QuartzCore */ = { isa = PBXGroup; children = ( - E8135EB8B8AA793953230E6D9CA06C59 /* CALayer+AnyPromise.h */, - 4FB2012EA92E6D60B1F8635B2365EFE3 /* CALayer+AnyPromise.m */, - DA096D577ABA6B477017D33EDE64D5E2 /* PMKQuartzCore.h */, + 126388EA10F6ED929188914116A9A351 /* CALayer+AnyPromise.h */, + 3B56A24652AEE611B57462A41E3B7DB9 /* CALayer+AnyPromise.m */, + 3C03D52717774CB4CD3A7300AF9525AE /* PMKQuartzCore.h */, ); name = QuartzCore; sourceTree = ""; }; - A633B295DCB5C128B949BC8605C31D81 /* Products */ = { - isa = PBXGroup; - children = ( - 8984D061545623095E5F32FFEA8F1CA6 /* Alamofire.framework */, - 6674A86EFFEEC83CC10F2D198A678B05 /* AwaitKit.framework */, - 5AB8DC76F32E4364588368BA5ADCBF61 /* BigInt.framework */, - F3B834FEECF91EB4ED2EB9B56D4A2D77 /* CryptoSwift.framework */, - A23C2EC8CC0F010A06926A9F086F7066 /* libsodium.framework */, - AB51CC9B0693F64119B762C37136AE87 /* Pods_web3swift.framework */, - 8EFE79B682F9C459CEFF68D6B8F8624A /* Pods_web3Swift_Demo.framework */, - BCAD54B337692D7BE38D588249483AB9 /* Pods_web3swiftTests.framework */, - FBEAA135553BC406F908BAD21B726743 /* PromiseKit.framework */, - 44F2EC70FBDF67CBBF2014FDC1C0A015 /* SipHash.framework */, - 7F1CE0B44B9A687132B526D2A5DCAF2D /* Sodium.framework */, - ); - name = Products; - sourceTree = ""; - }; - AEE9E5A94D101587D8AF7758E3D2D409 /* Support Files */ = { + B2789C8A127E3DEAF197CA5D7606206F /* Support Files */ = { isa = PBXGroup; children = ( - 18BBFC5758096663BE1B5F3FD062B990 /* Info.plist */, - BBBDF5896217B4BC1205D48008B5A813 /* PromiseKit.modulemap */, - D04ABFA976029B930018AAE42B9AD820 /* PromiseKit.xcconfig */, - 84E71FA73F1D5874752FEF66FFB5DDF4 /* PromiseKit-dummy.m */, - EA63B8FD047079681D55D7C81F0D84B5 /* PromiseKit-prefix.pch */, - FBE5EDC0D8BB184955502C1D95B78D1F /* PromiseKit-umbrella.h */, + 3AA38C9759F09C6621EB5DA8644A9DD0 /* BigInt.modulemap */, + AA51C6EDAB8F58FAA02E0DD739398741 /* BigInt.xcconfig */, + 9E7AE4332CF4946574A53ED2E70272F7 /* BigInt-dummy.m */, + 2F93526CCC37E0101FAC42903C1859F6 /* BigInt-prefix.pch */, + F465EAE03BDC061A09E71DDD019A80B4 /* BigInt-umbrella.h */, + 7297728853CE6C15038E1195BD36B48F /* Info.plist */, ); name = "Support Files"; - path = "../Target Support Files/PromiseKit"; + path = "../Target Support Files/BigInt"; sourceTree = ""; }; B54FC3B8F8D44B46C7B2F3F24C711E10 /* Pods-web3Swift-Demo */ = { @@ -2014,93 +1895,6 @@ name = Frameworks; sourceTree = ""; }; - B6DE25EA2B1F9F586FD11C67A63830FB /* Sodium */ = { - isa = PBXGroup; - children = ( - 5B14D46C50F636BE8E466D520963604E /* Auth.swift */, - CAB1F376B16515A9363F01965D003074 /* Box.swift */, - 72D4FBFB3F620F3965D92AD62A12C79B /* core.h */, - B60EF11E77872012BDABF55C534ADFE3 /* crypto_aead_aes256gcm.h */, - 1920F8834A4EC1BE93F02EB6F4A974E2 /* crypto_aead_chacha20poly1305.h */, - 6C781EDE8A34E27850F8974D8A562DE2 /* crypto_aead_xchacha20poly1305.h */, - A8EDFF6E0C69BBEA160BC090FF394E61 /* crypto_auth.h */, - E7EA887E557B5613F701F400083054F5 /* crypto_auth_hmacsha256.h */, - E2B74125E27DA8D444DE24EB9F4953F6 /* crypto_auth_hmacsha512.h */, - E80E5EA27D02B1FEEEF1D5D0029B8703 /* crypto_auth_hmacsha512256.h */, - 88AA06E26654F8E7655E7820B11C5F75 /* crypto_box.h */, - B0B906A4E9D483526F49D2E7D64554F8 /* crypto_box_curve25519xchacha20poly1305.h */, - D878F47BD0BBDE5E21B803E9DB7521A6 /* crypto_box_curve25519xsalsa20poly1305.h */, - 779AB1A206CC9D7758AB6B53AE0C74C0 /* crypto_core_curve25519.h */, - 8366E96CC3E2E52B17E56DAE63971787 /* crypto_core_ed25519.h */, - A62C3D81BB4A8F4AB511974F1D1CA2CF /* crypto_core_hchacha20.h */, - AB2DF9FD64F1C8CCB4DE8BE9DEB14EBF /* crypto_core_hsalsa20.h */, - 15FA18EA6039F5B131F2C2CB930B69AD /* crypto_core_salsa20.h */, - 411A9CF5F1FA74B10BB27291A432442E /* crypto_core_salsa2012.h */, - 912F7B30025B6487AFFFF62442B0B9AD /* crypto_core_salsa208.h */, - 25E122EB8642A04254099F97D01E450B /* crypto_generichash.h */, - 4361D29DE3CC5313ADA5BCA037D2077D /* crypto_generichash_blake2b.h */, - FAA4DCBF3C1CE7AECA7DA585EC8C3877 /* crypto_hash.h */, - 785F8ED3587D35DF586E9E2B5CA20490 /* crypto_hash_sha256.h */, - 927A4352588589EF77582F1D5D84EDA2 /* crypto_hash_sha512.h */, - 66FA87445DE5FDF4005EE48476B2F018 /* crypto_kdf.h */, - 83FFEE5270B626523220CF563F49D074 /* crypto_kdf_blake2b.h */, - 0F4F20125789BA422E650A237A8C28CC /* crypto_kx.h */, - 21F9C2D13E21DC3B4559C86E70B73621 /* crypto_onetimeauth.h */, - A55B26E912C39914E13AC2C69B72D917 /* crypto_onetimeauth_poly1305.h */, - 21BCBD78D05361D29C4E668BD6631C15 /* crypto_pwhash.h */, - 2E2AFD18582598260EEEA0316706F9E7 /* crypto_pwhash_argon2i.h */, - 0D5F42853C987BCBB0286E3C13B60652 /* crypto_pwhash_argon2id.h */, - A42491FEED1F6B26F1E9D9E2155E8D17 /* crypto_pwhash_scryptsalsa208sha256.h */, - 4FD5AE38046C697D47E965FFF3240861 /* crypto_scalarmult.h */, - 2340261E60C062A9E7523109A301DB57 /* crypto_scalarmult_curve25519.h */, - 27F68FBE86940B8D1D1ECE44538B5488 /* crypto_scalarmult_ed25519.h */, - 6E42C73C44A8276D98700E6835108B24 /* crypto_secretbox.h */, - B2A0A8C7EB9FD69A844409B215700892 /* crypto_secretbox_xchacha20poly1305.h */, - 54A7317C51E1282B6975715D070F21E9 /* crypto_secretbox_xsalsa20poly1305.h */, - E8D48EF82D79720DEA5ABCF6378E6086 /* crypto_secretstream_xchacha20poly1305.h */, - C8C6A282E8C80B0531A45A768E896D4B /* crypto_shorthash.h */, - 24765D3FFBBEEC352498B8C33B8FA52A /* crypto_shorthash_siphash24.h */, - 702BBA9585D507E1C04742322173DA70 /* crypto_sign.h */, - 5754A07E19B7D183E04F04ABFEEEBB7B /* crypto_sign_ed25519.h */, - A3D3FF2745D777DFA9D6BB4A9A4EC657 /* crypto_sign_edwards25519sha512batch.h */, - C0FCAE74F0F6D6E2C4590F45D0380EB4 /* crypto_stream.h */, - 60D55A072599984F595CA89E5548C732 /* crypto_stream_chacha20.h */, - DBC05BB39007CF3D59B462B7595BDFAD /* crypto_stream_salsa20.h */, - 24E31EE2027B84080F63B9DC43E99C53 /* crypto_stream_salsa2012.h */, - 2BB0A2E7525A07657002EF586F51CA7C /* crypto_stream_salsa208.h */, - 6B589E74E26DBF1F82FA947C9530E57E /* crypto_stream_xchacha20.h */, - FD6C3F0DF341AB61FA03ED2D0512C889 /* crypto_stream_xsalsa20.h */, - 77647289EC7EC8242C586D386B03A75A /* crypto_verify_16.h */, - FA3BB286B2C429F1AEA39AB59F3217D2 /* crypto_verify_32.h */, - DEFE3E096D3BB5041CFCA86B81D6DDDB /* crypto_verify_64.h */, - 5073FD40A4668B8891483BF7B846F2E9 /* export.h */, - A1A008A6866816B51824B7C99BA6B095 /* GenericHash.swift */, - EF04303D7B2818876F041A8E68A8353B /* KeyDerivation.swift */, - 628C99C774EFD164B3BCD529B1CC9452 /* KeyExchange.swift */, - 93671FFA714667A9F4303192AC6EC67C /* PWHash.swift */, - 0A149710EE462F517FD899263322B9D8 /* randombytes.h */, - C864C7864F697E7F4B1256982AB881CB /* RandomBytes.swift */, - F0AF7E7C367AB2DA5A42BC0F17AD4E75 /* randombytes_salsa20_random.h */, - 0D25909FF7E6B9DA66A32A2B390CA1E9 /* randombytes_sysrandom.h */, - 74DAB21397096EFF1772C7AE4A626D8F /* runtime.h */, - C4409D6BE5E70AA79515BCE82C62E40B /* SecretBox.swift */, - E396FBD91C56C17E94BDAE8CED5802C2 /* SecretStream.swift */, - 3FCD34BC6761243908EA45C63260AC14 /* ShortHash.swift */, - C64B66232C9D37ED3072A80AE0EE2F49 /* Sign.swift */, - F03999B5FD8FC48C689AADA8853A188B /* Sodium.h */, - 86F4390692335E8406575A4CE4C4C02D /* Sodium.swift */, - CA31E4ABBA0E27582BEB6ADA8BABB91D /* sodium_lib.h */, - DDBE22905E1628E164583709CBB88DB3 /* Stream.swift */, - 79F9F83CE060EC44F6FF64D7AA1DB5DE /* utils.h */, - 8CAC3E4D865F59B3ABFA31CC1BA97A13 /* Utils.swift */, - 816F8287AE67F71CED03AEA0081968F0 /* version.h */, - 5F6FC4552E1552EFD11A8B69C8B4262C /* Frameworks */, - 7AF4420BD4D18CE73A2A4A5A3E51FC14 /* Support Files */, - ); - name = Sodium; - path = Sodium; - sourceTree = ""; - }; BD6AB926FF082D8639B667415968AFC9 /* Pods-web3swiftTests */ = { isa = PBXGroup; children = ( @@ -2119,161 +1913,496 @@ path = "Target Support Files/Pods-web3swiftTests"; sourceTree = ""; }; - DBA29870FEED8E769438C64F8C386A02 /* UIKit */ = { + BDC5EF7BC049C2874A3580E04D3CB43C /* Pods */ = { isa = PBXGroup; children = ( - C18B37DFBC5156B01601ECA9A7F0E448 /* PMKAlertController.swift */, - 5B64FB102372A10F02A723C8DB324236 /* PMKUIKit.h */, - D894EE15417C0D91C98EEA35EB6DEFE3 /* UIView+AnyPromise.h */, - 97282C0A3B7FE7421CC4411EA6BAFC74 /* UIView+AnyPromise.m */, - CE00FE26614EF8C662EB5B0420C45D20 /* UIView+Promise.swift */, - 2B4D328AB2960E93917ADA0F2DB5618F /* UIViewController+AnyPromise.h */, - 8C586DDBF2C8228DF8C76E76E0AA3A23 /* UIViewController+AnyPromise.m */, - 65C97BC6557C4BA17D605808D72A218B /* UIViewController+Promise.swift */, + D6F4B0B5E2FB5E9460CBA1FD59312503 /* Alamofire */, + 02AA3F6BA5110B2866B3B490E07DCD88 /* AwaitKit */, + 165BD8034D43498D3069171848166ACF /* BigInt */, + 5ABA73677E3E55D56FC8240013853854 /* CryptoSwift */, + D7389377778709A99ED420AEF46FB82D /* libsodium */, + D3BC0DA0C5CAA8165547ABF59BAC43EC /* PromiseKit */, + CC2C0FF921CBBC52828A57C279BA435A /* secp256k1_ios */, + 59034212CECE8DDE037A66BF75DCBF83 /* SipHash */, + 158B341F1819F7F9DDC9E22BECC4D70D /* Sodium */, ); - name = UIKit; + name = Pods; sourceTree = ""; }; - E412F472A6F2364CF89FBA2EBA6B160A /* BigInt */ = { + CC2C0FF921CBBC52828A57C279BA435A /* secp256k1_ios */ = { isa = PBXGroup; children = ( - 8840D3CCF38D54B422D17767EF0C87FB /* Addition.swift */, - 87B331AC7C26EE9999B76D9E16AB8FA0 /* BigInt.swift */, - 2E8D5843CA14BE50903DA3C0FD314890 /* BigUInt.swift */, - DCEC94BA988FD836C18B1C985E3E9602 /* Bitwise Ops.swift */, - D79E795CB7ED938F0E5DE7FEADF7F422 /* Codable.swift */, - BD1B910902B731C788D4438432C1AF02 /* Comparable.swift */, - 862DCE2EB70D3A635BEE5BCE21EC6297 /* Data Conversion.swift */, - 58BCD115D3035669AF954578C9C9E30B /* Division.swift */, - E8DFB4C58E652CD3849E3CDC9649EF72 /* Exponentiation.swift */, - 9B73EA5BC0B20FE37AFF7799A68BCB8B /* Floating Point Conversion.swift */, - 3F3E15B49E89EF6B53D20BAACD826290 /* GCD.swift */, - D7FEC28F3DBFD25BCA60F3E7C8D6FF15 /* Hashable.swift */, - BC668F258AEA31AC53D7C6CCE7E4E707 /* Integer Conversion.swift */, - A2510DD098271C3F6BD6BBF571628EB1 /* Multiplication.swift */, - 601D68425F844CE65F5C2B4CBB93BD2F /* Prime Test.swift */, - 5485CC081D9484806CB46750B04EF2F8 /* Random.swift */, - EA798B81B55F2665470AD5EBC76E6DB3 /* Shifts.swift */, - 04A664D2872E47C0C727D661CE83D447 /* Square Root.swift */, - 2DCB4E72425520BE9F2309B142A75BBB /* Strideable.swift */, - 342E10320A0F4AB4BB1432747ABAFFEF /* String Conversion.swift */, - 7EEB20C2A43940582B1D5043763669FC /* Subtraction.swift */, - D260CB70BCBA84F6A1DDC8D6C064D36C /* Words and Bits.swift */, - 18CAAF6E378D4DB29B1347E06884C39B /* Support Files */, + 398ACC94B6724B8F4330CDDE2D0D1D17 /* basic-config.h */, + 66E96D2EE75CC47D2B882C23356ABD3D /* ecdsa.h */, + ABAEB533263065A56B85421D9C76852B /* ecdsa_impl.h */, + BBC8C35543F9510A70256ADA6D99B131 /* eckey.h */, + 470AAE575CDF5DB94A841E2FAAB0BEFA /* eckey_impl.h */, + 194CFD6780762E2D8DD14651CEF1F13B /* ecmult.h */, + D4E9B5F5ACE5E1E134A1B24C7B4979C4 /* ecmult_const.h */, + 91DA9B1984A76808340777213870CDA1 /* ecmult_const_impl.h */, + 8F09586E570AB98B8F2A503AD744D778 /* ecmult_gen.h */, + D957C62883D0C9D288754C24EAF62339 /* ecmult_gen_impl.h */, + E24ED0404E0A0DA4DDA672473B5C99B8 /* ecmult_impl.h */, + 631496EB589CA5F21A91F8BAC9B63171 /* field.h */, + AD06B1F65EB15F6A0E4D35A756BA49F0 /* field_10x26.h */, + AEBD96DB688BDCF12921FAAB4CE7F9B1 /* field_10x26_impl.h */, + D4BB87ACC78B3A8FC305B1A154ED6056 /* field_5x52.h */, + 54328FC1E9FD7FBA511EF8034F7E1383 /* field_5x52_asm_impl.h */, + 088D36A2B2B54DD4F17821CD55B6B301 /* field_5x52_impl.h */, + 4605154FE7FA01D775E382F72BB7E19C /* field_5x52_int128_impl.h */, + 174BF9D2BF8A1AD12BB70BDA480FF996 /* field_impl.h */, + E2CA5E67E0AA450FE288FF9234B143D2 /* group.h */, + 5766CA36AAD59C7614DA7EC55F6BD087 /* group_impl.h */, + 00452E9BA40A380523E5E6228F6E642E /* hash.h */, + CFAFB8DE7471D2B574E10DB53EF93647 /* hash_impl.h */, + 107DE410E730EDAB1F9EAF3CF30DA26F /* lax_der_parsing.c */, + E3922E3CCB98553653A88BE4AECF0066 /* lax_der_parsing.h */, + 7B425AC0F76945E78E0C254BB86ABBCF /* lax_der_privatekey_parsing.c */, + E60E47AE8A68FE2F1BC17B1B470B35A8 /* lax_der_privatekey_parsing.h */, + 770D18C5486F7A370B1BE0D6F355DC48 /* libsecp256k1-config.h */, + BB1C4BA760DD6389E4504F84209E46FD /* main_impl.h */, + B240610E594B955FC112AFFD1CF7891E /* main_impl.h */, + ACB90F919DDF8611BF7E7B69BCBD809C /* num.h */, + 4CCFCF37DD44E78374826B4F63EB3A7B /* num_gmp.h */, + C8BC3A4F511CD3C13C0C128343DE3718 /* num_gmp_impl.h */, + CE5203F63A8342E95DB0C719FF689B9B /* num_impl.h */, + 48DEC7B142327F649F16B6A3B2173481 /* scalar.h */, + 62E5093BFA3E697040C1C87A6F44BB51 /* scalar_4x64.h */, + CFA46C683F32C65C824BE2C0457818F5 /* scalar_4x64_impl.h */, + B3FCA78B5FD3B288EDF169D9D45313CC /* scalar_8x32.h */, + B98AE4C2D95A57A81283819409FACEA3 /* scalar_8x32_impl.h */, + E88D8C10529622E9AB903834D20B37C9 /* scalar_impl.h */, + 3C99572B9FBBEBC6294C27E822246C8A /* scalar_low.h */, + 9142468A95060DE3D1E549AFD67F7404 /* scalar_low_impl.h */, + EF2B473B6FD8B03E940D2CDA6878B720 /* secp256k1.c */, + AAC3E46F1E1BAF03DF6FC016BBFC8B0C /* secp256k1.h */, + 01DFED00F38E9269E99CA4FB840D2D9E /* secp256k1_ecdh.h */, + B277EC7B1F52D372514A1F5C1CA729AB /* secp256k1_ios.h */, + E3B99777B000BD1E545EEADF4E8D4FED /* secp256k1_recovery.h */, + 62FC06AFAA06A8B4881A4B638C47F78A /* util.h */, + DD709C0260752B5D662986BFA8C64D81 /* Support Files */, ); - name = BigInt; - path = BigInt; + name = secp256k1_ios; + path = secp256k1_ios; sourceTree = ""; }; - FD2FDEF9DD3E783B6910A5C7BC8F9B19 /* Alamofire */ = { + CE46A68E41B2A0AD2FA00E7044F64F02 /* CorePromise */ = { isa = PBXGroup; children = ( - 82A8F6FF0C5CE4278B3E8649E000A8B3 /* Alamofire+Promise.swift */, + C04F62431EDF8408731465821FAB17AA /* after.m */, + 38A21D6E87EA6D6A62BE8872B1832BD6 /* after.swift */, + E5F64ADA40753F1FE7267A17A536882E /* AnyPromise.h */, + BF36A3F9796A65CF8CC87C6A3B847FEE /* AnyPromise.m */, + 26BB766A45376D4E7004CAD20B90ABCE /* AnyPromise.swift */, + ABA767A321FE49B7686BA1E79F3676EB /* dispatch_promise.m */, + 86E2BF2097E0611E9F0BBAA6BCA0B3F7 /* DispatchQueue+Promise.swift */, + 48325FEA6DA709500C1D9FBD8D2F4152 /* Error.swift */, + DDE7F239B8D5113CABFDD4456739BC0E /* fwd.h */, + 3AFE1F3945CB38D5140ABD6DDA7F479E /* GlobalState.m */, + E74A8CFCF1827026C6E4899D6DB42DB2 /* hang.m */, + 5792C0F8AAB58BC44150BFF087A53277 /* join.m */, + 6217EDEF8B18BA426738F0C815CB5CEE /* join.swift */, + E23FC85BD650B5CD0593D5E8CD3CF69F /* Promise.swift */, + B9D5D0310DEB039C22C55846250FAC55 /* Promise+AnyPromise.swift */, + BE008C29E5430422D5A8E67AE4A3F1D4 /* Promise+Properties.swift */, + 31F650A915064F1EAA12DA43F65AC6E7 /* PromiseKit.h */, + DF9E21D371710F06647DC8AF6D073D56 /* race.swift */, + A0D32A6507C07821D4D7053666EFF830 /* State.swift */, + AE10E194DE69EA610A2293C070B8426F /* when.m */, + D2A49F4C3ABC154B1037C4E9EB70D1EE /* when.swift */, + 6B9C3B5A326486FB7260424DEAFA0C2B /* wrap.swift */, + 4929A93CF65EE3863C0CF7421174242A /* Zalgo.swift */, ); - name = Alamofire; + name = CorePromise; sourceTree = ""; }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - 062237D68CB450BA8B27349A031112DD /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - ABC69E4DDDD1908FA92A2A2832924D7C /* core.h in Headers */, - 51283CE7A3E24E90F7A0068CF8DFB910 /* crypto_aead_aes256gcm.h in Headers */, - 2E6CD21CD44D5C5A7AE64FC2855A05B4 /* crypto_aead_chacha20poly1305.h in Headers */, - 6DE02DC93DD96D7F4F31A06A9BA9A797 /* crypto_aead_xchacha20poly1305.h in Headers */, - D632AFA9C9449E985DDEC4B7F578747E /* crypto_auth.h in Headers */, - A1E6865B286158C00502DEB5E8D4C178 /* crypto_auth_hmacsha256.h in Headers */, - 26464DC7AC5509B5F6C9FB480927CC74 /* crypto_auth_hmacsha512.h in Headers */, - BA2EE19964FE0A08E9CCB2FD98207A53 /* crypto_auth_hmacsha512256.h in Headers */, - 18DE9674666D4B74FE13C2C1464D9AEC /* crypto_box.h in Headers */, - 8A56F0E76C6F24BC5DAC7694ECD600A9 /* crypto_box_curve25519xchacha20poly1305.h in Headers */, - 6DAC93A3F2805E6F1E096F48492BE714 /* crypto_box_curve25519xsalsa20poly1305.h in Headers */, - A449914AB4F5B7DE227739333E8B13F5 /* crypto_core_curve25519.h in Headers */, - 7F1599A650C0F56DE958EE9755201030 /* crypto_core_ed25519.h in Headers */, - C3B6F398889467C811C857EEC998C480 /* crypto_core_hchacha20.h in Headers */, - 28086C0B08C2D9EE76BB631C3F6A8ECB /* crypto_core_hsalsa20.h in Headers */, - 9CA4CE62EAFD4B91D10BA54B97FDD086 /* crypto_core_salsa20.h in Headers */, - E461DAF66B50584D8124A2237D42DA59 /* crypto_core_salsa2012.h in Headers */, - B6CCD28C20E75E1220654DADA15F9693 /* crypto_core_salsa208.h in Headers */, - A93CD1391F1519BBD1252575851B77AF /* crypto_generichash.h in Headers */, - 23352C1BD2BD1915C66DA889CD1A9E2C /* crypto_generichash_blake2b.h in Headers */, - F6AC42687826E7E69CA375FFDD2D9435 /* crypto_hash.h in Headers */, - CEFA0621F14AF62206FD6A6324C0866C /* crypto_hash_sha256.h in Headers */, - 17ADA1C7EF49058148D0F39F103E252E /* crypto_hash_sha512.h in Headers */, - 301F8EB752CCD9BB9DD75E0CCAC4169F /* crypto_kdf.h in Headers */, - D73FD7F7CA8076E56E7CA2EA715C5720 /* crypto_kdf_blake2b.h in Headers */, - 848C73CBCF0725FC7FAFBC620B284F5A /* crypto_kx.h in Headers */, - 969BB52BF7B08BDA030808C63CF9E82E /* crypto_onetimeauth.h in Headers */, - 001A9A48E508A5D7158070D6606EE959 /* crypto_onetimeauth_poly1305.h in Headers */, - 8CCB8CE7DA394110EC4711CEABA89C06 /* crypto_pwhash.h in Headers */, - AF64C94396A1132AA662FDA9CCEC726B /* crypto_pwhash_argon2i.h in Headers */, - EB24ACFEE3A5EC4964A10688CC334011 /* crypto_pwhash_argon2id.h in Headers */, - FF31146782097BA2BE98841D2C91F668 /* crypto_pwhash_scryptsalsa208sha256.h in Headers */, - C769358148E8BCA471E83AFE8CC3CE4A /* crypto_scalarmult.h in Headers */, - 6772491EA548B7A863BB5FC57C395F38 /* crypto_scalarmult_curve25519.h in Headers */, - D0C16096E0C65DA6924303196F07359E /* crypto_scalarmult_ed25519.h in Headers */, - 650CC1946601D525B4D8097706E8DB8B /* crypto_secretbox.h in Headers */, - FCF9C7FE7F2C45A5FD6BFF04D0FF2226 /* crypto_secretbox_xchacha20poly1305.h in Headers */, - CF88FBAEA04DF1B14A501E206125AAAB /* crypto_secretbox_xsalsa20poly1305.h in Headers */, - D8CBA6E61225E0786BDA97FD9EEAEEE8 /* crypto_secretstream_xchacha20poly1305.h in Headers */, - 784CB231541E2F857EDFF79AA91F7767 /* crypto_shorthash.h in Headers */, - C0A1348BA2C39F16187D7824EE855684 /* crypto_shorthash_siphash24.h in Headers */, - B6A866543CBEC8754DFD7FA66F1BBF2F /* crypto_sign.h in Headers */, - F9B995458A498D5FBD8FF02A047ADDA5 /* crypto_sign_ed25519.h in Headers */, - E0060D791C8E508DC81AAE291A4C84F7 /* crypto_sign_edwards25519sha512batch.h in Headers */, - AD45DC7C578C6C662A445AC6324455F6 /* crypto_stream.h in Headers */, - 5C68B10C0B4F548030650792F3B2CE9C /* crypto_stream_chacha20.h in Headers */, - 2F6D106A08CCC7337A033DBA66E82B70 /* crypto_stream_salsa20.h in Headers */, - 3B398F53E01A88D0FAD37752321F8429 /* crypto_stream_salsa2012.h in Headers */, - 4CD5DBEF0D0CCB1473E20AC8A4AE2050 /* crypto_stream_salsa208.h in Headers */, - 054718E70C6B5BB7A88AD0EC867372D0 /* crypto_stream_xchacha20.h in Headers */, - 7C3782C0DF34998EC0845BF4988BA179 /* crypto_stream_xsalsa20.h in Headers */, - DE9DE941A209B63B267CA261B9B5D37E /* crypto_verify_16.h in Headers */, - 9D25D38FF2427F038E66552FA45AFF21 /* crypto_verify_32.h in Headers */, - 7925FCEA0F34B928F758D6B926A18A90 /* crypto_verify_64.h in Headers */, - B8F0289A332BBD6972264E30850670DF /* export.h in Headers */, - 19BBC48CB51A114FB2476440B1A7EA94 /* randombytes.h in Headers */, - BF7C44E3B6D1C9150ACE7BECDC3B450C /* randombytes_salsa20_random.h in Headers */, - F026423945C02D9679BFEE8E41CAEE1B /* randombytes_sysrandom.h in Headers */, - A0EFD74E3D2D45B704A6EE928B341C9A /* runtime.h in Headers */, - 575C122140C18F0216A7EBFDB560CE9F /* Sodium-umbrella.h in Headers */, - 43FA7875FC5643FFF8657DF52D2AF4A0 /* Sodium.h in Headers */, - F700D68A047273105355B18975D8A26B /* sodium_lib.h in Headers */, - AA1D18593B9670C6636796686F7A2EBC /* utils.h in Headers */, - 6BFA07226ABD476129E3D04A205F6976 /* version.h in Headers */, + CEFEFBE04232A08918126622D7854475 /* Support Files */ = { + isa = PBXGroup; + children = ( + 67708937FDBA62B41366624177A37644 /* Info.plist */, + 9A77C99612BF13DE11973DC24BEC610F /* SipHash.modulemap */, + FA6E203FA63E11ED4253C057238FDA83 /* SipHash.xcconfig */, + 46483C6A458E254B835B1DAA7A2878A6 /* SipHash-dummy.m */, + 366301F692A79CAD45767E0D7E2F2E85 /* SipHash-prefix.pch */, + 986515A50801EFE388504274DCC36EF3 /* SipHash-umbrella.h */, ); - runOnlyForDeploymentPostprocessing = 0; + name = "Support Files"; + path = "../Target Support Files/SipHash"; + sourceTree = ""; }; - 229746748F5CA693862A568C7AA959F6 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 55574A3260B3FE098E8116ADA6B9C25C /* Pods-web3swift-umbrella.h in Headers */, + D3BC0DA0C5CAA8165547ABF59BAC43EC /* PromiseKit */ = { + isa = PBXGroup; + children = ( + E3B80E40506EEE987A535AB7BF4DB5F1 /* Alamofire */, + CE46A68E41B2A0AD2FA00E7044F64F02 /* CorePromise */, + ECECBFC879DEAA111ADADDE5DB7C7F56 /* Foundation */, + 8EF1C9644702D3269EBD674D29375D70 /* QuartzCore */, + 1D96D10D12F585512EF491F26B19918A /* Support Files */, + 39C9BD553BB5569CCDB2D334F21F2412 /* UIKit */, ); - runOnlyForDeploymentPostprocessing = 0; + name = PromiseKit; + path = PromiseKit; + sourceTree = ""; }; - 3423B094C012FD5DC904536D8F77E7D2 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 7069495412710E5B345B7AB715051788 /* AnyPromise.h in Headers */, - 125E16E032D9EB73B86DE9EE85E7C283 /* CALayer+AnyPromise.h in Headers */, - 4AFE85213948DEAD418E98CFAA4A7918 /* fwd.h in Headers */, - 806F3FF1CA7CDA44033A7C4AFD61CDD5 /* NSNotificationCenter+AnyPromise.h in Headers */, - C1957D576C616C1F957EF9FD37ADBB3A /* NSTask+AnyPromise.h in Headers */, - E1B09057AE126ACF74BF63C6900073D3 /* NSURLSession+AnyPromise.h in Headers */, - 9737F1D46729D515F3F2CC3C56D103F1 /* PMKFoundation.h in Headers */, - DEFFFFB119948B6B135DB49AAAA7BA0D /* PMKQuartzCore.h in Headers */, - 6648F912E87AB39E31FA1D7F8076D715 /* PMKUIKit.h in Headers */, - 8BCA4EADD349B6A9B858EAC855F1D8FC /* PromiseKit-umbrella.h in Headers */, - 50E744F5BCD127D15C0DEE4DF318707C /* PromiseKit.h in Headers */, - A2997A2828E1093719E9DE73D5264E62 /* UIView+AnyPromise.h in Headers */, - 59B4C5FF164144E005EAE0E547F6EACD /* UIViewController+AnyPromise.h in Headers */, + D6F4B0B5E2FB5E9460CBA1FD59312503 /* Alamofire */ = { + isa = PBXGroup; + children = ( + 45E1469F7A4D58BEC725B296B455E64C /* AFError.swift */, + 6C40002B6AB23ADFFDB564AAAB5B2E00 /* Alamofire.swift */, + 705280A66E79CB7004A3FECADFB45240 /* DispatchQueue+Alamofire.swift */, + 4F8710FAEF27BCA4066637B64DCFBF59 /* MultipartFormData.swift */, + 542825134C42996A21D3651CB78C4747 /* NetworkReachabilityManager.swift */, + EA8E03E0252AC9BB1F087D520557BE50 /* Notifications.swift */, + A361335FBC7529C373055D35F00522E2 /* ParameterEncoding.swift */, + F2C981F61422118967CBF03EF54FA026 /* Request.swift */, + 042A4D28426082E8C796AE67FF694537 /* Response.swift */, + B5DD4D337A5B312DB9ADEE21B2804CB6 /* ResponseSerialization.swift */, + 7E9D884B37E08EB92C3743A4D61BF1C5 /* Result.swift */, + 00C1912A756C1AF4395038B9F09664A2 /* ServerTrustPolicy.swift */, + CE1E12EAA613A45AD83AFB6C0C74C5C8 /* SessionDelegate.swift */, + 904DD56165F0855EB80FEC3481446B5A /* SessionManager.swift */, + 4D7A617C500889B011493D21FE7A4788 /* TaskDelegate.swift */, + BCAF291B241373EFC19176F0FBBEABC2 /* Timeline.swift */, + E26D4A27311EA1A6919E4A79E0A46483 /* Validation.swift */, + 3B57D29E35D6A54FF5A2080CB2EBA0C4 /* Support Files */, ); - runOnlyForDeploymentPostprocessing = 0; + name = Alamofire; + path = Alamofire; + sourceTree = ""; + }; + D7389377778709A99ED420AEF46FB82D /* libsodium */ = { + isa = PBXGroup; + children = ( + 66AB214C94A062D30EE83206E4961AC7 /* aead_aes256gcm_aesni.c */, + 188709623E870B15CB2E68692A548593 /* aead_chacha20poly1305.c */, + D480F5CE7805F1FBFDFF1DC3BA9A6259 /* aead_xchacha20poly1305.c */, + A7338AD202AF0A4E747CFB565A4D55D4 /* afternm_aes128ctr.c */, + 2DA7D90EA2B7510EFF2CEB30737874BA /* argon2.c */, + 9D0D933C66AF52C3B04E16F8B4472459 /* argon2.h */, + E108AA36A595A6F2292E3A782A78EAEA /* argon2-core.c */, + 5D11481448FC728BF294A952BC6B613B /* argon2-core.h */, + 46C10B7A9E05A69FEC3FBA09F90B1B0E /* argon2-encoding.c */, + 0B04022934D52B8088218535AC8ED661 /* argon2-encoding.h */, + BACB3475EDF505CCBD8C6DA9D9B79E1A /* argon2-fill-block-ref.c */, + 21FBAEF445B99A996E4ED13AF5290411 /* argon2-fill-block-ssse3.c */, + 5CC242181B292323C1ADA4B0F3A8BBAA /* auth_hmacsha256.c */, + 285FDAAFC04BE9833D508C8796BC95E7 /* auth_hmacsha512.c */, + A624E79873D85DBBA0B99408C1057430 /* auth_hmacsha512256.c */, + 7D4648EE27E146BB24C2C0966CCCFC90 /* base.h */, + B04D3B26CA2B1E9B3FDDCB69DEC64FFF /* base2.h */, + A6EB93EB92398F82FABCCCD853710937 /* beforenm_aes128ctr.c */, + D5E447044BE8E846F5491C860AE71506 /* blake2.h */, + A7A96E7A2334264B3F3EC5EC35C42925 /* blake2b-compress-avx2.c */, + 7715AEC23705AE0548E8D82B38137082 /* blake2b-compress-avx2.h */, + C0ED4796B375704E4A0243BCD4B6187A /* blake2b-compress-ref.c */, + ECD7AB08EF8C8FF863D7B4E850AC726F /* blake2b-compress-sse41.c */, + CDC97B01BF460D5588B01DE4A96370B6 /* blake2b-compress-sse41.h */, + 8833EB488DC8FC2CFF384479F1B8EF77 /* blake2b-compress-ssse3.c */, + 43F4DCA991089AB989F5AFF2DBEAF64A /* blake2b-compress-ssse3.h */, + 3C4E243029F955B0F5A0A77B7CFBDB79 /* blake2b-load-avx2.h */, + 1AB6172174FEE95DC60427FB8D889B73 /* blake2b-load-sse2.h */, + E3C34753E5E5F3886A4AF14E9EF50CAA /* blake2b-load-sse41.h */, + 3B0CB1ED9DC473A77EC2A488CE972659 /* blake2b-long.c */, + 05CCB31086E817A5647E22DE62577C2D /* blake2b-long.h */, + BD57CDAC8629E26568DAB7556C3C9FDD /* blake2b-ref.c */, + C37846855D22D8BABC13D46926494B21 /* blamka-round-ref.h */, + 300023C33443B669808C36B0F0C9CAEF /* blamka-round-ssse3.h */, + F16F778FF7C25D4E1A3F9D3F127D5049 /* box_curve25519xchacha20poly1305.c */, + D89C57FF4DCF499E2C6D50E0F7516A68 /* box_curve25519xsalsa20poly1305.c */, + 5432D637C176B1115030CFBB2964B8E0 /* chacha20_dolbeau-avx2.c */, + CBFC8F745CA566C8DF572672FBBEF064 /* chacha20_dolbeau-avx2.h */, + 8AD32718C01819858C56F34692A68460 /* chacha20_dolbeau-ssse3.c */, + A19A92D697511E33B378801748F55BC9 /* chacha20_dolbeau-ssse3.h */, + 3C8A41071FD260C115DF94B6FBFE8CE9 /* chacha20_ref.c */, + B2CE148B70CCAC164166865F0F7C49F6 /* chacha20_ref.h */, + 7ACBA4291AC8B1FF023A2FAEAC5841E5 /* common.h */, + 3A38CF331F82BE8374FCE8A7B5772898 /* common.h */, + E88AF6EDA20AE2830F19AC192BF410A3 /* consts.h */, + 306C5F642893BA3DE56C750048B13C2A /* consts_aes128ctr.c */, + 9EFF37BC52F3023DD45213EB15161FE3 /* consts_namespace.h */, + 4BB2BADEA4D608FFA33189742852DE10 /* core.c */, + 863BE8939BD666C28E64F211F716D980 /* core.h */, + 750DEB4F0053A5D0D061D7D8BD480CF9 /* core_hchacha20.c */, + B71BCDDE02282E6F507A98E6605730F7 /* core_hsalsa20.c */, + E61A7C34E2811F18B407EBEF5B301368 /* core_hsalsa20_ref2.c */, + 99D8ADE8C3CA2AC41682D4A569D602C2 /* core_salsa_ref.c */, + 8F5B04706AC846488762D9368309EB4F /* crypto_aead_aes256gcm.h */, + 792AAB0B868BF7B27DB74C78D18F5B89 /* crypto_aead_chacha20poly1305.h */, + 7939E635B1B11605171D4005B536B633 /* crypto_aead_xchacha20poly1305.h */, + A2CE4C93D3EE0771C0A73EE0657A7EEA /* crypto_auth.c */, + 3B0238A125892420B7A7328760C65433 /* crypto_auth.h */, + 772E661C30FFBAF7A90E1ABEB7A11491 /* crypto_auth_hmacsha256.h */, + E741BB492570036869CFBA7D59476010 /* crypto_auth_hmacsha512.h */, + 3386C94624F564AC1A157B90EF4DAEEB /* crypto_auth_hmacsha512256.h */, + A5D9BA76E487C1D292FD730234B1AE25 /* crypto_box.c */, + DE9DF7CDD6CFCDFF62F76D27201B2BBC /* crypto_box.h */, + 20161716CB73A05C11BC0D9674719D73 /* crypto_box_curve25519xchacha20poly1305.h */, + 10FC1B17FC8359EF990417B99EE0841A /* crypto_box_curve25519xsalsa20poly1305.h */, + A74B3387C56B8EF5D392C652FDA01928 /* crypto_box_easy.c */, + 00964D8968EC73CECB3D05AFB39B25BD /* crypto_box_seal.c */, + 5C196DE93DF11E6172D895A33FBD32CE /* crypto_core_hchacha20.h */, + 0FC8A2C990AE17FED3B361AF7FDA5FF2 /* crypto_core_hsalsa20.h */, + 62E778C659906882B5592ACE72EF6258 /* crypto_core_salsa20.h */, + C5CC4E2B1C1EAD723D8A238FCDF407FF /* crypto_core_salsa2012.h */, + D0600F183C24625738DAC5C03F8C057D /* crypto_core_salsa208.h */, + 855C520CA23CB8E3A12110E26AE36677 /* crypto_generichash.c */, + 69181C49D9BB8CBEF39C29E2E6F0E515 /* crypto_generichash.h */, + EE8D28A3351F1F43EBF7B63F9773E4A0 /* crypto_generichash_blake2b.h */, + D91B8E6F194E81A3CDA720F0CF3017DA /* crypto_hash.c */, + 188C52A6D4B24EF8F52610B37669B45A /* crypto_hash.h */, + 49DBE8708C3FB343660636A56C0F5CFC /* crypto_hash_sha256.h */, + E08589A3E265B3B8A45AAE1054F48429 /* crypto_hash_sha512.h */, + FAD8B1A0353421019632DFAA69E13A02 /* crypto_kdf.c */, + 061E985595B1F655DF2773164CCF9585 /* crypto_kdf.h */, + F59B11885A0CFB1B32352ADD0B2D7AA8 /* crypto_kdf_blake2b.h */, + 665F4D2AD8D7E4A14F95CB57C022B375 /* crypto_kx.c */, + 7C54C74AB7DC5B51E6F6C0C871294708 /* crypto_kx.h */, + 057CF786D0ACE9BDF0AC715364795AA8 /* crypto_onetimeauth.c */, + 912B295234C0661830A691A0A0E13685 /* crypto_onetimeauth.h */, + DB0C9B099068852FF502081301B6AEA6 /* crypto_onetimeauth_poly1305.h */, + 94FBB315D73430B0AA86C296090D2120 /* crypto_pwhash.c */, + 1356A151B544C1192B6AB81AA56F2CBA /* crypto_pwhash.h */, + 7237A479ED7621A9ED30984CCD5B5978 /* crypto_pwhash_argon2i.h */, + 5790BDDFF0DCACA8FC7DC2D618F5C169 /* crypto_pwhash_scryptsalsa208sha256.h */, + 9D1E2D13D418001F731BBAA01132AD38 /* crypto_scalarmult.c */, + E472DA93F83DB1E4987B9327279E5802 /* crypto_scalarmult.h */, + B41E875A13E1EEFCB3F0106FADECF01F /* crypto_scalarmult_curve25519.h */, + E2DDB0D8C2DAC4F2A6EDC52F6E0C0654 /* crypto_scrypt.h */, + 2FCAB85CB8673F7720318C665549604D /* crypto_scrypt-common.c */, + 59665BEBF830451CDD9D7CD5599B8D9F /* crypto_secretbox.c */, + 5AEB5F7824D0BB82D60F77B677272440 /* crypto_secretbox.h */, + 59B9314071BF7E772E3F9AD3830A9783 /* crypto_secretbox_easy.c */, + 10638DD5E2EE146E210FE3DB65B19A21 /* crypto_secretbox_xchacha20poly1305.h */, + CA7880AC73EC7F919FED94798AEC9633 /* crypto_secretbox_xsalsa20poly1305.h */, + 1C69652417F7FA2E2D49EA91E8B526FB /* crypto_shorthash.c */, + BF80B2F659CE776A65A26085FBA33DB3 /* crypto_shorthash.h */, + D3F0134ED7A7C9535A7EA63014F8B211 /* crypto_shorthash_siphash24.h */, + 288EC8ACFC5DEF4ADA602DCBCE0B50DF /* crypto_sign.c */, + 0BEFCB1B86F0CC8855D4CBE58F43F20C /* crypto_sign.h */, + 5B1385C27F951BEEAC66BA0AC7669318 /* crypto_sign_ed25519.h */, + E997BA6884E45BA4379B76872903FD4F /* crypto_sign_edwards25519sha512batch.h */, + 43B9AB00B876DF2FC086DF76B60D34F7 /* crypto_stream.c */, + 5683C01BDF139FF1A92B70D911690B7D /* crypto_stream.h */, + 811A188257A65A54B0195ADEDE05FE4A /* crypto_stream_aes128ctr.h */, + C38BCC86401EC1098D276129407562CC /* crypto_stream_chacha20.h */, + 59C3BBEE7C44DBF3FF9A530A1F10C849 /* crypto_stream_salsa20.h */, + 3694D1B6FE33F2B7975341353EE2BE29 /* crypto_stream_salsa2012.h */, + 68CBE3BD09BB16C6556338D87E6854F6 /* crypto_stream_salsa208.h */, + 5EE8E9BEE5CDCA8F1C6E53427F60D55C /* crypto_stream_xchacha20.h */, + 812B5D47D26F96C9BAD3709A975FF469 /* crypto_stream_xsalsa20.h */, + B45709B61AE990A24C890267EA607C3E /* crypto_verify_16.h */, + A4D8637478D75F16DCE82433FD8E3157 /* crypto_verify_32.h */, + 6EAC2CB20F0056806271A830A16836AA /* crypto_verify_64.h */, + 6E74EC7BB0D56771EDD3E24321F7BBF9 /* curve25519_donna_c64.c */, + D459D8919804E2BBD0578996A641B056 /* curve25519_donna_c64.h */, + D1E81ECE603635080B1B8863CCC3BA87 /* curve25519_ref10.c */, + 36880EA07B55D344AEE94C7AB2138E22 /* curve25519_ref10.h */, + 7A391940DE501B6BE125DC83AB2795A8 /* curve25519_sandy2x.c */, + 23E6E7E8375333D909C88BC6C8DC8DFD /* curve25519_sandy2x.h */, + 620DAE2D1ADF10355B3E2529A23BF940 /* ed25519_ref10.h */, + 3204E0346807F463D625B1FA74632F5D /* export.h */, + A7D45A9CD3E26DA47608CD8C21DDFAAB /* fe.h */, + E612172B5EC8A35BE2BE84F05D8828BA /* fe51.h */, + E613EA139E44FE65BBA7B79EDF0731B6 /* fe51_invert.c */, + B858671F2F5CF2C63AB87D3505BCA664 /* fe51_namespace.h */, + 77F42C7C67813AC2AB4076A173D1D0D7 /* fe_frombytes_sandy2x.c */, + 82F89689FA95E227AA1FD8078BBD5CAF /* generichash_blake2.c */, + 263BA41B9CC33F8E82CAD4A83E87FFF2 /* generichash_blake2b.c */, + AC4E785FB09A13C3F7CE094AE5BC0BD0 /* hash_sha256.c */, + E309D9CA14061B95F28432178D6866F7 /* hash_sha256_cp.c */, + 80DD8BD467A648B2B4F01DB4A1785BA3 /* hash_sha512.c */, + EAF88EF17DC709BD802C0E57F078E878 /* hash_sha512_cp.c */, + FF40CAE7B5FA9C6D5C50E48A28A4D563 /* int128.h */, + B1408CD377151BAD54BD7E2219731C25 /* int128_aes128ctr.c */, + E2885498B9E41D1CD60EB8D8170B0A1C /* kdf_blake2b.c */, + F9F718679D1EEB1DDFFCFEDE3AE12E59 /* keypair.c */, + 05D75EADAA63150192812D8E4E1923B8 /* ladder.h */, + A8B44B93FD18F128EFFD84EEDB9EEE7C /* ladder_base.h */, + 67338E52E3E15864C350471B7C9D0C9F /* ladder_base_namespace.h */, + D9724CFE2F9521E0559D3D4F8A48B7DD /* ladder_namespace.h */, + FD5110BF64D11F842134688BBED75E60 /* mutex.h */, + 46FB6E902413F264FAE4696BF57F9439 /* obsolete.c */, + 930721CFCA4B7636184D238056AC1CE1 /* onetimeauth_poly1305.c */, + DE205A1A1516149F559DCA26CBFA94B0 /* onetimeauth_poly1305.h */, + 80C13C21DBA090DEF12D14076D0E0461 /* open.c */, + EAF664422D10623D6C5AC8753997E10C /* pbkdf2-sha256.c */, + 89975C5155547E680A0451EA87C09C21 /* pbkdf2-sha256.h */, + 0A124B44176189A4CA9F265D7F340F82 /* poly1305_donna.c */, + CB3DBBD5876C9D40DB599897201BFA19 /* poly1305_donna.h */, + 4EAA1484F58CBC589EE7F19BE6A71816 /* poly1305_donna32.h */, + 96E3B6818B7EB56444F7A2B545DC1E41 /* poly1305_donna64.h */, + 72DE4BB180DBCC97B6181FF78F6CE4DD /* poly1305_sse2.c */, + 963D3BF07345B3BB4ABD73BF4A3F41A9 /* poly1305_sse2.h */, + 07AB0F9D3D4BF834352986B5643E0154 /* pwhash_argon2i.c */, + 622056252CEDA40400CA2753B71BAFE6 /* pwhash_scryptsalsa208sha256.c */, + 85E35F5B25A4ECE67CD5C470932B3B7D /* pwhash_scryptsalsa208sha256_nosse.c */, + 9CF0E7F8EFB95EF4A7B697532F742A82 /* pwhash_scryptsalsa208sha256_sse.c */, + 8B9DF1FD11BFC5FAC57E2E26742C9E07 /* randombytes.c */, + 99850875B4C70F9899ED093BF2A23486 /* randombytes.h */, + 7D64668DE17E1BE1BD58BEA89D001355 /* randombytes_nativeclient.c */, + AC901887624E2DE87FBBAFA6AA4C5BA8 /* randombytes_nativeclient.h */, + 110F156EAD191CCDD7B6C8E6DB48480E /* randombytes_salsa20_random.c */, + 771D25E0072B760399A96895664C8332 /* randombytes_salsa20_random.h */, + 599471E29D2F9AB475B89739038C567A /* randombytes_sysrandom.c */, + BDAA848019BF7368ACE8278178DBCE7F /* randombytes_sysrandom.h */, + B19CBC40C69F5207FF87890A3B60DF68 /* runtime.c */, + 369A7ABD70E1D20F324E17B213F315DD /* runtime.h */, + 88A3BBCF2F9645EE05B1249FC2165D45 /* salsa20_ref.c */, + 739F5BD35F3CE84CBCE0EECAB410190D /* salsa20_ref.h */, + B3A443A3BCFB436B3C32F0D7FEF025B3 /* salsa20_xmm6.c */, + 56E0547174C288ED39F469015C8DE4AE /* salsa20_xmm6.h */, + D83DBCFCB5B5634C2C5910AD5FF80960 /* salsa20_xmm6int-avx2.c */, + 6087FE7B05DEF85DE89A643641FB7C0A /* salsa20_xmm6int-avx2.h */, + 9CADA8E8EB907CF49504D41969B66E1A /* salsa20_xmm6int-sse2.c */, + B89C0B253B5F6C24C45013381E2CAC99 /* salsa20_xmm6int-sse2.h */, + 0DCD780F725AC53DAE778E3A129DCB51 /* scalarmult_curve25519.c */, + 58802F8DA178E689F6CFAFFCE483F07C /* scalarmult_curve25519.h */, + CF2A6C1EEC5F3989D63F1ECEA6110555 /* scrypt_platform.c */, + 24E60E2C56BACA40748E8785637DA502 /* secretbox_xchacha20poly1305.c */, + EDCCF73D93A57CA87DEFA1765EF38AB3 /* secretbox_xsalsa20poly1305.c */, + AC97701660A1C57C612C75C8885B9B5F /* shorthash_siphash24.c */, + B4A6AC6D195915584BFEFCE646DA9430 /* shorthash_siphash24_ref.c */, + 38AAA42CA617110817513AFE572BC326 /* shorthash_siphash_ref.h */, + D4F6B5E28C06CAD97093E40CC12B2A85 /* shorthash_siphashx24.c */, + 7C1BD596E6DBB0FFE3391A9154C2B437 /* shorthash_siphashx24_ref.c */, + 7137563945A9007C26CC8B7FBBA2CBFA /* sign.c */, + 0F1D8060496D6585D516EDC1ACAB1ED6 /* sign_ed25519.c */, + 24B33607F207B7119B1626685203F8E3 /* sodium.h */, + 1B8348274CAB798E07D8F385C4F70F0C /* sse2_64_32.h */, + 7EFA15D3576EDBAFFC58D99F393DD0D2 /* stream_aes128ctr.c */, + 0061CDB4EDC26178A3D56DF93FC2F48A /* stream_aes128ctr_nacl.c */, + F89012584150A82F53FB77A113DC3C7E /* stream_chacha20.c */, + 832E9E85AFB0B83032EE656A1B2A6461 /* stream_chacha20.h */, + A10A0B5D0F25A6FEBC580E19614C59E8 /* stream_salsa20.c */, + 5300D14CE117C7D7545FFBE8333A53C3 /* stream_salsa20.h */, + AEA1BB0659091BE909860B67DC5AC347 /* stream_salsa2012.c */, + 408A09BECC450F94D68EF6470996054D /* stream_salsa2012_ref.c */, + A94FE59FF02CA1BF3C4C36AD073FB485 /* stream_salsa208.c */, + 702D841E2DE003BE799230FEDCF3FA33 /* stream_salsa208_ref.c */, + 1C3B1896999936CA79E0F71CDB5CEE72 /* stream_xchacha20.c */, + 882874EBBE101D20E22D89E3650A14F9 /* stream_xsalsa20.c */, + EE1D15C808270874570DD294A48887C6 /* u0.h */, + A144987DDDED702EB5E258B7DBA66061 /* u0.h */, + 2D8D147273FEB0DB4B09AB310C0E2FEE /* u1.h */, + 6D9D11493E3EE35AD3B313FF74EA7557 /* u1.h */, + 2BC51585C916D53B9B911712CEDB758A /* u4.h */, + 0A1463FF304439085E5AE7F102A78F8C /* u4.h */, + C0979E27F93B161CA113FDDB1FE2D83D /* u8.h */, + 9CD74735540355253E1F4AD6C8AD0B01 /* u8.h */, + A6B5ACA48653BB8F76CA1B3C7BDFAA96 /* utils.c */, + 3BAE1C5F82F1AA44AB4AE0EC51823653 /* utils.h */, + 82A2437B6C6C3672ABE44F418374365B /* verify.c */, + 8BA98C5324ABAD49AD501CEDDE791E1F /* version.c */, + 643A9A72CDF2C67559B27519176483F3 /* version.h */, + 4219D79C94082861C963AF0229F08E92 /* x25519_ref10.c */, + D176FC18B34D481AB25938E55CD4418B /* x25519_ref10.h */, + 1785EDC41C5CAE35AB9DCB8FC9501E1B /* xor_afternm_aes128ctr.c */, + 2D65DF0E6D440D8FED5251A7485638AE /* Support Files */, + ); + name = libsodium; + path = libsodium; + sourceTree = ""; + }; + DD709C0260752B5D662986BFA8C64D81 /* Support Files */ = { + isa = PBXGroup; + children = ( + E19AA6B463732AC1CD725BB1BACE53E2 /* Info.plist */, + C5A7898D8B9EDE11BC9884DB5894E9BF /* secp256k1_ios.modulemap */, + E7E9A9AB76A9522BE280E7227D5D7258 /* secp256k1_ios.xcconfig */, + 7800523276CC5E8FD108C4330701B0E8 /* secp256k1_ios-dummy.m */, + 3E6E89FA191A9D41E9B1CDB2AA1DA233 /* secp256k1_ios-prefix.pch */, + 54207FC409F4E18EF6FDDE2391BAE918 /* secp256k1_ios-umbrella.h */, + ); + name = "Support Files"; + path = "../Target Support Files/secp256k1_ios"; + sourceTree = ""; + }; + DE64ECF58E3F57CF7C98931572D14FAC /* Support Files */ = { + isa = PBXGroup; + children = ( + ADE049DE218DC98824BB35884F61D5CB /* AwaitKit.modulemap */, + A69603D04DC111DFD17C4DB0BBD25A49 /* AwaitKit.xcconfig */, + D63E32BE11A632E454EC0531A03A0CDD /* AwaitKit-dummy.m */, + 64D78390E8F801C0E70643C5DC1EB0B3 /* AwaitKit-prefix.pch */, + C576B68F42B74E95ED91DB4F4D4D3E8C /* AwaitKit-umbrella.h */, + ED9E2120E47F514B3E0D0A6E20BC2901 /* Info.plist */, + ); + name = "Support Files"; + path = "../Target Support Files/AwaitKit"; + sourceTree = ""; + }; + E352299C8367EDC372304D2C2DB3A904 /* Support Files */ = { + isa = PBXGroup; + children = ( + C6E3A74831778B694DC3C431DF37798E /* Info.plist */, + 16F1BF2554611816F0AF380AB1B026DC /* Sodium.modulemap */, + 2FD4BFACEBDEC5879203A1BD406F21FB /* Sodium.xcconfig */, + 82C4FBE06899BC1853500C9B2DB30656 /* Sodium-dummy.m */, + C531BE1198FAD3752DB90C4716820CA8 /* Sodium-prefix.pch */, + 391A32CDCFAD5235B11A17C50107FA99 /* Sodium-umbrella.h */, + ); + name = "Support Files"; + path = "../Target Support Files/Sodium"; + sourceTree = ""; + }; + E3B80E40506EEE987A535AB7BF4DB5F1 /* Alamofire */ = { + isa = PBXGroup; + children = ( + 8CCE7DDD2EA49AC4866EDB03E4C7EAC1 /* Alamofire+Promise.swift */, + ); + name = Alamofire; + sourceTree = ""; + }; + ECECBFC879DEAA111ADADDE5DB7C7F56 /* Foundation */ = { + isa = PBXGroup; + children = ( + F880B9DB12A0C175AC38E0C7DAB329DE /* afterlife.swift */, + 754CA0FF649AA40DCE19AD810BA021E2 /* NSNotificationCenter+AnyPromise.h */, + F6182AB470715D0DC65595CAEBA0A087 /* NSNotificationCenter+AnyPromise.m */, + A248A3E7C6F766F1E38153BAE14F5F75 /* NSNotificationCenter+Promise.swift */, + 6C20D099B353A1338109F5A02B916D4E /* NSObject+Promise.swift */, + 9A47965CD90F98C1F73A3EBC0E3729D1 /* NSTask+AnyPromise.h */, + F975D20521AAFBFC41C6CD288AEE7570 /* NSTask+AnyPromise.m */, + 91F63BEDD052DF3819CDC6AE56DE7BE9 /* NSURLSession+AnyPromise.h */, + 1D65C9572967F1861AF4B9803BB16386 /* NSURLSession+AnyPromise.m */, + 7A2928D5D2EDB93525D5CFBB8CDF92F9 /* NSURLSession+Promise.swift */, + 6E73A7514C4BCAE2D2B885AED23D5FC8 /* PMKFoundation.h */, + 97512CDF813ACB43088555F5E9D997E6 /* Process+Promise.swift */, + 4F97D749C6DE723166FB1C1B1CED8252 /* URLDataPromise.swift */, + ); + name = Foundation; + sourceTree = ""; + }; + F8025394A1F5064B2AAF2665A824B445 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 99C29731A5B4DD94AB53AFF57D3B2DEE /* libsodium-ios.a */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 3423B094C012FD5DC904536D8F77E7D2 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 7069495412710E5B345B7AB715051788 /* AnyPromise.h in Headers */, + 125E16E032D9EB73B86DE9EE85E7C283 /* CALayer+AnyPromise.h in Headers */, + 4AFE85213948DEAD418E98CFAA4A7918 /* fwd.h in Headers */, + 806F3FF1CA7CDA44033A7C4AFD61CDD5 /* NSNotificationCenter+AnyPromise.h in Headers */, + C1957D576C616C1F957EF9FD37ADBB3A /* NSTask+AnyPromise.h in Headers */, + E1B09057AE126ACF74BF63C6900073D3 /* NSURLSession+AnyPromise.h in Headers */, + 9737F1D46729D515F3F2CC3C56D103F1 /* PMKFoundation.h in Headers */, + DEFFFFB119948B6B135DB49AAAA7BA0D /* PMKQuartzCore.h in Headers */, + 6648F912E87AB39E31FA1D7F8076D715 /* PMKUIKit.h in Headers */, + 8BCA4EADD349B6A9B858EAC855F1D8FC /* PromiseKit-umbrella.h in Headers */, + 50E744F5BCD127D15C0DEE4DF318707C /* PromiseKit.h in Headers */, + A2997A2828E1093719E9DE73D5264E62 /* UIView+AnyPromise.h in Headers */, + 59B4C5FF164144E005EAE0E547F6EACD /* UIViewController+AnyPromise.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; }; 3D444249185E020FC46439F04ACBDF67 /* Headers */ = { isa = PBXHeadersBuildPhase; @@ -2291,6 +2420,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 66D3AD9FB09A05CB6BD96FCE9C792E64 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 76F67E7C32F11204EECEAD2E8CC5A8B7 /* Pods-web3Swift-Demo-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 881F103F8A292149449CC92789D586B5 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -2434,56 +2571,181 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - A2175ACC06FADB47BC44652C3E0B227B /* Headers */ = { + B4002B6E97835FDCCAA5963EFE09A3E0 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - BFD7C97E44DB84A86786453EE7C868DE /* Pods-web3Swift-Demo-umbrella.h in Headers */, + 1B9EDEDC964E6B08F78920B4F4B9DB84 /* Alamofire-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - B4002B6E97835FDCCAA5963EFE09A3E0 /* Headers */ = { + EA3A097CEA44C1C85D66BF3CFF558352 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 1B9EDEDC964E6B08F78920B4F4B9DB84 /* Alamofire-umbrella.h in Headers */, + AE16D0489632A45E92025A3FEDDF8532 /* basic-config.h in Headers */, + 90EFE9AD1DAFDD44A61BB0F8E87961AC /* ecdsa.h in Headers */, + 71287BA66E8A90A0EEB6DEC166869470 /* ecdsa_impl.h in Headers */, + 82B1D81D8230B9EE36B5D23AC4B269F0 /* eckey.h in Headers */, + 72210BC26F9DB0DC6B780F3771A784BD /* eckey_impl.h in Headers */, + 0E11C14847BB2B889EFF991E7416B51B /* ecmult.h in Headers */, + 012DDFA95318C4FCAD1DCA3DAA1E24BF /* ecmult_const.h in Headers */, + 0749E590EADD797569435BC82AF11E85 /* ecmult_const_impl.h in Headers */, + 73A700F94DA8BA903E604CB2EF97AC76 /* ecmult_gen.h in Headers */, + 3EAE849E4B06B04D889E1139831F4E08 /* ecmult_gen_impl.h in Headers */, + 05A24A6FEA8337F285D66E1421DBC88C /* ecmult_impl.h in Headers */, + 8CFE971EB08EC1BB1F9CC77B34891324 /* field.h in Headers */, + 43F75E11104D9694F9B38DE4507693CE /* field_10x26.h in Headers */, + 57EC84D5433EAD90B294DB8A150029EF /* field_10x26_impl.h in Headers */, + 1525FFDEA43B705E29333EC0469DD57F /* field_5x52.h in Headers */, + B9840EFC6A1805383D9605946ACE680C /* field_5x52_asm_impl.h in Headers */, + F3B1D6346B2A868282F697C6B05E2CE0 /* field_5x52_impl.h in Headers */, + 20A83FB46A142FC9EB9D0DD802642735 /* field_5x52_int128_impl.h in Headers */, + 827C01EAAD5FEDFF78928C084B233F09 /* field_impl.h in Headers */, + 427172CE079A56C1D120F62050C5110D /* group.h in Headers */, + C78DE6385A192695DD54E33811E27887 /* group_impl.h in Headers */, + 981FF892480EF506BE85DA4028B461C6 /* hash.h in Headers */, + 69E4CB0D417E58396E5811D6635731ED /* hash_impl.h in Headers */, + 7650AD6EFFEDD1EDF10C583B5E9229F3 /* lax_der_parsing.h in Headers */, + 9E0BCA4FBD9F598203C6A86A5E1F1823 /* lax_der_privatekey_parsing.h in Headers */, + A19A6E7DF8816871B88C096D95F7ECC3 /* libsecp256k1-config.h in Headers */, + 1249BB62F728D86D3D317B159B2FCE17 /* main_impl.h in Headers */, + E7EB5B1FAABE95FDCFAD6D56EF80973B /* main_impl.h in Headers */, + DD61FA59756ECAFAD6D9AB43EC9D0664 /* num.h in Headers */, + 7252E9C97CDF6F58FE8329576E83AE82 /* num_gmp.h in Headers */, + 4D28FA14A9DA193C126DEA63C7D25A2E /* num_gmp_impl.h in Headers */, + 351B10EBDF18411F92B659FF06D5B246 /* num_impl.h in Headers */, + 8A7F6F65A76766994B9538E3F657C2D5 /* scalar.h in Headers */, + B8FC11B39F62D0CC45882EF39E90BA1C /* scalar_4x64.h in Headers */, + 8AAF3AEA75A3A0847FF03CC9D035F5F2 /* scalar_4x64_impl.h in Headers */, + 49A8AA447258284FB62AA0316F3452DE /* scalar_8x32.h in Headers */, + BC025A99617216CA5B84FB36199BA9F1 /* scalar_8x32_impl.h in Headers */, + 4742D839D1AEF69E442618C56453AF01 /* scalar_impl.h in Headers */, + CC97710E5B149EF565E55225FC606E5B /* scalar_low.h in Headers */, + 357EB8B1BB5D85FAD59682CF5109F9CE /* scalar_low_impl.h in Headers */, + 2838405845DCBBC3003306B282D05000 /* secp256k1.h in Headers */, + 7AF500BD94164BE878BBD2A1BFE71458 /* secp256k1_ecdh.h in Headers */, + 59C3E4D65F0311F632F53C9EECE36D88 /* secp256k1_ios-umbrella.h in Headers */, + 3A4123BFDE61B390A32BA653862F2CB2 /* secp256k1_ios.h in Headers */, + 7F2CD4A72BCD6E2A8EF805C6E9F438D8 /* secp256k1_recovery.h in Headers */, + CBAE6549610601F455E3BBEC7A8F6597 /* util.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - EDD7BEF529D06E30CC147C59A03466E0 /* Headers */ = { + F538D760395BB1C32E764BAE3C6EF6B8 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - A16942A44341133C6435E18DFE9CCE68 /* Pods-web3swiftTests-umbrella.h in Headers */, + 19EA5697FC7235880778983748423872 /* Pods-web3swift-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F5DA5C21B61E06785A7B3E4F26B1021C /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + E7B07C6CE372BEA83EE9DC114A0C63E3 /* Pods-web3swiftTests-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F61D1C0F32AB25217CB531BE12267FB5 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 4B46FDE20B971BEEE894378C79D772B5 /* core.h in Headers */, + CF9B7138C4BF9F358E8305EC4EAB00DE /* crypto_aead_aes256gcm.h in Headers */, + 39208519CE8FFD849408C08D057871F4 /* crypto_aead_chacha20poly1305.h in Headers */, + 0AB8ACB20DB740B9EB096E9C67865963 /* crypto_aead_xchacha20poly1305.h in Headers */, + 8C8886585CB8B0AD6BD44EA47E4AD69F /* crypto_auth.h in Headers */, + 203B6892E2160863372E1552AE624C66 /* crypto_auth_hmacsha256.h in Headers */, + 441C2F54E694AAF685BE9E4F20D30A25 /* crypto_auth_hmacsha512.h in Headers */, + 824C9A19868068BB8EE23D74E54D8C01 /* crypto_auth_hmacsha512256.h in Headers */, + 2477742F207C9784B02262F14C087C57 /* crypto_box.h in Headers */, + 8DA045F045CA6393CB472B6768B943FA /* crypto_box_curve25519xchacha20poly1305.h in Headers */, + A7EA4962B1CDBDCE647959FDCCF7F3C6 /* crypto_box_curve25519xsalsa20poly1305.h in Headers */, + 8B657ED4ECD7A6FCCC121FBB90C50F19 /* crypto_core_curve25519.h in Headers */, + 477F86693D3A7B956AF52920DFD6FCCB /* crypto_core_ed25519.h in Headers */, + 7D9BDB36273663F80C1E4EAA0C23589F /* crypto_core_hchacha20.h in Headers */, + 657F19B9D83A8063420F04B2819114BB /* crypto_core_hsalsa20.h in Headers */, + CC895F82FC07172510BDB57B15D081A3 /* crypto_core_salsa20.h in Headers */, + 74AEA52CEE56BDFE2562A8D66920A1C5 /* crypto_core_salsa2012.h in Headers */, + C9DC90F52734BA241083B066E4CF3E03 /* crypto_core_salsa208.h in Headers */, + F55399BFB4D3BBC2591180469235650A /* crypto_generichash.h in Headers */, + C17EA4B89C7EA2FCD51D76B4D5163E03 /* crypto_generichash_blake2b.h in Headers */, + 7286EEF54E133BA86984C7914A7D580F /* crypto_hash.h in Headers */, + 5AFEC2A9C4E29C3ABAF2B32687D83D93 /* crypto_hash_sha256.h in Headers */, + 30E951F5A4CBA3273E9D6E5D0D1617E2 /* crypto_hash_sha512.h in Headers */, + 7F7C15CE96CAA841BEDC484E32120186 /* crypto_kdf.h in Headers */, + D5A1FFBFA4ED14819B8C7CEEEF7F13FB /* crypto_kdf_blake2b.h in Headers */, + E3BE421D37B1DB754FC2623792E0D08F /* crypto_kx.h in Headers */, + 5201918F6EFC183C88CAE2B46B53BF14 /* crypto_onetimeauth.h in Headers */, + C0F555FDAB6F40AAC38BCE92CD809427 /* crypto_onetimeauth_poly1305.h in Headers */, + 5ED81583FF317D7FA6DDD37032CF14E2 /* crypto_pwhash.h in Headers */, + 5213914009CC711308E39EE13041DBA4 /* crypto_pwhash_argon2i.h in Headers */, + 0A973822FB822707E356D5D3D153B16C /* crypto_pwhash_argon2id.h in Headers */, + CF0C2224CC4BBD76E6A163176B37D53E /* crypto_pwhash_scryptsalsa208sha256.h in Headers */, + B81BCE84D5DA6C53F950F0351D134EFF /* crypto_scalarmult.h in Headers */, + 850CD6BCDD1111B85A5D007F16F7D9D4 /* crypto_scalarmult_curve25519.h in Headers */, + DE095407A8232D8166E243CBD3C2F250 /* crypto_scalarmult_ed25519.h in Headers */, + E6047C2035D2326DC51E9A18C5C5D3A2 /* crypto_secretbox.h in Headers */, + 1367FBD6D5822DE229FF9B087C3FCC3D /* crypto_secretbox_xchacha20poly1305.h in Headers */, + DDB07E222D91A953EEACE2B056694868 /* crypto_secretbox_xsalsa20poly1305.h in Headers */, + 9FDB04E59BEBF35FB1414D673F13F7EE /* crypto_secretstream_xchacha20poly1305.h in Headers */, + DD87F09679F04A842A863958C5D75259 /* crypto_shorthash.h in Headers */, + 33BF9F1DE05037736D39FED12D4D2FDB /* crypto_shorthash_siphash24.h in Headers */, + 25963E3748861982148896098F8FAB3E /* crypto_sign.h in Headers */, + A9F8FCB21C1C27EB1ADDFB69655CA98E /* crypto_sign_ed25519.h in Headers */, + 23E508BFEBB81D74E7D26E4CD08B81CD /* crypto_sign_edwards25519sha512batch.h in Headers */, + C732CCCFDC7FDEB32991510EF15B00A7 /* crypto_stream.h in Headers */, + 0E3F650A24B8775FEB581E0A3180C356 /* crypto_stream_chacha20.h in Headers */, + 5E3E862329706E8FAC7E820C5CB36FD9 /* crypto_stream_salsa20.h in Headers */, + E492962E1C0AE7EF321D9C14CBB8A43F /* crypto_stream_salsa2012.h in Headers */, + 2D86160D7E2E6E2BC28774EF3AC178B4 /* crypto_stream_salsa208.h in Headers */, + FC291FD8A423751548CD65550044B89C /* crypto_stream_xchacha20.h in Headers */, + 8F243AA056414CEED2BFE8EF097416BD /* crypto_stream_xsalsa20.h in Headers */, + BF6694B17D800ED5BAC9E04EB586926C /* crypto_verify_16.h in Headers */, + 7E444EDB6E1F8AC5EF0898EF19668188 /* crypto_verify_32.h in Headers */, + 9EE1BF5919992DD9CCCAC23CB6EC4186 /* crypto_verify_64.h in Headers */, + A4051BEE6C9FC58C75C22829CF0E46D1 /* export.h in Headers */, + 26B69655F4A2A56393D206A2FA429E80 /* randombytes.h in Headers */, + 9F169F17E50DE2434EB47ADB673A74F8 /* randombytes_salsa20_random.h in Headers */, + 8B8054346F3BD548AF1DC36B371E09BF /* randombytes_sysrandom.h in Headers */, + 69EF5DADFAAC67975C6F8AFFB9CB5443 /* runtime.h in Headers */, + CC2FBE4477657C3BC6CAD1FC82814B3B /* Sodium-umbrella.h in Headers */, + E05065ADC862E25A1D1F8ACEB968B1BA /* Sodium.h in Headers */, + BF760C3561AAA4F8565C39172985D3CB /* sodium_lib.h in Headers */, + D6E33018283330C6D070BE785332125A /* utils.h in Headers */, + E575110C11689875327101A1D245FB65 /* version.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 0727F8D0A747F6011410EB0F9A27F439 /* Pods-web3swift */ = { + 0A99F4EDCDE99B986554FC1C6E336F13 /* Pods-web3swift */ = { isa = PBXNativeTarget; - buildConfigurationList = 98862251A72ADB32F4F67AA32CB12BE2 /* Build configuration list for PBXNativeTarget "Pods-web3swift" */; + buildConfigurationList = 3B197A34733E75D69AAF2ABED9B0D600 /* Build configuration list for PBXNativeTarget "Pods-web3swift" */; buildPhases = ( - 572641906BB2351CCD4818FE258D0C4C /* Sources */, - CB552344BBFB8C4E662FEB5A0E907588 /* Frameworks */, - 229746748F5CA693862A568C7AA959F6 /* Headers */, + 35EA7311A8DC3B28FF625F704F175FD4 /* Sources */, + 6FE1074B39C2574EE08A57913F45977A /* Frameworks */, + F538D760395BB1C32E764BAE3C6EF6B8 /* Headers */, ); buildRules = ( ); dependencies = ( - 06CA8C579D243FDBC177D59002DFC2E2 /* PBXTargetDependency */, - 35A0974F3D007C02DDB98516D8C52DAA /* PBXTargetDependency */, - 25C3F642B93F61A0C4F27DB93587F6F9 /* PBXTargetDependency */, - 4A2F343798600422779CC871F1C08C0F /* PBXTargetDependency */, - CD99DD03C466F1B7CDE365893E4C8815 /* PBXTargetDependency */, - 12B206F0A754A8D28D93E5008D104D34 /* PBXTargetDependency */, - 29B9F1E2831D6F61DA80012C062C4C04 /* PBXTargetDependency */, - EC5E4F3EDB6910A09AF4147D09601363 /* PBXTargetDependency */, + 86003F8B3351E94AFCC865DE23D9128B /* PBXTargetDependency */, + CDBAC65F654ED4CBA1C3EAB6A694B170 /* PBXTargetDependency */, + 1F1D2AEF787489623A1379C450B96C15 /* PBXTargetDependency */, + 94194BFFFFE6AF853CF054CD52ED13E4 /* PBXTargetDependency */, + 358475582D6D9DEC9D4A8F3D5E2C1F26 /* PBXTargetDependency */, + 7827430F39A85240F1586438D9E01BA5 /* PBXTargetDependency */, + 901445079868EB0F0C3D74A70129E55E /* PBXTargetDependency */, + 26FE15BBB99CB9EF215BEFFA9D1B2F1D /* PBXTargetDependency */, + 663836C3BD6A092C64F22DA7012D0934 /* PBXTargetDependency */, ); name = "Pods-web3swift"; productName = "Pods-web3swift"; - productReference = AB51CC9B0693F64119B762C37136AE87 /* Pods_web3swift.framework */; + productReference = AB334AE0476FB66AC66311E6D354CAA4 /* Pods_web3swift.framework */; productType = "com.apple.product-type.framework"; }; 106365ABEDFCAAB56965C5A18E920173 /* PromiseKit */ = { @@ -2501,7 +2763,7 @@ ); name = PromiseKit; productName = PromiseKit; - productReference = FBEAA135553BC406F908BAD21B726743 /* PromiseKit.framework */; + productReference = E994C064DB3F93EC87170C0196358C21 /* PromiseKit.framework */; productType = "com.apple.product-type.framework"; }; 1DEA114408EC5E8EAF98CD02AD1725EE /* SipHash */ = { @@ -2518,24 +2780,50 @@ ); name = SipHash; productName = SipHash; - productReference = 44F2EC70FBDF67CBBF2014FDC1C0A015 /* SipHash.framework */; + productReference = 4AFAAF8AE3A927D901DAD3CAED357790 /* SipHash.framework */; productType = "com.apple.product-type.framework"; }; - 474BFCF440979B597D79E59223200305 /* Sodium */ = { + 2A952D0DF7F884828F0999B3CB12743F /* secp256k1_ios */ = { isa = PBXNativeTarget; - buildConfigurationList = 768F0B5C0E9B34A94AF6AB5301FE0850 /* Build configuration list for PBXNativeTarget "Sodium" */; + buildConfigurationList = 55F12B65D8D9EF6D4CC4571294B8EB73 /* Build configuration list for PBXNativeTarget "secp256k1_ios" */; buildPhases = ( - 5FDFA63EF1AB0E94A83332844BF41E71 /* Sources */, - AF12C11EE7A362FC27BB72391A38A251 /* Frameworks */, - 062237D68CB450BA8B27349A031112DD /* Headers */, + 20028AEFFD7052A5D40416FB3428A786 /* Sources */, + 46D3D7890C10FDEDB37C94E1A2CADC8E /* Frameworks */, + EA3A097CEA44C1C85D66BF3CFF558352 /* Headers */, ); buildRules = ( ); dependencies = ( ); - name = Sodium; - productName = Sodium; - productReference = 7F1CE0B44B9A687132B526D2A5DCAF2D /* Sodium.framework */; + name = secp256k1_ios; + productName = secp256k1_ios; + productReference = 3410D4C76AA77E811FADAE9655D072D5 /* secp256k1_ios.framework */; + productType = "com.apple.product-type.framework"; + }; + 7B828873B0A9F13F450D0B7C80A89E69 /* Pods-web3swiftTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = D162BCFD8DC722E08EBF9E023FE222EF /* Build configuration list for PBXNativeTarget "Pods-web3swiftTests" */; + buildPhases = ( + DD4B0A149DEDFA4C22574260A232725D /* Sources */, + 7CFDAE3A1E4BBFC7B9D942F7AEFE8F7C /* Frameworks */, + F5DA5C21B61E06785A7B3E4F26B1021C /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + A661DABC64777160D5A2B4058FA43D82 /* PBXTargetDependency */, + 5D2CB6CC545A42AB319552E72E3F257E /* PBXTargetDependency */, + 03931ACB9BD3BC1D83C5E384EF21BC50 /* PBXTargetDependency */, + 74C97ED9BE862B2E642C220B1E469A08 /* PBXTargetDependency */, + 0679AE26C8B099ADAA9E51F5FA9FEF7D /* PBXTargetDependency */, + 4CF2809A8120C6478F039CA2127C4235 /* PBXTargetDependency */, + 0015358D209CE9B49A1922F77D49EE87 /* PBXTargetDependency */, + EEB87D3536134A40F4A1A24D77EADA26 /* PBXTargetDependency */, + D3B9538579C0C7CD07E3C42DDBCB273D /* PBXTargetDependency */, + ); + name = "Pods-web3swiftTests"; + productName = "Pods-web3swiftTests"; + productReference = 7BC2C7859F38D7C0817524F193AA9D26 /* Pods_web3swiftTests.framework */; productType = "com.apple.product-type.framework"; }; 88E9EC28B8B46C3631E6B242B50F4442 /* Alamofire */ = { @@ -2552,7 +2840,7 @@ ); name = Alamofire; productName = Alamofire; - productReference = 8984D061545623095E5F32FFEA8F1CA6 /* Alamofire.framework */; + productReference = 504FCEBD6653EEDDE9D78256E1E075E4 /* Alamofire.framework */; productType = "com.apple.product-type.framework"; }; 98535812159A2B4B5E7861031188EDFB /* CryptoSwift */ = { @@ -2569,7 +2857,7 @@ ); name = CryptoSwift; productName = CryptoSwift; - productReference = F3B834FEECF91EB4ED2EB9B56D4A2D77 /* CryptoSwift.framework */; + productReference = BACE51C2884801FFC9CC5BF92AC49895 /* CryptoSwift.framework */; productType = "com.apple.product-type.framework"; }; AD40A3E7DB7C86DB949C3E0EFA9A98CA /* libsodium */ = { @@ -2586,75 +2874,68 @@ ); name = libsodium; productName = libsodium; - productReference = A23C2EC8CC0F010A06926A9F086F7066 /* libsodium.framework */; + productReference = FD5786515E1BBCED149C8144626D3C47 /* libsodium.framework */; productType = "com.apple.product-type.framework"; }; - BC5E35B9A96863A79A992F3B68EBDCD9 /* Pods-web3swiftTests */ = { + B4AF8C2FCBCFAF818497CC9A49AB4C2C /* Pods-web3Swift-Demo */ = { isa = PBXNativeTarget; - buildConfigurationList = C09ECAE12EBF2BC3EF97DF747CE2AE4D /* Build configuration list for PBXNativeTarget "Pods-web3swiftTests" */; + buildConfigurationList = 4AE78E5054152F13C5DE0316A96689C0 /* Build configuration list for PBXNativeTarget "Pods-web3Swift-Demo" */; buildPhases = ( - 04672686090D1E091EA59FF168AB5AE5 /* Sources */, - ED2D694E86E4C12664D4B2BE794E0B6D /* Frameworks */, - EDD7BEF529D06E30CC147C59A03466E0 /* Headers */, + 6CF99141FD14628C6D45697BC427327E /* Sources */, + 02C9284B267BF0DA21595395BE986313 /* Frameworks */, + 66D3AD9FB09A05CB6BD96FCE9C792E64 /* Headers */, ); buildRules = ( ); dependencies = ( - B0D4534772470F5C2E267E6A247CFE55 /* PBXTargetDependency */, - 7C9CC6DA754CA4DB4A1D43FDDE5B9EFF /* PBXTargetDependency */, - 7FE5F9D3949CB276AED1941DB49CBABF /* PBXTargetDependency */, - E7A4AFCB2E7DBCD7906D58F5E64F1F7A /* PBXTargetDependency */, - 958F98675566C6D4DB61FC4F81D3866A /* PBXTargetDependency */, - F653061833ABA47441C86D21CE818661 /* PBXTargetDependency */, - 9D9921D0E6E2F98E5DB886E9FC0CDE12 /* PBXTargetDependency */, - 754F76C3CBC5EE21A64ED5408E725295 /* PBXTargetDependency */, + EC81A8D29795E54B900654395B4CBA22 /* PBXTargetDependency */, + 8572BD59C8A4F3D4F12EC12B9592E747 /* PBXTargetDependency */, + 0599503600B44A2ADF40AA07984CADB8 /* PBXTargetDependency */, + 2E99D73FE831F8C898D57AAF193EF5FC /* PBXTargetDependency */, + 02E1FF61F393B202E4A0D0999AD64DB4 /* PBXTargetDependency */, + C4D891EA06065D48CCF2C30708E04B74 /* PBXTargetDependency */, + 1AF4CF9028E768C124CF6ACCCCB80C15 /* PBXTargetDependency */, + A33001D9DD8C9149B5ED3D4191ABCE8C /* PBXTargetDependency */, + 01E60948F92022A88469712C4497D525 /* PBXTargetDependency */, ); - name = "Pods-web3swiftTests"; - productName = "Pods-web3swiftTests"; - productReference = BCAD54B337692D7BE38D588249483AB9 /* Pods_web3swiftTests.framework */; + name = "Pods-web3Swift-Demo"; + productName = "Pods-web3Swift-Demo"; + productReference = E5CAB017EB0CC4F0D6C21C341953A4FF /* Pods_web3Swift_Demo.framework */; productType = "com.apple.product-type.framework"; }; - C484F69E381AF09AA35C51C1E3A23DF2 /* BigInt */ = { + C252E54E4691304A8FD2DCAF9098A033 /* Sodium */ = { isa = PBXNativeTarget; - buildConfigurationList = 807E9584CBDCD2E1F4605B22E043D445 /* Build configuration list for PBXNativeTarget "BigInt" */; + buildConfigurationList = F26A5ACBC7820173E978E2C7A9A014CF /* Build configuration list for PBXNativeTarget "Sodium" */; buildPhases = ( - 2315C61FC7596A2E6552E704F9D649FA /* Sources */, - 752B4ED0415C87837D344CBC97CC0B3B /* Frameworks */, - 4B6DDD0A2774AD5B4BDF8C4E9FD25CC5 /* Headers */, + 411C8260CE3CACA646886408485EF90F /* Sources */, + 12288D53BD3458F666B6D92D3CB9A6BC /* Frameworks */, + F61D1C0F32AB25217CB531BE12267FB5 /* Headers */, ); buildRules = ( ); dependencies = ( - 46094E3A23379D00F07D19C84E234E1C /* PBXTargetDependency */, ); - name = BigInt; - productName = BigInt; - productReference = 5AB8DC76F32E4364588368BA5ADCBF61 /* BigInt.framework */; + name = Sodium; + productName = Sodium; + productReference = 56C9D15997923C0E855B94F27980598B /* Sodium.framework */; productType = "com.apple.product-type.framework"; }; - D687697190F2B93310237218FE449EAC /* Pods-web3Swift-Demo */ = { + C484F69E381AF09AA35C51C1E3A23DF2 /* BigInt */ = { isa = PBXNativeTarget; - buildConfigurationList = 76E9693A59A36E24BD8CA8151C051919 /* Build configuration list for PBXNativeTarget "Pods-web3Swift-Demo" */; + buildConfigurationList = 807E9584CBDCD2E1F4605B22E043D445 /* Build configuration list for PBXNativeTarget "BigInt" */; buildPhases = ( - 687E05AA43F301C4598D140DFBC019D8 /* Sources */, - 18361E7FE71DD6D0CF8D3D6F9B648C24 /* Frameworks */, - A2175ACC06FADB47BC44652C3E0B227B /* Headers */, + 2315C61FC7596A2E6552E704F9D649FA /* Sources */, + 752B4ED0415C87837D344CBC97CC0B3B /* Frameworks */, + 4B6DDD0A2774AD5B4BDF8C4E9FD25CC5 /* Headers */, ); buildRules = ( ); dependencies = ( - D4EB39F89C9C23F8EA13FC7C8FA590C6 /* PBXTargetDependency */, - 1DD010FCC336AE158A419373D66ADE8E /* PBXTargetDependency */, - 55DD003CBEE90ED0D7DD4FB635A036A3 /* PBXTargetDependency */, - 511850831F263A87DB882C39F552BD75 /* PBXTargetDependency */, - 55CAFFB4189E7E88AF7E656533347FD0 /* PBXTargetDependency */, - AD7E5A76F322E8D2955B1C9E40A223AA /* PBXTargetDependency */, - A1789433953783268BBE984C490A2866 /* PBXTargetDependency */, - C771440A2FCBD3422EA6B8F21FD46757 /* PBXTargetDependency */, + 46094E3A23379D00F07D19C84E234E1C /* PBXTargetDependency */, ); - name = "Pods-web3Swift-Demo"; - productName = "Pods-web3Swift-Demo"; - productReference = 8EFE79B682F9C459CEFF68D6B8F8624A /* Pods_web3Swift_Demo.framework */; + name = BigInt; + productName = BigInt; + productReference = 4B0F4AB89F59EC16D1FFED1075233D4B /* BigInt.framework */; productType = "com.apple.product-type.framework"; }; FFFF29F8D7CD8CFA257465F891722C94 /* AwaitKit */ = { @@ -2672,7 +2953,7 @@ ); name = AwaitKit; productName = AwaitKit; - productReference = 6674A86EFFEEC83CC10F2D198A678B05 /* AwaitKit.framework */; + productReference = 690DC0113B257B0C12616123C8C25137 /* AwaitKit.framework */; productType = "com.apple.product-type.framework"; }; /* End PBXNativeTarget section */ @@ -2692,7 +2973,7 @@ en, ); mainGroup = 7DB346D0F39D3F0E887471402A8071AB; - productRefGroup = A633B295DCB5C128B949BC8605C31D81 /* Products */; + productRefGroup = 767E33A3B31A607EEAAADFF40326BA10 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( @@ -2701,25 +2982,18 @@ C484F69E381AF09AA35C51C1E3A23DF2 /* BigInt */, 98535812159A2B4B5E7861031188EDFB /* CryptoSwift */, AD40A3E7DB7C86DB949C3E0EFA9A98CA /* libsodium */, - 0727F8D0A747F6011410EB0F9A27F439 /* Pods-web3swift */, - D687697190F2B93310237218FE449EAC /* Pods-web3Swift-Demo */, - BC5E35B9A96863A79A992F3B68EBDCD9 /* Pods-web3swiftTests */, + 0A99F4EDCDE99B986554FC1C6E336F13 /* Pods-web3swift */, + B4AF8C2FCBCFAF818497CC9A49AB4C2C /* Pods-web3Swift-Demo */, + 7B828873B0A9F13F450D0B7C80A89E69 /* Pods-web3swiftTests */, 106365ABEDFCAAB56965C5A18E920173 /* PromiseKit */, + 2A952D0DF7F884828F0999B3CB12743F /* secp256k1_ios */, 1DEA114408EC5E8EAF98CD02AD1725EE /* SipHash */, - 474BFCF440979B597D79E59223200305 /* Sodium */, + C252E54E4691304A8FD2DCAF9098A033 /* Sodium */, ); }; /* End PBXProject section */ /* Begin PBXSourcesBuildPhase section */ - 04672686090D1E091EA59FF168AB5AE5 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - CD15A0BB990015772E530320E7F3B36A /* Pods-web3swiftTests-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 0ED1DBE00060C70BA8A115B430256A9D /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -2803,6 +3077,17 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 20028AEFFD7052A5D40416FB3428A786 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + A086F34906DB15BFFD8E2362A0AC0A58 /* lax_der_parsing.c in Sources */, + 6BB033B02DFF4EF41EAAD1E25C9168B2 /* lax_der_privatekey_parsing.c in Sources */, + 29C08E6554E7F687FC3A87C769B0388E /* secp256k1.c in Sources */, + D82DB35108CEA115D847FB4EE837F25A /* secp256k1_ios-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 2315C61FC7596A2E6552E704F9D649FA /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -2858,6 +3143,36 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 35EA7311A8DC3B28FF625F704F175FD4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 0305B411A8C748A5B71440A30309AA18 /* Pods-web3swift-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 411C8260CE3CACA646886408485EF90F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 72FE673A8C415E6AA4A8848826A12A27 /* Auth.swift in Sources */, + 633D8CEF12B48BE3B35CD9D347F02811 /* Box.swift in Sources */, + 14F3610176E736D8406BCBDB091A8FD0 /* GenericHash.swift in Sources */, + 992880BB2A32F55024F06C2FBBF41364 /* KeyDerivation.swift in Sources */, + 710B85BA1E673E0EDFE1FB200BC7803F /* KeyExchange.swift in Sources */, + D15A0BFACD8AE44C17632666CDFB01E3 /* PWHash.swift in Sources */, + E00312935D7F414931962E7165B0239F /* RandomBytes.swift in Sources */, + 602281F61213DD4517FE75C0D6FC699B /* SecretBox.swift in Sources */, + 919759B14AC4D20AF99F1589381FCF90 /* SecretStream.swift in Sources */, + 3788C59CF8BF800DC51C0405311DF213 /* ShortHash.swift in Sources */, + 12A0F7C78F14733B25C9F3C61ED1C8D6 /* Sign.swift in Sources */, + B50F9B7BDD7CD760A15FFF419F58EF3F /* Sodium-dummy.m in Sources */, + 05D6BC823A6E5A38215301A817578BD2 /* Sodium.swift in Sources */, + A682F8E3B3A98DB95138B9C6E75020DB /* Stream.swift in Sources */, + F88E6C974DA09808CE6FC1482152B533 /* Utils.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 553D694CDDD3E6BBD2205A1A6A97E180 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -2971,41 +3286,11 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 572641906BB2351CCD4818FE258D0C4C /* Sources */ = { + 6CF99141FD14628C6D45697BC427327E /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 24273FC91B6774D7DEB29D3CF0E8DE81 /* Pods-web3swift-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 5FDFA63EF1AB0E94A83332844BF41E71 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - F9013EF6C296B5F74E1E9D4EB3AB9153 /* Auth.swift in Sources */, - 1713C0B19771CA40FD724D1E8C3EBEF0 /* Box.swift in Sources */, - A3FDBF72C6C2ACF911DE5A194314D412 /* GenericHash.swift in Sources */, - 9538E961F4CC5BA243003517DFF65237 /* KeyDerivation.swift in Sources */, - 4F00C709A5EE934B7CB9AF792679B027 /* KeyExchange.swift in Sources */, - 858E71644687BCD7A76B4D2E05592B17 /* PWHash.swift in Sources */, - 59CB2FF91BBAA4F5E3A8E6D520A789ED /* RandomBytes.swift in Sources */, - 6CDC25B8E6092CEBB6F5F06A74244859 /* SecretBox.swift in Sources */, - BEEFDB77FE1C01FA63CFB67A18E812EE /* SecretStream.swift in Sources */, - 70984CCF4D0C43AB451DF86E0B101A5C /* ShortHash.swift in Sources */, - DF94FB83553772FBE36D5A50058F8416 /* Sign.swift in Sources */, - 3B134360BD98618091867140CF80A3AE /* Sodium-dummy.m in Sources */, - 4A288E55691247566255D243AE5A8095 /* Sodium.swift in Sources */, - 5605760D88BCCDCA8C43BA82E2DE7F3B /* Stream.swift in Sources */, - 1C2D35C43AF4D87AB023E81FC8E7D568 /* Utils.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 687E05AA43F301C4598D140DFBC019D8 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 95427A7DA2AFA6FACA3E85767F3DA1CF /* Pods-web3Swift-Demo-dummy.m in Sources */, + 535D1816DAA59D0FE16A368AB7AC40EB /* Pods-web3Swift-Demo-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3053,6 +3338,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + DD4B0A149DEDFA4C22574260A232725D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 6A7074F9CFE374AA7DC8FED869A7B668 /* Pods-web3swiftTests-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; E040795AACD485A39902B01BAC472321 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -3068,143 +3361,167 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 06CA8C579D243FDBC177D59002DFC2E2 /* PBXTargetDependency */ = { + 0015358D209CE9B49A1922F77D49EE87 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Alamofire; - target = 88E9EC28B8B46C3631E6B242B50F4442 /* Alamofire */; - targetProxy = B214030961A95D320F7106A0A5E42797 /* PBXContainerItemProxy */; + name = Sodium; + target = C252E54E4691304A8FD2DCAF9098A033 /* Sodium */; + targetProxy = D00ED03F0762BFE874C920EC343BAE86 /* PBXContainerItemProxy */; }; - 12B206F0A754A8D28D93E5008D104D34 /* PBXTargetDependency */ = { + 01E60948F92022A88469712C4497D525 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = SipHash; - target = 1DEA114408EC5E8EAF98CD02AD1725EE /* SipHash */; - targetProxy = 7B8466E15F3F8098AEE581C7D4D39B47 /* PBXContainerItemProxy */; + name = secp256k1_ios; + target = 2A952D0DF7F884828F0999B3CB12743F /* secp256k1_ios */; + targetProxy = AB27DDA2F01B787EC0E9464886920663 /* PBXContainerItemProxy */; }; - 1DD010FCC336AE158A419373D66ADE8E /* PBXTargetDependency */ = { + 02E1FF61F393B202E4A0D0999AD64DB4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = AwaitKit; - target = FFFF29F8D7CD8CFA257465F891722C94 /* AwaitKit */; - targetProxy = 59A5645CC2E00E0685AFDEB1C0E79AA0 /* PBXContainerItemProxy */; + name = PromiseKit; + target = 106365ABEDFCAAB56965C5A18E920173 /* PromiseKit */; + targetProxy = A5994B1B385C6A26831B5BF74CCB5477 /* PBXContainerItemProxy */; }; - 25C3F642B93F61A0C4F27DB93587F6F9 /* PBXTargetDependency */ = { + 03931ACB9BD3BC1D83C5E384EF21BC50 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = BigInt; target = C484F69E381AF09AA35C51C1E3A23DF2 /* BigInt */; - targetProxy = AC60F4713933C8E0E4013BBD681D3EC2 /* PBXContainerItemProxy */; + targetProxy = 87FCB1EFA9EFA64F690CBD4492137F3D /* PBXContainerItemProxy */; }; - 29B9F1E2831D6F61DA80012C062C4C04 /* PBXTargetDependency */ = { + 0599503600B44A2ADF40AA07984CADB8 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Sodium; - target = 474BFCF440979B597D79E59223200305 /* Sodium */; - targetProxy = 865D47F16684C5221896911101C160C9 /* PBXContainerItemProxy */; + name = BigInt; + target = C484F69E381AF09AA35C51C1E3A23DF2 /* BigInt */; + targetProxy = E9A632D2A6A92FFA9D831B246F600594 /* PBXContainerItemProxy */; }; - 35A0974F3D007C02DDB98516D8C52DAA /* PBXTargetDependency */ = { + 0679AE26C8B099ADAA9E51F5FA9FEF7D /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = AwaitKit; - target = FFFF29F8D7CD8CFA257465F891722C94 /* AwaitKit */; - targetProxy = 4427499F550005DA23A5081BE0773C64 /* PBXContainerItemProxy */; + name = PromiseKit; + target = 106365ABEDFCAAB56965C5A18E920173 /* PromiseKit */; + targetProxy = 45D0A579623E8B333D7E2A165DB747A6 /* PBXContainerItemProxy */; }; - 46094E3A23379D00F07D19C84E234E1C /* PBXTargetDependency */ = { + 1AF4CF9028E768C124CF6ACCCCB80C15 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = SipHash; - target = 1DEA114408EC5E8EAF98CD02AD1725EE /* SipHash */; - targetProxy = E25FA7B325D509BF75B1A951869CADAC /* PBXContainerItemProxy */; + name = Sodium; + target = C252E54E4691304A8FD2DCAF9098A033 /* Sodium */; + targetProxy = 71FF912E217C64F37A28CDFBD883C510 /* PBXContainerItemProxy */; }; - 4A2F343798600422779CC871F1C08C0F /* PBXTargetDependency */ = { + 1F1D2AEF787489623A1379C450B96C15 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = CryptoSwift; - target = 98535812159A2B4B5E7861031188EDFB /* CryptoSwift */; - targetProxy = 07D0581D0CEFA00ABBC0B5C05E254E75 /* PBXContainerItemProxy */; + name = BigInt; + target = C484F69E381AF09AA35C51C1E3A23DF2 /* BigInt */; + targetProxy = 8C3C7207421755887D40C132E01415F1 /* PBXContainerItemProxy */; + }; + 26FE15BBB99CB9EF215BEFFA9D1B2F1D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = libsodium; + target = AD40A3E7DB7C86DB949C3E0EFA9A98CA /* libsodium */; + targetProxy = C33F7D31376335B3276B01FB57815130 /* PBXContainerItemProxy */; }; - 511850831F263A87DB882C39F552BD75 /* PBXTargetDependency */ = { + 2E99D73FE831F8C898D57AAF193EF5FC /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = CryptoSwift; target = 98535812159A2B4B5E7861031188EDFB /* CryptoSwift */; - targetProxy = 1519BB4FEF629DFBC3EE07BAAEA723CD /* PBXContainerItemProxy */; + targetProxy = C86203A36FCB62E3E24E9848E133CF14 /* PBXContainerItemProxy */; }; - 55CAFFB4189E7E88AF7E656533347FD0 /* PBXTargetDependency */ = { + 358475582D6D9DEC9D4A8F3D5E2C1F26 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = PromiseKit; target = 106365ABEDFCAAB56965C5A18E920173 /* PromiseKit */; - targetProxy = 3CE0A4641223FF88DED230D002A4492F /* PBXContainerItemProxy */; + targetProxy = 5648AB918B928B07B8E0A250F619ADA6 /* PBXContainerItemProxy */; }; - 55DD003CBEE90ED0D7DD4FB635A036A3 /* PBXTargetDependency */ = { + 46094E3A23379D00F07D19C84E234E1C /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = BigInt; - target = C484F69E381AF09AA35C51C1E3A23DF2 /* BigInt */; - targetProxy = A984E4FB62A6AA8B3AF43B763814B7A5 /* PBXContainerItemProxy */; + name = SipHash; + target = 1DEA114408EC5E8EAF98CD02AD1725EE /* SipHash */; + targetProxy = E25FA7B325D509BF75B1A951869CADAC /* PBXContainerItemProxy */; }; - 754F76C3CBC5EE21A64ED5408E725295 /* PBXTargetDependency */ = { + 4CF2809A8120C6478F039CA2127C4235 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = libsodium; - target = AD40A3E7DB7C86DB949C3E0EFA9A98CA /* libsodium */; - targetProxy = 90626D1B0C5555901AE459E59069BC08 /* PBXContainerItemProxy */; + name = SipHash; + target = 1DEA114408EC5E8EAF98CD02AD1725EE /* SipHash */; + targetProxy = 44B2165AF1815541C7DD05A15D940DC3 /* PBXContainerItemProxy */; }; - 7C9CC6DA754CA4DB4A1D43FDDE5B9EFF /* PBXTargetDependency */ = { + 5D2CB6CC545A42AB319552E72E3F257E /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = AwaitKit; target = FFFF29F8D7CD8CFA257465F891722C94 /* AwaitKit */; - targetProxy = CF58737815C76A81E9FA3FA2A0CD1552 /* PBXContainerItemProxy */; + targetProxy = C722C7E7B30E898BB528CBDEBA14B100 /* PBXContainerItemProxy */; }; - 7FE5F9D3949CB276AED1941DB49CBABF /* PBXTargetDependency */ = { + 663836C3BD6A092C64F22DA7012D0934 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = BigInt; - target = C484F69E381AF09AA35C51C1E3A23DF2 /* BigInt */; - targetProxy = 29D57E4B02B660C3B30A631D39B90D12 /* PBXContainerItemProxy */; + name = secp256k1_ios; + target = 2A952D0DF7F884828F0999B3CB12743F /* secp256k1_ios */; + targetProxy = F5DBFFAB9C1A6D9CFBDD1D28CF125C59 /* PBXContainerItemProxy */; }; - 958F98675566C6D4DB61FC4F81D3866A /* PBXTargetDependency */ = { + 74C97ED9BE862B2E642C220B1E469A08 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = PromiseKit; - target = 106365ABEDFCAAB56965C5A18E920173 /* PromiseKit */; - targetProxy = 03188A3E24CF39B600E312C847BA3BC0 /* PBXContainerItemProxy */; - }; - 9D9921D0E6E2F98E5DB886E9FC0CDE12 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Sodium; - target = 474BFCF440979B597D79E59223200305 /* Sodium */; - targetProxy = 2F584C3DCFBDE5707A88B0913B7283E1 /* PBXContainerItemProxy */; - }; - A1789433953783268BBE984C490A2866 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Sodium; - target = 474BFCF440979B597D79E59223200305 /* Sodium */; - targetProxy = 7F8DB09EEB449DE5F26742B0C94C6E98 /* PBXContainerItemProxy */; + name = CryptoSwift; + target = 98535812159A2B4B5E7861031188EDFB /* CryptoSwift */; + targetProxy = D00B3A6400F20A12BA1AA0E7339BE49A /* PBXContainerItemProxy */; }; - AD7E5A76F322E8D2955B1C9E40A223AA /* PBXTargetDependency */ = { + 7827430F39A85240F1586438D9E01BA5 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = SipHash; target = 1DEA114408EC5E8EAF98CD02AD1725EE /* SipHash */; - targetProxy = B32AC2F9875755DAA0D1199FBB547A0C /* PBXContainerItemProxy */; + targetProxy = B0F0E83B6A28B7B801146D008CD954A7 /* PBXContainerItemProxy */; }; - AF184B12CEE186B32A45EE28C4645F3F /* PBXTargetDependency */ = { + 8572BD59C8A4F3D4F12EC12B9592E747 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = PromiseKit; - target = 106365ABEDFCAAB56965C5A18E920173 /* PromiseKit */; - targetProxy = A269FE203FB91DDFAD02709ECA2423CD /* PBXContainerItemProxy */; + name = AwaitKit; + target = FFFF29F8D7CD8CFA257465F891722C94 /* AwaitKit */; + targetProxy = C2379062FBFA04857E23FE66A0721572 /* PBXContainerItemProxy */; }; - B0D4534772470F5C2E267E6A247CFE55 /* PBXTargetDependency */ = { + 86003F8B3351E94AFCC865DE23D9128B /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Alamofire; target = 88E9EC28B8B46C3631E6B242B50F4442 /* Alamofire */; - targetProxy = DCE7289FCC264A27D3C75ED15A7DDB6B /* PBXContainerItemProxy */; + targetProxy = E0AEFB660BDB3B2DFF0583EA67C2208E /* PBXContainerItemProxy */; + }; + 901445079868EB0F0C3D74A70129E55E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Sodium; + target = C252E54E4691304A8FD2DCAF9098A033 /* Sodium */; + targetProxy = CEE2502C63FC3D74EDD0CF0FA460E5C2 /* PBXContainerItemProxy */; }; - C771440A2FCBD3422EA6B8F21FD46757 /* PBXTargetDependency */ = { + 94194BFFFFE6AF853CF054CD52ED13E4 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = CryptoSwift; + target = 98535812159A2B4B5E7861031188EDFB /* CryptoSwift */; + targetProxy = 9BA98AB8119DF7368E9436B57F865B8B /* PBXContainerItemProxy */; + }; + A33001D9DD8C9149B5ED3D4191ABCE8C /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = libsodium; target = AD40A3E7DB7C86DB949C3E0EFA9A98CA /* libsodium */; - targetProxy = 199F60B31E697412E2F4DE6970C2B22D /* PBXContainerItemProxy */; + targetProxy = A29098467114081A93ABFE657AE0310C /* PBXContainerItemProxy */; }; - CD99DD03C466F1B7CDE365893E4C8815 /* PBXTargetDependency */ = { + A661DABC64777160D5A2B4058FA43D82 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Alamofire; + target = 88E9EC28B8B46C3631E6B242B50F4442 /* Alamofire */; + targetProxy = 77C38E8354AD5D929E4B17202E37B12C /* PBXContainerItemProxy */; + }; + AF184B12CEE186B32A45EE28C4645F3F /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = PromiseKit; target = 106365ABEDFCAAB56965C5A18E920173 /* PromiseKit */; - targetProxy = EEA1F42E817A95B87DC08EE5E859D32A /* PBXContainerItemProxy */; + targetProxy = A269FE203FB91DDFAD02709ECA2423CD /* PBXContainerItemProxy */; }; - D4EB39F89C9C23F8EA13FC7C8FA590C6 /* PBXTargetDependency */ = { + C4D891EA06065D48CCF2C30708E04B74 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Alamofire; - target = 88E9EC28B8B46C3631E6B242B50F4442 /* Alamofire */; - targetProxy = 3045B31FF52BAFCE0B017F42739BBA76 /* PBXContainerItemProxy */; + name = SipHash; + target = 1DEA114408EC5E8EAF98CD02AD1725EE /* SipHash */; + targetProxy = 83A308E094C4E7B0662B77A6881AB6F2 /* PBXContainerItemProxy */; + }; + CDBAC65F654ED4CBA1C3EAB6A694B170 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = AwaitKit; + target = FFFF29F8D7CD8CFA257465F891722C94 /* AwaitKit */; + targetProxy = B6FFCA5D33311BB15845048EEE98AC95 /* PBXContainerItemProxy */; + }; + D3B9538579C0C7CD07E3C42DDBCB273D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = secp256k1_ios; + target = 2A952D0DF7F884828F0999B3CB12743F /* secp256k1_ios */; + targetProxy = 4CBBB9100A4FD42B73A82F871BCAF971 /* PBXContainerItemProxy */; }; DC5C9ECD498E036C626F9B67A0ED5A86 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -3212,30 +3529,24 @@ target = 88E9EC28B8B46C3631E6B242B50F4442 /* Alamofire */; targetProxy = E7428D656146EA1A84022711BD48E891 /* PBXContainerItemProxy */; }; - E7A4AFCB2E7DBCD7906D58F5E64F1F7A /* PBXTargetDependency */ = { + EC81A8D29795E54B900654395B4CBA22 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = CryptoSwift; - target = 98535812159A2B4B5E7861031188EDFB /* CryptoSwift */; - targetProxy = ED55767683448418A9BB8CB4D0057844 /* PBXContainerItemProxy */; + name = Alamofire; + target = 88E9EC28B8B46C3631E6B242B50F4442 /* Alamofire */; + targetProxy = BCA719BEAA39C0D20139DA3E5A2FCA29 /* PBXContainerItemProxy */; }; - EC5E4F3EDB6910A09AF4147D09601363 /* PBXTargetDependency */ = { + EEB87D3536134A40F4A1A24D77EADA26 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = libsodium; target = AD40A3E7DB7C86DB949C3E0EFA9A98CA /* libsodium */; - targetProxy = 6955382BECD394CD32C66B2D2804FABD /* PBXContainerItemProxy */; - }; - F653061833ABA47441C86D21CE818661 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SipHash; - target = 1DEA114408EC5E8EAF98CD02AD1725EE /* SipHash */; - targetProxy = 740D79418EC19AA0B2304FC87490EA59 /* PBXContainerItemProxy */; + targetProxy = 5330A7292DE72613E55133FF3A39CACF /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ 0CF2B7829D260D1FCA2C62DC1D4951A2 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8689D0D3F9A4C9E4C75D2B7E322D570A /* CryptoSwift.xcconfig */; + baseConfigurationReference = C6DF673C384AE4AE144AEC27145D9350 /* CryptoSwift.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3267,7 +3578,7 @@ }; 0D32F913CC46F768B1E96CB234B4D6C6 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D04ABFA976029B930018AAE42B9AD820 /* PromiseKit.xcconfig */; + baseConfigurationReference = 56619F425F23D77AF457BE2A793FAEB7 /* PromiseKit.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3297,43 +3608,9 @@ }; name = Release; }; - 0ED9E1162AB067AC423FC6013D310E5C /* Release */ = { + 143AE519A8B630A31DF51E430AFE2DEC /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7F57A9FE1E20F2DEE4AD323622D28AFA /* Pods-web3swift.release.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-web3swift/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.1; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-web3swift/Pods-web3swift.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_web3swift; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 15D7D648E9A800B93E0D059C9D29484E /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = D3D12C3677695C4A0F7632E18BB477CA /* Pods-web3swiftTests.release.xcconfig */; + baseConfigurationReference = 16AA9EBB1FAFF8F1EBFB3242F0EB322E /* Pods-web3Swift-Demo.debug.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3344,26 +3621,26 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-web3swiftTests/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-web3Swift-Demo/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 11.1; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-web3swiftTests/Pods-web3swiftTests.modulemap"; + MODULEMAP_FILE = "Target Support Files/Pods-web3Swift-Demo/Pods-web3Swift-Demo.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_web3swiftTests; + PRODUCT_NAME = Pods_web3Swift_Demo; 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; }; 1D23278938ADF334174C5BF2A4B6B1B8 /* Release */ = { isa = XCBuildConfiguration; @@ -3420,9 +3697,200 @@ }; name = Release; }; - 36439D8C9A3E8F2FC4FB4CFCFBEA6AA6 /* Debug */ = { + 29A55FFF26785025CCDA7E24A12CAAAB /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 2FD4BFACEBDEC5879203A1BD406F21FB /* Sodium.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/Sodium/Sodium-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Sodium/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/Sodium/Sodium.modulemap"; + PRODUCT_NAME = Sodium; + 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; + }; + 34C1541D77174C943AF56D6E00E6D5DF /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = E7E9A9AB76A9522BE280E7227D5D7258 /* secp256k1_ios.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/secp256k1_ios/secp256k1_ios-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/secp256k1_ios/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/secp256k1_ios/secp256k1_ios.modulemap"; + PRODUCT_NAME = secp256k1_ios; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 36439D8C9A3E8F2FC4FB4CFCFBEA6AA6 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = AD0E753FE7441C5B4B5E53E6FD0D8BF9 /* libsodium.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/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/libsodium/libsodium.modulemap"; + PRODUCT_NAME = libsodium; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 3FFD32FA45C67B0E2030D971AC8D1CB6 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 05C53632A2075BA065C99B691F142F56 /* Pods-web3swift.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-web3swift/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 11.1; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-web3swift/Pods-web3swift.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = Pods_web3swift; + 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 = ""; + }; + name = Debug; + }; + 493A06435E80419FCF501C45CB2396CE /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = C6DF673C384AE4AE144AEC27145D9350 /* CryptoSwift.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/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 = "-Onone"; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 4BE606BAF008FA444014AA25FAC69C6C /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7F57A9FE1E20F2DEE4AD323622D28AFA /* Pods-web3swift.release.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-web3swift/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 11.1; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-web3swift/Pods-web3swift.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = Pods_web3swift; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 517E5C6914179B0EF46E6F4EEB475718 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D51B75A5F8BE2CA82C55BB4FF6923B0C /* libsodium.xcconfig */; + baseConfigurationReference = 56619F425F23D77AF457BE2A793FAEB7 /* PromiseKit.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3433,16 +3901,17 @@ 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"; + 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/libsodium/libsodium.modulemap"; - PRODUCT_NAME = libsodium; + MODULEMAP_FILE = "Target Support Files/PromiseKit/PromiseKit.modulemap"; + PRODUCT_NAME = PromiseKit; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; @@ -3450,9 +3919,9 @@ }; name = Debug; }; - 45CF5E6A4C654945759A32FB8322F7AF /* Debug */ = { + 5FA0B06742AE5D58157BE0AB65002C4E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D90E1E26CA8CAE84EB848EDF122F5ACF /* Pods-web3swiftTests.debug.xcconfig */; + baseConfigurationReference = FA6E203FA63E11ED4253C057238FDA83 /* SipHash.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3463,30 +3932,28 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-web3swiftTests/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 = 11.1; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-web3swiftTests/Pods-web3swiftTests.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_web3swiftTests; + MODULEMAP_FILE = "Target Support Files/SipHash/SipHash.modulemap"; + PRODUCT_NAME = SipHash; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + 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 = Debug; + name = Release; }; - 493A06435E80419FCF501C45CB2396CE /* Debug */ = { + 634C62E1FFEF7CD104795AAD5E050A2C /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8689D0D3F9A4C9E4C75D2B7E322D570A /* CryptoSwift.xcconfig */; + baseConfigurationReference = D3D12C3677695C4A0F7632E18BB477CA /* Pods-web3swiftTests.release.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3497,27 +3964,30 @@ 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"; + INFOPLIST_FILE = "Target Support Files/Pods-web3swiftTests/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.1; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/CryptoSwift/CryptoSwift.modulemap"; - PRODUCT_NAME = CryptoSwift; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-web3swiftTests/Pods-web3swiftTests.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = Pods_web3swiftTests; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - 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; }; - 517E5C6914179B0EF46E6F4EEB475718 /* Debug */ = { + 796473C344E59BEA19B25C7E9C1F3379 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D04ABFA976029B930018AAE42B9AD820 /* PromiseKit.xcconfig */; + baseConfigurationReference = 2FD4BFACEBDEC5879203A1BD406F21FB /* Sodium.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3528,13 +3998,13 @@ 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/Sodium/Sodium-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Sodium/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/Sodium/Sodium.modulemap"; + PRODUCT_NAME = Sodium; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; @@ -3546,9 +4016,9 @@ }; name = Debug; }; - 5FA0B06742AE5D58157BE0AB65002C4E /* Release */ = { + 84E81D76273C93E860400110880A52BC /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F5830D3F2F4E1C6C860A029F26F2F132 /* SipHash.xcconfig */; + baseConfigurationReference = AA51C6EDAB8F58FAA02E0DD739398741 /* BigInt.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3559,13 +4029,13 @@ 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/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/SipHash/SipHash.modulemap"; - PRODUCT_NAME = SipHash; + MODULEMAP_FILE = "Target Support Files/BigInt/BigInt.modulemap"; + PRODUCT_NAME = BigInt; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; @@ -3578,9 +4048,9 @@ }; name = Release; }; - 84E81D76273C93E860400110880A52BC /* Release */ = { + 8B0EDB4756996C0BDCB480ACACAE7119 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8A0554D47E6BFADA63ABDCF9468DD263 /* BigInt.xcconfig */; + baseConfigurationReference = E7E9A9AB76A9522BE280E7227D5D7258 /* secp256k1_ios.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3591,17 +4061,16 @@ 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/secp256k1_ios/secp256k1_ios-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/secp256k1_ios/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.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/secp256k1_ios/secp256k1_ios.modulemap"; + PRODUCT_NAME = secp256k1_ios; 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; @@ -3612,7 +4081,7 @@ }; 8C4860370BB0D2E849FB344FBAE2D07A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F5830D3F2F4E1C6C860A029F26F2F132 /* SipHash.xcconfig */; + baseConfigurationReference = FA6E203FA63E11ED4253C057238FDA83 /* SipHash.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3701,9 +4170,9 @@ }; name = Debug; }; - AC054FEE42E5037F64F000D08D8E0044 /* Debug */ = { + 9A6DF7A0301786D0EB3FEF42DB74074E /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8A0554D47E6BFADA63ABDCF9468DD263 /* BigInt.xcconfig */; + baseConfigurationReference = D90E1E26CA8CAE84EB848EDF122F5ACF /* Pods-web3swiftTests.debug.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3714,27 +4183,30 @@ 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"; + INFOPLIST_FILE = "Target Support Files/Pods-web3swiftTests/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.1; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/BigInt/BigInt.modulemap"; - PRODUCT_NAME = BigInt; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-web3swiftTests/Pods-web3swiftTests.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = Pods_web3swiftTests; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - B0F5F1530D3F4E518BE2B1A52F98487A /* Debug */ = { + AC054FEE42E5037F64F000D08D8E0044 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 46048AE549927050092CABF289EA28AC /* Alamofire.xcconfig */; + baseConfigurationReference = AA51C6EDAB8F58FAA02E0DD739398741 /* BigInt.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3745,13 +4217,13 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/Alamofire/Alamofire-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Alamofire/Info.plist"; + 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/Alamofire/Alamofire.modulemap"; - PRODUCT_NAME = Alamofire; + MODULEMAP_FILE = "Target Support Files/BigInt/BigInt.modulemap"; + PRODUCT_NAME = BigInt; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; @@ -3763,9 +4235,9 @@ }; name = Debug; }; - B60B983C3E142AA1179E70330F235E7F /* Release */ = { + B0F5F1530D3F4E518BE2B1A52F98487A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D51B75A5F8BE2CA82C55BB4FF6923B0C /* libsodium.xcconfig */; + baseConfigurationReference = D86710F8FD8B56DF258FDC7BA1B9340F /* Alamofire.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3776,27 +4248,27 @@ 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"; + GCC_PREFIX_HEADER = "Target Support Files/Alamofire/Alamofire-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Alamofire/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/libsodium/libsodium.modulemap"; - PRODUCT_NAME = libsodium; + MODULEMAP_FILE = "Target Support Files/Alamofire/Alamofire.modulemap"; + PRODUCT_NAME = Alamofire; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + 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; }; - B6C0DA4A43BEFAE8629CFF7091BF5A78 /* Release */ = { + B60B983C3E142AA1179E70330F235E7F /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2AD9C5FA27E8ADCD10A4B11BFB9253E6 /* Sodium.xcconfig */; + baseConfigurationReference = AD0E753FE7441C5B4B5E53E6FD0D8BF9 /* libsodium.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3807,17 +4279,16 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/Sodium/Sodium-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Sodium/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/Sodium/Sodium.modulemap"; - PRODUCT_NAME = Sodium; + 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; @@ -3828,7 +4299,7 @@ }; B8CA02655A4B738D82484691EE8CA58F /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 46048AE549927050092CABF289EA28AC /* Alamofire.xcconfig */; + baseConfigurationReference = D86710F8FD8B56DF258FDC7BA1B9340F /* Alamofire.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3858,41 +4329,7 @@ }; name = Release; }; - C35B55512B4F1404F2209CB7F57120CA /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 16AA9EBB1FAFF8F1EBFB3242F0EB322E /* Pods-web3Swift-Demo.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-web3Swift-Demo/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.1; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-web3Swift-Demo/Pods-web3Swift-Demo.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_web3Swift_Demo; - 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 = ""; - }; - name = Debug; - }; - DA6D3B25C959F3714B94A936BE3ADCBE /* Release */ = { + C13FA0500CDC99D4FB1C1E488C869456 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 0C1A5405ADD7931D59901C43C9E0EB2A /* Pods-web3Swift-Demo.release.xcconfig */; buildSettings = { @@ -3926,40 +4363,9 @@ }; name = Release; }; - EE4FBCB698FDC9717E4EEF16FB5BF3A8 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 2AD9C5FA27E8ADCD10A4B11BFB9253E6 /* Sodium.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/Sodium/Sodium-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Sodium/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/Sodium/Sodium.modulemap"; - PRODUCT_NAME = Sodium; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; EF0C450329227DD96326962AA1DB6844 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A086B144D03B81A9078E19DD6A027FBB /* AwaitKit.xcconfig */; + baseConfigurationReference = A69603D04DC111DFD17C4DB0BBD25A49 /* AwaitKit.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3988,43 +4394,9 @@ }; name = Debug; }; - FB48CE0D499482FA5EBC3068530AD58B /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 05C53632A2075BA065C99B691F142F56 /* Pods-web3swift.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-web3swift/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.1; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-web3swift/Pods-web3swift.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_web3swift; - 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 = ""; - }; - name = Debug; - }; FBE0106AE4112ED6993B4EA067F211A0 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A086B144D03B81A9078E19DD6A027FBB /* AwaitKit.xcconfig */; + baseConfigurationReference = A69603D04DC111DFD17C4DB0BBD25A49 /* AwaitKit.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -4093,6 +4465,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 3B197A34733E75D69AAF2ABED9B0D600 /* Build configuration list for PBXNativeTarget "Pods-web3swift" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3FFD32FA45C67B0E2030D971AC8D1CB6 /* Debug */, + 4BE606BAF008FA444014AA25FAC69C6C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 419E5D95491847CD79841B971A8A3277 /* Build configuration list for PBXNativeTarget "Alamofire" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -4102,29 +4483,29 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 5EAE5F9CBC6640CC92E7C3ECB8E5DD42 /* Build configuration list for PBXNativeTarget "AwaitKit" */ = { + 4AE78E5054152F13C5DE0316A96689C0 /* Build configuration list for PBXNativeTarget "Pods-web3Swift-Demo" */ = { isa = XCConfigurationList; buildConfigurations = ( - EF0C450329227DD96326962AA1DB6844 /* Debug */, - FBE0106AE4112ED6993B4EA067F211A0 /* Release */, + 143AE519A8B630A31DF51E430AFE2DEC /* Debug */, + C13FA0500CDC99D4FB1C1E488C869456 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 768F0B5C0E9B34A94AF6AB5301FE0850 /* Build configuration list for PBXNativeTarget "Sodium" */ = { + 55F12B65D8D9EF6D4CC4571294B8EB73 /* Build configuration list for PBXNativeTarget "secp256k1_ios" */ = { isa = XCConfigurationList; buildConfigurations = ( - EE4FBCB698FDC9717E4EEF16FB5BF3A8 /* Debug */, - B6C0DA4A43BEFAE8629CFF7091BF5A78 /* Release */, + 34C1541D77174C943AF56D6E00E6D5DF /* Debug */, + 8B0EDB4756996C0BDCB480ACACAE7119 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 76E9693A59A36E24BD8CA8151C051919 /* Build configuration list for PBXNativeTarget "Pods-web3Swift-Demo" */ = { + 5EAE5F9CBC6640CC92E7C3ECB8E5DD42 /* Build configuration list for PBXNativeTarget "AwaitKit" */ = { isa = XCConfigurationList; buildConfigurations = ( - C35B55512B4F1404F2209CB7F57120CA /* Debug */, - DA6D3B25C959F3714B94A936BE3ADCBE /* Release */, + EF0C450329227DD96326962AA1DB6844 /* Debug */, + FBE0106AE4112ED6993B4EA067F211A0 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -4147,20 +4528,20 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 98862251A72ADB32F4F67AA32CB12BE2 /* Build configuration list for PBXNativeTarget "Pods-web3swift" */ = { + D162BCFD8DC722E08EBF9E023FE222EF /* Build configuration list for PBXNativeTarget "Pods-web3swiftTests" */ = { isa = XCConfigurationList; buildConfigurations = ( - FB48CE0D499482FA5EBC3068530AD58B /* Debug */, - 0ED9E1162AB067AC423FC6013D310E5C /* Release */, + 9A6DF7A0301786D0EB3FEF42DB74074E /* Debug */, + 634C62E1FFEF7CD104795AAD5E050A2C /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - C09ECAE12EBF2BC3EF97DF747CE2AE4D /* Build configuration list for PBXNativeTarget "Pods-web3swiftTests" */ = { + F26A5ACBC7820173E978E2C7A9A014CF /* Build configuration list for PBXNativeTarget "Sodium" */ = { isa = XCConfigurationList; buildConfigurations = ( - 45CF5E6A4C654945759A32FB8322F7AF /* Debug */, - 15D7D648E9A800B93E0D059C9D29484E /* Release */, + 796473C344E59BEA19B25C7E9C1F3379 /* Debug */, + 29A55FFF26785025CCDA7E24A12CAAAB /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Pods/Target Support Files/Pods-web3Swift-Demo/Pods-web3Swift-Demo-acknowledgements.markdown b/Pods/Target Support Files/Pods-web3Swift-Demo/Pods-web3Swift-Demo-acknowledgements.markdown index 4b7ebef6..78b66b60 100644 --- a/Pods/Target Support Files/Pods-web3Swift-Demo/Pods-web3Swift-Demo-acknowledgements.markdown +++ b/Pods/Target Support Files/Pods-web3Swift-Demo/Pods-web3Swift-Demo-acknowledgements.markdown @@ -158,4 +158,26 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ## libsodium Copyright © 2013\nFrank Denis \n\nPermission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n\n + +## secp256k1_ios + +Copyright (c) 2017 shamatar + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. Generated by CocoaPods - https://cocoapods.org diff --git a/Pods/Target Support Files/Pods-web3Swift-Demo/Pods-web3Swift-Demo-acknowledgements.plist b/Pods/Target Support Files/Pods-web3Swift-Demo/Pods-web3Swift-Demo-acknowledgements.plist index 6599240d..8eeb7f2c 100644 --- a/Pods/Target Support Files/Pods-web3Swift-Demo/Pods-web3Swift-Demo-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-web3Swift-Demo/Pods-web3Swift-Demo-acknowledgements.plist @@ -218,6 +218,34 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. Type PSGroupSpecifier + + FooterText + Copyright (c) 2017 shamatar <alex.m.vlasov@gmail.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + License + MIT + Title + secp256k1_ios + Type + PSGroupSpecifier + FooterText Generated by CocoaPods - https://cocoapods.org diff --git a/Pods/Target Support Files/Pods-web3Swift-Demo/Pods-web3Swift-Demo-frameworks.sh b/Pods/Target Support Files/Pods-web3Swift-Demo/Pods-web3Swift-Demo-frameworks.sh index 06d41ef6..5a5823ee 100755 --- a/Pods/Target Support Files/Pods-web3Swift-Demo/Pods-web3Swift-Demo-frameworks.sh +++ b/Pods/Target Support Files/Pods-web3Swift-Demo/Pods-web3Swift-Demo-frameworks.sh @@ -110,6 +110,7 @@ if [[ "$CONFIGURATION" == "Debug" ]]; then install_framework "${BUILT_PRODUCTS_DIR}/SipHash/SipHash.framework" install_framework "${BUILT_PRODUCTS_DIR}/Sodium/Sodium.framework" install_framework "${BUILT_PRODUCTS_DIR}/libsodium/libsodium.framework" + install_framework "${BUILT_PRODUCTS_DIR}/secp256k1_ios/secp256k1_ios.framework" fi if [[ "$CONFIGURATION" == "Release" ]]; then install_framework "${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework" @@ -120,6 +121,7 @@ if [[ "$CONFIGURATION" == "Release" ]]; then install_framework "${BUILT_PRODUCTS_DIR}/SipHash/SipHash.framework" install_framework "${BUILT_PRODUCTS_DIR}/Sodium/Sodium.framework" install_framework "${BUILT_PRODUCTS_DIR}/libsodium/libsodium.framework" + install_framework "${BUILT_PRODUCTS_DIR}/secp256k1_ios/secp256k1_ios.framework" fi if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then wait diff --git a/Pods/Target Support Files/Pods-web3Swift-Demo/Pods-web3Swift-Demo.debug.xcconfig b/Pods/Target Support Files/Pods-web3Swift-Demo/Pods-web3Swift-Demo.debug.xcconfig index 6206d38c..ad7edd9f 100644 --- a/Pods/Target Support Files/Pods-web3Swift-Demo/Pods-web3Swift-Demo.debug.xcconfig +++ b/Pods/Target Support Files/Pods-web3Swift-Demo/Pods-web3Swift-Demo.debug.xcconfig @@ -1,10 +1,10 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/Alamofire" "$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/Sodium" "$PODS_CONFIGURATION_BUILD_DIR/libsodium" +FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/Alamofire" "$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/Sodium" "$PODS_CONFIGURATION_BUILD_DIR/libsodium" "$PODS_CONFIGURATION_BUILD_DIR/secp256k1_ios" 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/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/Sodium/Sodium.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/libsodium/libsodium.framework/Headers" -OTHER_LDFLAGS = $(inherited) -ObjC -framework "Alamofire" -framework "AwaitKit" -framework "BigInt" -framework "CryptoSwift" -framework "PromiseKit" -framework "SipHash" -framework "Sodium" -framework "libsodium" +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/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/Sodium/Sodium.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/libsodium/libsodium.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/secp256k1_ios/secp256k1_ios.framework/Headers" +OTHER_LDFLAGS = $(inherited) -ObjC -framework "Alamofire" -framework "AwaitKit" -framework "BigInt" -framework "CryptoSwift" -framework "PromiseKit" -framework "SipHash" -framework "Sodium" -framework "libsodium" -framework "secp256k1_ios" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" PODS_BUILD_DIR = $BUILD_DIR PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) diff --git a/Pods/Target Support Files/Pods-web3Swift-Demo/Pods-web3Swift-Demo.release.xcconfig b/Pods/Target Support Files/Pods-web3Swift-Demo/Pods-web3Swift-Demo.release.xcconfig index 6206d38c..ad7edd9f 100644 --- a/Pods/Target Support Files/Pods-web3Swift-Demo/Pods-web3Swift-Demo.release.xcconfig +++ b/Pods/Target Support Files/Pods-web3Swift-Demo/Pods-web3Swift-Demo.release.xcconfig @@ -1,10 +1,10 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/Alamofire" "$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/Sodium" "$PODS_CONFIGURATION_BUILD_DIR/libsodium" +FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/Alamofire" "$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/Sodium" "$PODS_CONFIGURATION_BUILD_DIR/libsodium" "$PODS_CONFIGURATION_BUILD_DIR/secp256k1_ios" 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/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/Sodium/Sodium.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/libsodium/libsodium.framework/Headers" -OTHER_LDFLAGS = $(inherited) -ObjC -framework "Alamofire" -framework "AwaitKit" -framework "BigInt" -framework "CryptoSwift" -framework "PromiseKit" -framework "SipHash" -framework "Sodium" -framework "libsodium" +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/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/Sodium/Sodium.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/libsodium/libsodium.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/secp256k1_ios/secp256k1_ios.framework/Headers" +OTHER_LDFLAGS = $(inherited) -ObjC -framework "Alamofire" -framework "AwaitKit" -framework "BigInt" -framework "CryptoSwift" -framework "PromiseKit" -framework "SipHash" -framework "Sodium" -framework "libsodium" -framework "secp256k1_ios" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" PODS_BUILD_DIR = $BUILD_DIR PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) diff --git a/Pods/Target Support Files/Pods-web3swift/Pods-web3swift-acknowledgements.markdown b/Pods/Target Support Files/Pods-web3swift/Pods-web3swift-acknowledgements.markdown index 4b7ebef6..78b66b60 100644 --- a/Pods/Target Support Files/Pods-web3swift/Pods-web3swift-acknowledgements.markdown +++ b/Pods/Target Support Files/Pods-web3swift/Pods-web3swift-acknowledgements.markdown @@ -158,4 +158,26 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ## libsodium Copyright © 2013\nFrank Denis \n\nPermission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n\n + +## secp256k1_ios + +Copyright (c) 2017 shamatar + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. Generated by CocoaPods - https://cocoapods.org diff --git a/Pods/Target Support Files/Pods-web3swift/Pods-web3swift-acknowledgements.plist b/Pods/Target Support Files/Pods-web3swift/Pods-web3swift-acknowledgements.plist index 6599240d..8eeb7f2c 100644 --- a/Pods/Target Support Files/Pods-web3swift/Pods-web3swift-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-web3swift/Pods-web3swift-acknowledgements.plist @@ -218,6 +218,34 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. Type PSGroupSpecifier + + FooterText + Copyright (c) 2017 shamatar <alex.m.vlasov@gmail.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + License + MIT + Title + secp256k1_ios + Type + PSGroupSpecifier + FooterText Generated by CocoaPods - https://cocoapods.org diff --git a/Pods/Target Support Files/Pods-web3swift/Pods-web3swift.debug.xcconfig b/Pods/Target Support Files/Pods-web3swift/Pods-web3swift.debug.xcconfig index 618bc012..aab460af 100644 --- a/Pods/Target Support Files/Pods-web3swift/Pods-web3swift.debug.xcconfig +++ b/Pods/Target Support Files/Pods-web3swift/Pods-web3swift.debug.xcconfig @@ -1,9 +1,9 @@ -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/Alamofire" "$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/Sodium" "$PODS_CONFIGURATION_BUILD_DIR/libsodium" +FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/Alamofire" "$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/Sodium" "$PODS_CONFIGURATION_BUILD_DIR/libsodium" "$PODS_CONFIGURATION_BUILD_DIR/secp256k1_ios" 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' '@executable_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/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/Sodium/Sodium.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/libsodium/libsodium.framework/Headers" -OTHER_LDFLAGS = $(inherited) -ObjC -framework "Alamofire" -framework "AwaitKit" -framework "BigInt" -framework "CryptoSwift" -framework "PromiseKit" -framework "SipHash" -framework "Sodium" -framework "libsodium" +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/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/Sodium/Sodium.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/libsodium/libsodium.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/secp256k1_ios/secp256k1_ios.framework/Headers" +OTHER_LDFLAGS = $(inherited) -ObjC -framework "Alamofire" -framework "AwaitKit" -framework "BigInt" -framework "CryptoSwift" -framework "PromiseKit" -framework "SipHash" -framework "Sodium" -framework "libsodium" -framework "secp256k1_ios" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" PODS_BUILD_DIR = $BUILD_DIR PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) diff --git a/Pods/Target Support Files/Pods-web3swift/Pods-web3swift.release.xcconfig b/Pods/Target Support Files/Pods-web3swift/Pods-web3swift.release.xcconfig index 618bc012..aab460af 100644 --- a/Pods/Target Support Files/Pods-web3swift/Pods-web3swift.release.xcconfig +++ b/Pods/Target Support Files/Pods-web3swift/Pods-web3swift.release.xcconfig @@ -1,9 +1,9 @@ -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/Alamofire" "$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/Sodium" "$PODS_CONFIGURATION_BUILD_DIR/libsodium" +FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/Alamofire" "$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/Sodium" "$PODS_CONFIGURATION_BUILD_DIR/libsodium" "$PODS_CONFIGURATION_BUILD_DIR/secp256k1_ios" 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' '@executable_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/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/Sodium/Sodium.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/libsodium/libsodium.framework/Headers" -OTHER_LDFLAGS = $(inherited) -ObjC -framework "Alamofire" -framework "AwaitKit" -framework "BigInt" -framework "CryptoSwift" -framework "PromiseKit" -framework "SipHash" -framework "Sodium" -framework "libsodium" +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/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/Sodium/Sodium.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/libsodium/libsodium.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/secp256k1_ios/secp256k1_ios.framework/Headers" +OTHER_LDFLAGS = $(inherited) -ObjC -framework "Alamofire" -framework "AwaitKit" -framework "BigInt" -framework "CryptoSwift" -framework "PromiseKit" -framework "SipHash" -framework "Sodium" -framework "libsodium" -framework "secp256k1_ios" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" PODS_BUILD_DIR = $BUILD_DIR PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) diff --git a/Pods/Target Support Files/Pods-web3swiftTests/Pods-web3swiftTests-acknowledgements.markdown b/Pods/Target Support Files/Pods-web3swiftTests/Pods-web3swiftTests-acknowledgements.markdown index 4b7ebef6..78b66b60 100644 --- a/Pods/Target Support Files/Pods-web3swiftTests/Pods-web3swiftTests-acknowledgements.markdown +++ b/Pods/Target Support Files/Pods-web3swiftTests/Pods-web3swiftTests-acknowledgements.markdown @@ -158,4 +158,26 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ## libsodium Copyright © 2013\nFrank Denis \n\nPermission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n\n + +## secp256k1_ios + +Copyright (c) 2017 shamatar + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. Generated by CocoaPods - https://cocoapods.org diff --git a/Pods/Target Support Files/Pods-web3swiftTests/Pods-web3swiftTests-acknowledgements.plist b/Pods/Target Support Files/Pods-web3swiftTests/Pods-web3swiftTests-acknowledgements.plist index 6599240d..8eeb7f2c 100644 --- a/Pods/Target Support Files/Pods-web3swiftTests/Pods-web3swiftTests-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-web3swiftTests/Pods-web3swiftTests-acknowledgements.plist @@ -218,6 +218,34 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. Type PSGroupSpecifier + + FooterText + Copyright (c) 2017 shamatar <alex.m.vlasov@gmail.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + License + MIT + Title + secp256k1_ios + Type + PSGroupSpecifier + FooterText Generated by CocoaPods - https://cocoapods.org diff --git a/Pods/Target Support Files/Pods-web3swiftTests/Pods-web3swiftTests-frameworks.sh b/Pods/Target Support Files/Pods-web3swiftTests/Pods-web3swiftTests-frameworks.sh index 06d41ef6..5a5823ee 100755 --- a/Pods/Target Support Files/Pods-web3swiftTests/Pods-web3swiftTests-frameworks.sh +++ b/Pods/Target Support Files/Pods-web3swiftTests/Pods-web3swiftTests-frameworks.sh @@ -110,6 +110,7 @@ if [[ "$CONFIGURATION" == "Debug" ]]; then install_framework "${BUILT_PRODUCTS_DIR}/SipHash/SipHash.framework" install_framework "${BUILT_PRODUCTS_DIR}/Sodium/Sodium.framework" install_framework "${BUILT_PRODUCTS_DIR}/libsodium/libsodium.framework" + install_framework "${BUILT_PRODUCTS_DIR}/secp256k1_ios/secp256k1_ios.framework" fi if [[ "$CONFIGURATION" == "Release" ]]; then install_framework "${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework" @@ -120,6 +121,7 @@ if [[ "$CONFIGURATION" == "Release" ]]; then install_framework "${BUILT_PRODUCTS_DIR}/SipHash/SipHash.framework" install_framework "${BUILT_PRODUCTS_DIR}/Sodium/Sodium.framework" install_framework "${BUILT_PRODUCTS_DIR}/libsodium/libsodium.framework" + install_framework "${BUILT_PRODUCTS_DIR}/secp256k1_ios/secp256k1_ios.framework" fi if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then wait diff --git a/Pods/Target Support Files/Pods-web3swiftTests/Pods-web3swiftTests.debug.xcconfig b/Pods/Target Support Files/Pods-web3swiftTests/Pods-web3swiftTests.debug.xcconfig index 6206d38c..ad7edd9f 100644 --- a/Pods/Target Support Files/Pods-web3swiftTests/Pods-web3swiftTests.debug.xcconfig +++ b/Pods/Target Support Files/Pods-web3swiftTests/Pods-web3swiftTests.debug.xcconfig @@ -1,10 +1,10 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/Alamofire" "$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/Sodium" "$PODS_CONFIGURATION_BUILD_DIR/libsodium" +FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/Alamofire" "$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/Sodium" "$PODS_CONFIGURATION_BUILD_DIR/libsodium" "$PODS_CONFIGURATION_BUILD_DIR/secp256k1_ios" 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/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/Sodium/Sodium.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/libsodium/libsodium.framework/Headers" -OTHER_LDFLAGS = $(inherited) -ObjC -framework "Alamofire" -framework "AwaitKit" -framework "BigInt" -framework "CryptoSwift" -framework "PromiseKit" -framework "SipHash" -framework "Sodium" -framework "libsodium" +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/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/Sodium/Sodium.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/libsodium/libsodium.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/secp256k1_ios/secp256k1_ios.framework/Headers" +OTHER_LDFLAGS = $(inherited) -ObjC -framework "Alamofire" -framework "AwaitKit" -framework "BigInt" -framework "CryptoSwift" -framework "PromiseKit" -framework "SipHash" -framework "Sodium" -framework "libsodium" -framework "secp256k1_ios" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" PODS_BUILD_DIR = $BUILD_DIR PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) diff --git a/Pods/Target Support Files/Pods-web3swiftTests/Pods-web3swiftTests.release.xcconfig b/Pods/Target Support Files/Pods-web3swiftTests/Pods-web3swiftTests.release.xcconfig index 6206d38c..ad7edd9f 100644 --- a/Pods/Target Support Files/Pods-web3swiftTests/Pods-web3swiftTests.release.xcconfig +++ b/Pods/Target Support Files/Pods-web3swiftTests/Pods-web3swiftTests.release.xcconfig @@ -1,10 +1,10 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/Alamofire" "$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/Sodium" "$PODS_CONFIGURATION_BUILD_DIR/libsodium" +FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/Alamofire" "$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/Sodium" "$PODS_CONFIGURATION_BUILD_DIR/libsodium" "$PODS_CONFIGURATION_BUILD_DIR/secp256k1_ios" 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/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/Sodium/Sodium.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/libsodium/libsodium.framework/Headers" -OTHER_LDFLAGS = $(inherited) -ObjC -framework "Alamofire" -framework "AwaitKit" -framework "BigInt" -framework "CryptoSwift" -framework "PromiseKit" -framework "SipHash" -framework "Sodium" -framework "libsodium" +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/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/Sodium/Sodium.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/libsodium/libsodium.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/secp256k1_ios/secp256k1_ios.framework/Headers" +OTHER_LDFLAGS = $(inherited) -ObjC -framework "Alamofire" -framework "AwaitKit" -framework "BigInt" -framework "CryptoSwift" -framework "PromiseKit" -framework "SipHash" -framework "Sodium" -framework "libsodium" -framework "secp256k1_ios" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" PODS_BUILD_DIR = $BUILD_DIR PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) diff --git a/Pods/Target Support Files/libsodium/libsodium.modulemap b/Pods/Target Support Files/libsodium/libsodium.modulemap index 49dee5a1..90782ee6 100644 --- a/Pods/Target Support Files/libsodium/libsodium.modulemap +++ b/Pods/Target Support Files/libsodium/libsodium.modulemap @@ -1,4 +1,4 @@ -framework module libsodium_dummy { +framework module libsodium { umbrella header "libsodium-umbrella.h" export * diff --git a/Pods/secp256k1_ios/LICENSE b/Pods/secp256k1_ios/LICENSE new file mode 100644 index 00000000..64c3974e --- /dev/null +++ b/Pods/secp256k1_ios/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2017 shamatar + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/Pods/secp256k1_ios/README.md b/Pods/secp256k1_ios/README.md new file mode 100644 index 00000000..8e4c0dc1 --- /dev/null +++ b/Pods/secp256k1_ios/README.md @@ -0,0 +1,28 @@ +# secp256k1_ios + +[![Version](https://img.shields.io/cocoapods/v/ios-secp256k1.svg?style=flat)](http://cocoapods.org/pods/secp256k1_ios) +[![License](https://img.shields.io/cocoapods/l/ios-secp256k1.svg?style=flat)](http://cocoapods.org/pods/secp256k1_ios) +[![Platform](https://img.shields.io/cocoapods/p/ios-secp256k1.svg?style=flat)](http://cocoapods.org/pods/secp256k1_ios) + +## Example + +To run the example project, clone the repo, and run `pod install` from the Example directory first. + +## Requirements + +## Installation + +secp256k1_ios is available through [CocoaPods](http://cocoapods.org). To install +it, simply add the following line to your Podfile: + +```ruby +pod 'secp256k1_ios' +``` + +## Author + +@shamatar, alex.m.vlasov@gmail.com + +## License + +secp256k1_ios is available under the MIT license. See the LICENSE file for more info. \ No newline at end of file diff --git a/Pods/secp256k1_ios/secp256k1_ios/contrib/lax_der_parsing.c b/Pods/secp256k1_ios/secp256k1_ios/contrib/lax_der_parsing.c new file mode 100644 index 00000000..5b141a99 --- /dev/null +++ b/Pods/secp256k1_ios/secp256k1_ios/contrib/lax_der_parsing.c @@ -0,0 +1,150 @@ +/********************************************************************** + * Copyright (c) 2015 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#include +#include + +#include "lax_der_parsing.h" + +int ecdsa_signature_parse_der_lax(const secp256k1_context* ctx, secp256k1_ecdsa_signature* sig, const unsigned char *input, size_t inputlen) { + size_t rpos, rlen, spos, slen; + size_t pos = 0; + size_t lenbyte; + unsigned char tmpsig[64] = {0}; + int overflow = 0; + + /* Hack to initialize sig with a correctly-parsed but invalid signature. */ + secp256k1_ecdsa_signature_parse_compact(ctx, sig, tmpsig); + + /* Sequence tag byte */ + if (pos == inputlen || input[pos] != 0x30) { + return 0; + } + pos++; + + /* Sequence length bytes */ + if (pos == inputlen) { + return 0; + } + lenbyte = input[pos++]; + if (lenbyte & 0x80) { + lenbyte -= 0x80; + if (pos + lenbyte > inputlen) { + return 0; + } + pos += lenbyte; + } + + /* Integer tag byte for R */ + if (pos == inputlen || input[pos] != 0x02) { + return 0; + } + pos++; + + /* Integer length for R */ + if (pos == inputlen) { + return 0; + } + lenbyte = input[pos++]; + if (lenbyte & 0x80) { + lenbyte -= 0x80; + if (pos + lenbyte > inputlen) { + return 0; + } + while (lenbyte > 0 && input[pos] == 0) { + pos++; + lenbyte--; + } + if (lenbyte >= sizeof(size_t)) { + return 0; + } + rlen = 0; + while (lenbyte > 0) { + rlen = (rlen << 8) + input[pos]; + pos++; + lenbyte--; + } + } else { + rlen = lenbyte; + } + if (rlen > inputlen - pos) { + return 0; + } + rpos = pos; + pos += rlen; + + /* Integer tag byte for S */ + if (pos == inputlen || input[pos] != 0x02) { + return 0; + } + pos++; + + /* Integer length for S */ + if (pos == inputlen) { + return 0; + } + lenbyte = input[pos++]; + if (lenbyte & 0x80) { + lenbyte -= 0x80; + if (pos + lenbyte > inputlen) { + return 0; + } + while (lenbyte > 0 && input[pos] == 0) { + pos++; + lenbyte--; + } + if (lenbyte >= sizeof(size_t)) { + return 0; + } + slen = 0; + while (lenbyte > 0) { + slen = (slen << 8) + input[pos]; + pos++; + lenbyte--; + } + } else { + slen = lenbyte; + } + if (slen > inputlen - pos) { + return 0; + } + spos = pos; + pos += slen; + + /* Ignore leading zeroes in R */ + while (rlen > 0 && input[rpos] == 0) { + rlen--; + rpos++; + } + /* Copy R value */ + if (rlen > 32) { + overflow = 1; + } else { + memcpy(tmpsig + 32 - rlen, input + rpos, rlen); + } + + /* Ignore leading zeroes in S */ + while (slen > 0 && input[spos] == 0) { + slen--; + spos++; + } + /* Copy S value */ + if (slen > 32) { + overflow = 1; + } else { + memcpy(tmpsig + 64 - slen, input + spos, slen); + } + + if (!overflow) { + overflow = !secp256k1_ecdsa_signature_parse_compact(ctx, sig, tmpsig); + } + if (overflow) { + memset(tmpsig, 0, 64); + secp256k1_ecdsa_signature_parse_compact(ctx, sig, tmpsig); + } + return 1; +} + diff --git a/Pods/secp256k1_ios/secp256k1_ios/contrib/lax_der_parsing.h b/Pods/secp256k1_ios/secp256k1_ios/contrib/lax_der_parsing.h new file mode 100644 index 00000000..7eaf63bf --- /dev/null +++ b/Pods/secp256k1_ios/secp256k1_ios/contrib/lax_der_parsing.h @@ -0,0 +1,91 @@ +/********************************************************************** + * Copyright (c) 2015 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +/**** + * Please do not link this file directly. It is not part of the libsecp256k1 + * project and does not promise any stability in its API, functionality or + * presence. Projects which use this code should instead copy this header + * and its accompanying .c file directly into their codebase. + ****/ + +/* This file defines a function that parses DER with various errors and + * violations. This is not a part of the library itself, because the allowed + * violations are chosen arbitrarily and do not follow or establish any + * standard. + * + * In many places it matters that different implementations do not only accept + * the same set of valid signatures, but also reject the same set of signatures. + * The only means to accomplish that is by strictly obeying a standard, and not + * accepting anything else. + * + * Nonetheless, sometimes there is a need for compatibility with systems that + * use signatures which do not strictly obey DER. The snippet below shows how + * certain violations are easily supported. You may need to adapt it. + * + * Do not use this for new systems. Use well-defined DER or compact signatures + * instead if you have the choice (see secp256k1_ecdsa_signature_parse_der and + * secp256k1_ecdsa_signature_parse_compact). + * + * The supported violations are: + * - All numbers are parsed as nonnegative integers, even though X.609-0207 + * section 8.3.3 specifies that integers are always encoded as two's + * complement. + * - Integers can have length 0, even though section 8.3.1 says they can't. + * - Integers with overly long padding are accepted, violation section + * 8.3.2. + * - 127-byte long length descriptors are accepted, even though section + * 8.1.3.5.c says that they are not. + * - Trailing garbage data inside or after the signature is ignored. + * - The length descriptor of the sequence is ignored. + * + * Compared to for example OpenSSL, many violations are NOT supported: + * - Using overly long tag descriptors for the sequence or integers inside, + * violating section 8.1.2.2. + * - Encoding primitive integers as constructed values, violating section + * 8.3.1. + */ + +#ifndef SECP256K1_CONTRIB_LAX_DER_PARSING_H +#define SECP256K1_CONTRIB_LAX_DER_PARSING_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** Parse a signature in "lax DER" format + * + * Returns: 1 when the signature could be parsed, 0 otherwise. + * Args: ctx: a secp256k1 context object + * Out: sig: a pointer to a signature object + * In: input: a pointer to the signature to be parsed + * inputlen: the length of the array pointed to be input + * + * This function will accept any valid DER encoded signature, even if the + * encoded numbers are out of range. In addition, it will accept signatures + * which violate the DER spec in various ways. Its purpose is to allow + * validation of the Bitcoin blockchain, which includes non-DER signatures + * from before the network rules were updated to enforce DER. Note that + * the set of supported violations is a strict subset of what OpenSSL will + * accept. + * + * After the call, sig will always be initialized. If parsing failed or the + * encoded numbers are out of range, signature validation with it is + * guaranteed to fail for every message and public key. + */ +int ecdsa_signature_parse_der_lax( + const secp256k1_context* ctx, + secp256k1_ecdsa_signature* sig, + const unsigned char *input, + size_t inputlen +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); + +#ifdef __cplusplus +} +#endif + +#endif /* SECP256K1_CONTRIB_LAX_DER_PARSING_H */ diff --git a/Pods/secp256k1_ios/secp256k1_ios/contrib/lax_der_privatekey_parsing.c b/Pods/secp256k1_ios/secp256k1_ios/contrib/lax_der_privatekey_parsing.c new file mode 100644 index 00000000..c2e63b4b --- /dev/null +++ b/Pods/secp256k1_ios/secp256k1_ios/contrib/lax_der_privatekey_parsing.c @@ -0,0 +1,113 @@ +/********************************************************************** + * Copyright (c) 2014, 2015 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#include +#include + +#include "lax_der_privatekey_parsing.h" + +int ec_privkey_import_der(const secp256k1_context* ctx, unsigned char *out32, const unsigned char *privkey, size_t privkeylen) { + const unsigned char *end = privkey + privkeylen; + int lenb = 0; + int len = 0; + memset(out32, 0, 32); + /* sequence header */ + if (end < privkey+1 || *privkey != 0x30) { + return 0; + } + privkey++; + /* sequence length constructor */ + if (end < privkey+1 || !(*privkey & 0x80)) { + return 0; + } + lenb = *privkey & ~0x80; privkey++; + if (lenb < 1 || lenb > 2) { + return 0; + } + if (end < privkey+lenb) { + return 0; + } + /* sequence length */ + len = privkey[lenb-1] | (lenb > 1 ? privkey[lenb-2] << 8 : 0); + privkey += lenb; + if (end < privkey+len) { + return 0; + } + /* sequence element 0: version number (=1) */ + if (end < privkey+3 || privkey[0] != 0x02 || privkey[1] != 0x01 || privkey[2] != 0x01) { + return 0; + } + privkey += 3; + /* sequence element 1: octet string, up to 32 bytes */ + if (end < privkey+2 || privkey[0] != 0x04 || privkey[1] > 0x20 || end < privkey+2+privkey[1]) { + return 0; + } + memcpy(out32 + 32 - privkey[1], privkey + 2, privkey[1]); + if (!secp256k1_ec_seckey_verify(ctx, out32)) { + memset(out32, 0, 32); + return 0; + } + return 1; +} + +int ec_privkey_export_der(const secp256k1_context *ctx, unsigned char *privkey, size_t *privkeylen, const unsigned char *key32, int compressed) { + secp256k1_pubkey pubkey; + size_t pubkeylen = 0; + if (!secp256k1_ec_pubkey_create(ctx, &pubkey, key32)) { + *privkeylen = 0; + return 0; + } + if (compressed) { + static const unsigned char begin[] = { + 0x30,0x81,0xD3,0x02,0x01,0x01,0x04,0x20 + }; + static const unsigned char middle[] = { + 0xA0,0x81,0x85,0x30,0x81,0x82,0x02,0x01,0x01,0x30,0x2C,0x06,0x07,0x2A,0x86,0x48, + 0xCE,0x3D,0x01,0x01,0x02,0x21,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFE,0xFF,0xFF,0xFC,0x2F,0x30,0x06,0x04,0x01,0x00,0x04,0x01,0x07,0x04, + 0x21,0x02,0x79,0xBE,0x66,0x7E,0xF9,0xDC,0xBB,0xAC,0x55,0xA0,0x62,0x95,0xCE,0x87, + 0x0B,0x07,0x02,0x9B,0xFC,0xDB,0x2D,0xCE,0x28,0xD9,0x59,0xF2,0x81,0x5B,0x16,0xF8, + 0x17,0x98,0x02,0x21,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFE,0xBA,0xAE,0xDC,0xE6,0xAF,0x48,0xA0,0x3B,0xBF,0xD2,0x5E, + 0x8C,0xD0,0x36,0x41,0x41,0x02,0x01,0x01,0xA1,0x24,0x03,0x22,0x00 + }; + unsigned char *ptr = privkey; + memcpy(ptr, begin, sizeof(begin)); ptr += sizeof(begin); + memcpy(ptr, key32, 32); ptr += 32; + memcpy(ptr, middle, sizeof(middle)); ptr += sizeof(middle); + pubkeylen = 33; + secp256k1_ec_pubkey_serialize(ctx, ptr, &pubkeylen, &pubkey, SECP256K1_EC_COMPRESSED); + ptr += pubkeylen; + *privkeylen = ptr - privkey; + } else { + static const unsigned char begin[] = { + 0x30,0x82,0x01,0x13,0x02,0x01,0x01,0x04,0x20 + }; + static const unsigned char middle[] = { + 0xA0,0x81,0xA5,0x30,0x81,0xA2,0x02,0x01,0x01,0x30,0x2C,0x06,0x07,0x2A,0x86,0x48, + 0xCE,0x3D,0x01,0x01,0x02,0x21,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFE,0xFF,0xFF,0xFC,0x2F,0x30,0x06,0x04,0x01,0x00,0x04,0x01,0x07,0x04, + 0x41,0x04,0x79,0xBE,0x66,0x7E,0xF9,0xDC,0xBB,0xAC,0x55,0xA0,0x62,0x95,0xCE,0x87, + 0x0B,0x07,0x02,0x9B,0xFC,0xDB,0x2D,0xCE,0x28,0xD9,0x59,0xF2,0x81,0x5B,0x16,0xF8, + 0x17,0x98,0x48,0x3A,0xDA,0x77,0x26,0xA3,0xC4,0x65,0x5D,0xA4,0xFB,0xFC,0x0E,0x11, + 0x08,0xA8,0xFD,0x17,0xB4,0x48,0xA6,0x85,0x54,0x19,0x9C,0x47,0xD0,0x8F,0xFB,0x10, + 0xD4,0xB8,0x02,0x21,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFE,0xBA,0xAE,0xDC,0xE6,0xAF,0x48,0xA0,0x3B,0xBF,0xD2,0x5E, + 0x8C,0xD0,0x36,0x41,0x41,0x02,0x01,0x01,0xA1,0x44,0x03,0x42,0x00 + }; + unsigned char *ptr = privkey; + memcpy(ptr, begin, sizeof(begin)); ptr += sizeof(begin); + memcpy(ptr, key32, 32); ptr += 32; + memcpy(ptr, middle, sizeof(middle)); ptr += sizeof(middle); + pubkeylen = 65; + secp256k1_ec_pubkey_serialize(ctx, ptr, &pubkeylen, &pubkey, SECP256K1_EC_UNCOMPRESSED); + ptr += pubkeylen; + *privkeylen = ptr - privkey; + } + return 1; +} diff --git a/Pods/secp256k1_ios/secp256k1_ios/contrib/lax_der_privatekey_parsing.h b/Pods/secp256k1_ios/secp256k1_ios/contrib/lax_der_privatekey_parsing.h new file mode 100644 index 00000000..fece261f --- /dev/null +++ b/Pods/secp256k1_ios/secp256k1_ios/contrib/lax_der_privatekey_parsing.h @@ -0,0 +1,90 @@ +/********************************************************************** + * Copyright (c) 2014, 2015 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +/**** + * Please do not link this file directly. It is not part of the libsecp256k1 + * project and does not promise any stability in its API, functionality or + * presence. Projects which use this code should instead copy this header + * and its accompanying .c file directly into their codebase. + ****/ + +/* This file contains code snippets that parse DER private keys with + * various errors and violations. This is not a part of the library + * itself, because the allowed violations are chosen arbitrarily and + * do not follow or establish any standard. + * + * It also contains code to serialize private keys in a compatible + * manner. + * + * These functions are meant for compatibility with applications + * that require BER encoded keys. When working with secp256k1-specific + * code, the simple 32-byte private keys normally used by the + * library are sufficient. + */ + +#ifndef SECP256K1_CONTRIB_BER_PRIVATEKEY_H +#define SECP256K1_CONTRIB_BER_PRIVATEKEY_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** Export a private key in DER format. + * + * Returns: 1 if the private key was valid. + * Args: ctx: pointer to a context object, initialized for signing (cannot + * be NULL) + * Out: privkey: pointer to an array for storing the private key in BER. + * Should have space for 279 bytes, and cannot be NULL. + * privkeylen: Pointer to an int where the length of the private key in + * privkey will be stored. + * In: seckey: pointer to a 32-byte secret key to export. + * compressed: 1 if the key should be exported in + * compressed format, 0 otherwise + * + * This function is purely meant for compatibility with applications that + * require BER encoded keys. When working with secp256k1-specific code, the + * simple 32-byte private keys are sufficient. + * + * Note that this function does not guarantee correct DER output. It is + * guaranteed to be parsable by secp256k1_ec_privkey_import_der + */ +SECP256K1_WARN_UNUSED_RESULT int ec_privkey_export_der( + const secp256k1_context* ctx, + unsigned char *privkey, + size_t *privkeylen, + const unsigned char *seckey, + int compressed +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4); + +/** Import a private key in DER format. + * Returns: 1 if a private key was extracted. + * Args: ctx: pointer to a context object (cannot be NULL). + * Out: seckey: pointer to a 32-byte array for storing the private key. + * (cannot be NULL). + * In: privkey: pointer to a private key in DER format (cannot be NULL). + * privkeylen: length of the DER private key pointed to be privkey. + * + * This function will accept more than just strict DER, and even allow some BER + * violations. The public key stored inside the DER-encoded private key is not + * verified for correctness, nor are the curve parameters. Use this function + * only if you know in advance it is supposed to contain a secp256k1 private + * key. + */ +SECP256K1_WARN_UNUSED_RESULT int ec_privkey_import_der( + const secp256k1_context* ctx, + unsigned char *seckey, + const unsigned char *privkey, + size_t privkeylen +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); + +#ifdef __cplusplus +} +#endif + +#endif /* SECP256K1_CONTRIB_BER_PRIVATEKEY_H */ diff --git a/web3swift/secp256k1/secp256k1.framework/Headers/secp256k1.h b/Pods/secp256k1_ios/secp256k1_ios/include/secp256k1.h similarity index 98% rename from web3swift/secp256k1/secp256k1.framework/Headers/secp256k1.h rename to Pods/secp256k1_ios/secp256k1_ios/include/secp256k1.h index fc4c5cef..3e9c098d 100644 --- a/web3swift/secp256k1/secp256k1.framework/Headers/secp256k1.h +++ b/Pods/secp256k1_ios/secp256k1_ios/include/secp256k1.h @@ -1,9 +1,9 @@ -#ifndef _SECP256K1_ -# define _SECP256K1_ +#ifndef SECP256K1_H +#define SECP256K1_H -# ifdef __cplusplus +#ifdef __cplusplus extern "C" { -# endif +#endif #include @@ -61,7 +61,7 @@ typedef struct { * however guaranteed to be 64 bytes in size, and can be safely copied/moved. * If you need to convert to a format suitable for storage, transmission, or * comparison, use the secp256k1_ecdsa_signature_serialize_* and - * secp256k1_ecdsa_signature_serialize_* functions. + * secp256k1_ecdsa_signature_parse_* functions. */ typedef struct { unsigned char data[64]; @@ -159,6 +159,13 @@ typedef int (*secp256k1_nonce_function)( #define SECP256K1_EC_COMPRESSED (SECP256K1_FLAGS_TYPE_COMPRESSION | SECP256K1_FLAGS_BIT_COMPRESSION) #define SECP256K1_EC_UNCOMPRESSED (SECP256K1_FLAGS_TYPE_COMPRESSION) +/** Prefix byte used to tag various encoded curvepoints for specific purposes */ +#define SECP256K1_TAG_PUBKEY_EVEN 0x02 +#define SECP256K1_TAG_PUBKEY_ODD 0x03 +#define SECP256K1_TAG_PUBKEY_UNCOMPRESSED 0x04 +#define SECP256K1_TAG_PUBKEY_HYBRID_EVEN 0x06 +#define SECP256K1_TAG_PUBKEY_HYBRID_ODD 0x07 + /** Create a secp256k1 context object. * * Returns: a newly created context object. @@ -607,8 +614,8 @@ SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_pubkey_combine( size_t n ) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); -# ifdef __cplusplus +#ifdef __cplusplus } -# endif - #endif + +#endif /* SECP256K1_H */ diff --git a/Pods/secp256k1_ios/secp256k1_ios/include/secp256k1_ecdh.h b/Pods/secp256k1_ios/secp256k1_ios/include/secp256k1_ecdh.h new file mode 100644 index 00000000..88492dc1 --- /dev/null +++ b/Pods/secp256k1_ios/secp256k1_ios/include/secp256k1_ecdh.h @@ -0,0 +1,31 @@ +#ifndef SECP256K1_ECDH_H +#define SECP256K1_ECDH_H + +#include "secp256k1.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** Compute an EC Diffie-Hellman secret in constant time + * Returns: 1: exponentiation was successful + * 0: scalar was invalid (zero or overflow) + * Args: ctx: pointer to a context object (cannot be NULL) + * Out: result: a 32-byte array which will be populated by an ECDH + * secret computed from the point and scalar + * In: pubkey: a pointer to a secp256k1_pubkey containing an + * initialized public key + * privkey: a 32-byte scalar with which to multiply the point + */ +SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ecdh( + const secp256k1_context* ctx, + unsigned char *result, + const secp256k1_pubkey *pubkey, + const unsigned char *privkey +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4); + +#ifdef __cplusplus +} +#endif + +#endif /* SECP256K1_ECDH_H */ diff --git a/web3swift/secp256k1/secp256k1.framework/Headers/secp256k1_recovery.h b/Pods/secp256k1_ios/secp256k1_ios/include/secp256k1_recovery.h similarity index 96% rename from web3swift/secp256k1/secp256k1.framework/Headers/secp256k1_recovery.h rename to Pods/secp256k1_ios/secp256k1_ios/include/secp256k1_recovery.h index 05537972..cf6c5ed7 100644 --- a/web3swift/secp256k1/secp256k1.framework/Headers/secp256k1_recovery.h +++ b/Pods/secp256k1_ios/secp256k1_ios/include/secp256k1_recovery.h @@ -1,11 +1,11 @@ -#ifndef _SECP256K1_RECOVERY_ -# define _SECP256K1_RECOVERY_ +#ifndef SECP256K1_RECOVERY_H +#define SECP256K1_RECOVERY_H -# include "secp256k1.h" +#include "secp256k1.h" -# ifdef __cplusplus +#ifdef __cplusplus extern "C" { -# endif +#endif /** Opaque data structured that holds a parsed ECDSA signature, * supporting pubkey recovery. @@ -103,8 +103,8 @@ SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ecdsa_recover( const unsigned char *msg32 ) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4); -# ifdef __cplusplus +#ifdef __cplusplus } -# endif - #endif + +#endif /* SECP256K1_RECOVERY_H */ diff --git a/Pods/secp256k1_ios/secp256k1_ios/libsecp256k1-config.h b/Pods/secp256k1_ios/secp256k1_ios/libsecp256k1-config.h new file mode 100644 index 00000000..c1fad1ec --- /dev/null +++ b/Pods/secp256k1_ios/secp256k1_ios/libsecp256k1-config.h @@ -0,0 +1,22 @@ +// +// libsecp256k1-config.h +// secp256k1_ios +// +// Created by Alexander Vlasov on 20.12.2017. +// Copyright © 2017 Alexander Vlasov. All rights reserved. +// + +#ifndef libsecp256k1_config_h +#define libsecp256k1_config_h +#undef USE_BASIC_CONFIG +#define USE_NUM_NONE 1 +#define USE_FIELD_INV_BUILTIN 1 +#define USE_SCALAR_INV_BUILTIN 1 +#ifdef _BIT64 +#define USE_FIELD_5X52 1 +#define USE_SCALAR_4X64 1 +#else +#define USE_FIELD_10X26 1 +#define USE_SCALAR_8X32 1 +#endif +#endif /* libsecp256k1_config_h */ diff --git a/Pods/secp256k1_ios/secp256k1_ios/secp256k1_ios.h b/Pods/secp256k1_ios/secp256k1_ios/secp256k1_ios.h new file mode 100644 index 00000000..6cce852f --- /dev/null +++ b/Pods/secp256k1_ios/secp256k1_ios/secp256k1_ios.h @@ -0,0 +1,17 @@ +// +// secp256k1_ios.h +// secp256k1_ios +// +// Created by Alexander Vlasov on 07.12.2017. +// Copyright © 2017 Alexander Vlasov. All rights reserved. +// + +//! Project version number for secp256k1_ios. +FOUNDATION_EXPORT double secp256k1_iosVersionNumber; + +//! Project version string for secp256k1_ios. +FOUNDATION_EXPORT const unsigned char secp256k1_iosVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/Pods/secp256k1_ios/secp256k1_ios/src/basic-config.h b/Pods/secp256k1_ios/secp256k1_ios/src/basic-config.h new file mode 100644 index 00000000..fc588061 --- /dev/null +++ b/Pods/secp256k1_ios/secp256k1_ios/src/basic-config.h @@ -0,0 +1,33 @@ +/********************************************************************** + * Copyright (c) 2013, 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef SECP256K1_BASIC_CONFIG_H +#define SECP256K1_BASIC_CONFIG_H + +#ifdef USE_BASIC_CONFIG + +#undef USE_ASM_X86_64 +#undef USE_ENDOMORPHISM +#undef USE_FIELD_10X26 +#undef USE_FIELD_5X52 +#undef USE_FIELD_INV_BUILTIN +#undef USE_FIELD_INV_NUM +#undef USE_NUM_GMP +#undef USE_NUM_NONE +#undef USE_SCALAR_4X64 +#undef USE_SCALAR_8X32 +#undef USE_SCALAR_INV_BUILTIN +#undef USE_SCALAR_INV_NUM + +#define USE_NUM_NONE 1 +#define USE_FIELD_INV_BUILTIN 1 +#define USE_SCALAR_INV_BUILTIN 1 +#define USE_FIELD_10X26 1 +#define USE_SCALAR_8X32 1 + +#endif /* USE_BASIC_CONFIG */ + +#endif /* SECP256K1_BASIC_CONFIG_H */ diff --git a/Pods/secp256k1_ios/secp256k1_ios/src/ecdsa.h b/Pods/secp256k1_ios/secp256k1_ios/src/ecdsa.h new file mode 100644 index 00000000..80590c7c --- /dev/null +++ b/Pods/secp256k1_ios/secp256k1_ios/src/ecdsa.h @@ -0,0 +1,21 @@ +/********************************************************************** + * Copyright (c) 2013, 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef SECP256K1_ECDSA_H +#define SECP256K1_ECDSA_H + +#include + +#include "scalar.h" +#include "group.h" +#include "ecmult.h" + +static int secp256k1_ecdsa_sig_parse(secp256k1_scalar *r, secp256k1_scalar *s, const unsigned char *sig, size_t size); +static int secp256k1_ecdsa_sig_serialize(unsigned char *sig, size_t *size, const secp256k1_scalar *r, const secp256k1_scalar *s); +static int secp256k1_ecdsa_sig_verify(const secp256k1_ecmult_context *ctx, const secp256k1_scalar* r, const secp256k1_scalar* s, const secp256k1_ge *pubkey, const secp256k1_scalar *message); +static int secp256k1_ecdsa_sig_sign(const secp256k1_ecmult_gen_context *ctx, secp256k1_scalar* r, secp256k1_scalar* s, const secp256k1_scalar *seckey, const secp256k1_scalar *message, const secp256k1_scalar *nonce, int *recid); + +#endif /* SECP256K1_ECDSA_H */ diff --git a/Pods/secp256k1_ios/secp256k1_ios/src/ecdsa_impl.h b/Pods/secp256k1_ios/secp256k1_ios/src/ecdsa_impl.h new file mode 100644 index 00000000..c3400042 --- /dev/null +++ b/Pods/secp256k1_ios/secp256k1_ios/src/ecdsa_impl.h @@ -0,0 +1,313 @@ +/********************************************************************** + * Copyright (c) 2013-2015 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + + +#ifndef SECP256K1_ECDSA_IMPL_H +#define SECP256K1_ECDSA_IMPL_H + +#include "scalar.h" +#include "field.h" +#include "group.h" +#include "ecmult.h" +#include "ecmult_gen.h" +#include "ecdsa.h" + +/** Group order for secp256k1 defined as 'n' in "Standards for Efficient Cryptography" (SEC2) 2.7.1 + * sage: for t in xrange(1023, -1, -1): + * .. p = 2**256 - 2**32 - t + * .. if p.is_prime(): + * .. print '%x'%p + * .. break + * 'fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f' + * sage: a = 0 + * sage: b = 7 + * sage: F = FiniteField (p) + * sage: '%x' % (EllipticCurve ([F (a), F (b)]).order()) + * 'fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141' + */ +static const secp256k1_fe secp256k1_ecdsa_const_order_as_fe = SECP256K1_FE_CONST( + 0xFFFFFFFFUL, 0xFFFFFFFFUL, 0xFFFFFFFFUL, 0xFFFFFFFEUL, + 0xBAAEDCE6UL, 0xAF48A03BUL, 0xBFD25E8CUL, 0xD0364141UL +); + +/** Difference between field and order, values 'p' and 'n' values defined in + * "Standards for Efficient Cryptography" (SEC2) 2.7.1. + * sage: p = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F + * sage: a = 0 + * sage: b = 7 + * sage: F = FiniteField (p) + * sage: '%x' % (p - EllipticCurve ([F (a), F (b)]).order()) + * '14551231950b75fc4402da1722fc9baee' + */ +static const secp256k1_fe secp256k1_ecdsa_const_p_minus_order = SECP256K1_FE_CONST( + 0, 0, 0, 1, 0x45512319UL, 0x50B75FC4UL, 0x402DA172UL, 0x2FC9BAEEUL +); + +static int secp256k1_der_read_len(const unsigned char **sigp, const unsigned char *sigend) { + int lenleft, b1; + size_t ret = 0; + if (*sigp >= sigend) { + return -1; + } + b1 = *((*sigp)++); + if (b1 == 0xFF) { + /* X.690-0207 8.1.3.5.c the value 0xFF shall not be used. */ + return -1; + } + if ((b1 & 0x80) == 0) { + /* X.690-0207 8.1.3.4 short form length octets */ + return b1; + } + if (b1 == 0x80) { + /* Indefinite length is not allowed in DER. */ + return -1; + } + /* X.690-207 8.1.3.5 long form length octets */ + lenleft = b1 & 0x7F; + if (lenleft > sigend - *sigp) { + return -1; + } + if (**sigp == 0) { + /* Not the shortest possible length encoding. */ + return -1; + } + if ((size_t)lenleft > sizeof(size_t)) { + /* The resulting length would exceed the range of a size_t, so + * certainly longer than the passed array size. + */ + return -1; + } + while (lenleft > 0) { + ret = (ret << 8) | **sigp; + if (ret + lenleft > (size_t)(sigend - *sigp)) { + /* Result exceeds the length of the passed array. */ + return -1; + } + (*sigp)++; + lenleft--; + } + if (ret < 128) { + /* Not the shortest possible length encoding. */ + return -1; + } + return ret; +} + +static int secp256k1_der_parse_integer(secp256k1_scalar *r, const unsigned char **sig, const unsigned char *sigend) { + int overflow = 0; + unsigned char ra[32] = {0}; + int rlen; + + if (*sig == sigend || **sig != 0x02) { + /* Not a primitive integer (X.690-0207 8.3.1). */ + return 0; + } + (*sig)++; + rlen = secp256k1_der_read_len(sig, sigend); + if (rlen <= 0 || (*sig) + rlen > sigend) { + /* Exceeds bounds or not at least length 1 (X.690-0207 8.3.1). */ + return 0; + } + if (**sig == 0x00 && rlen > 1 && (((*sig)[1]) & 0x80) == 0x00) { + /* Excessive 0x00 padding. */ + return 0; + } + if (**sig == 0xFF && rlen > 1 && (((*sig)[1]) & 0x80) == 0x80) { + /* Excessive 0xFF padding. */ + return 0; + } + if ((**sig & 0x80) == 0x80) { + /* Negative. */ + overflow = 1; + } + while (rlen > 0 && **sig == 0) { + /* Skip leading zero bytes */ + rlen--; + (*sig)++; + } + if (rlen > 32) { + overflow = 1; + } + if (!overflow) { + memcpy(ra + 32 - rlen, *sig, rlen); + secp256k1_scalar_set_b32(r, ra, &overflow); + } + if (overflow) { + secp256k1_scalar_set_int(r, 0); + } + (*sig) += rlen; + return 1; +} + +static int secp256k1_ecdsa_sig_parse(secp256k1_scalar *rr, secp256k1_scalar *rs, const unsigned char *sig, size_t size) { + const unsigned char *sigend = sig + size; + int rlen; + if (sig == sigend || *(sig++) != 0x30) { + /* The encoding doesn't start with a constructed sequence (X.690-0207 8.9.1). */ + return 0; + } + rlen = secp256k1_der_read_len(&sig, sigend); + if (rlen < 0 || sig + rlen > sigend) { + /* Tuple exceeds bounds */ + return 0; + } + if (sig + rlen != sigend) { + /* Garbage after tuple. */ + return 0; + } + + if (!secp256k1_der_parse_integer(rr, &sig, sigend)) { + return 0; + } + if (!secp256k1_der_parse_integer(rs, &sig, sigend)) { + return 0; + } + + if (sig != sigend) { + /* Trailing garbage inside tuple. */ + return 0; + } + + return 1; +} + +static int secp256k1_ecdsa_sig_serialize(unsigned char *sig, size_t *size, const secp256k1_scalar* ar, const secp256k1_scalar* as) { + unsigned char r[33] = {0}, s[33] = {0}; + unsigned char *rp = r, *sp = s; + size_t lenR = 33, lenS = 33; + secp256k1_scalar_get_b32(&r[1], ar); + secp256k1_scalar_get_b32(&s[1], as); + while (lenR > 1 && rp[0] == 0 && rp[1] < 0x80) { lenR--; rp++; } + while (lenS > 1 && sp[0] == 0 && sp[1] < 0x80) { lenS--; sp++; } + if (*size < 6+lenS+lenR) { + *size = 6 + lenS + lenR; + return 0; + } + *size = 6 + lenS + lenR; + sig[0] = 0x30; + sig[1] = 4 + lenS + lenR; + sig[2] = 0x02; + sig[3] = lenR; + memcpy(sig+4, rp, lenR); + sig[4+lenR] = 0x02; + sig[5+lenR] = lenS; + memcpy(sig+lenR+6, sp, lenS); + return 1; +} + +static int secp256k1_ecdsa_sig_verify(const secp256k1_ecmult_context *ctx, const secp256k1_scalar *sigr, const secp256k1_scalar *sigs, const secp256k1_ge *pubkey, const secp256k1_scalar *message) { + unsigned char c[32]; + secp256k1_scalar sn, u1, u2; +#if !defined(EXHAUSTIVE_TEST_ORDER) + secp256k1_fe xr; +#endif + secp256k1_gej pubkeyj; + secp256k1_gej pr; + + if (secp256k1_scalar_is_zero(sigr) || secp256k1_scalar_is_zero(sigs)) { + return 0; + } + + secp256k1_scalar_inverse_var(&sn, sigs); + secp256k1_scalar_mul(&u1, &sn, message); + secp256k1_scalar_mul(&u2, &sn, sigr); + secp256k1_gej_set_ge(&pubkeyj, pubkey); + secp256k1_ecmult(ctx, &pr, &pubkeyj, &u2, &u1); + if (secp256k1_gej_is_infinity(&pr)) { + return 0; + } + +#if defined(EXHAUSTIVE_TEST_ORDER) +{ + secp256k1_scalar computed_r; + secp256k1_ge pr_ge; + secp256k1_ge_set_gej(&pr_ge, &pr); + secp256k1_fe_normalize(&pr_ge.x); + + secp256k1_fe_get_b32(c, &pr_ge.x); + secp256k1_scalar_set_b32(&computed_r, c, NULL); + return secp256k1_scalar_eq(sigr, &computed_r); +} +#else + secp256k1_scalar_get_b32(c, sigr); + secp256k1_fe_set_b32(&xr, c); + + /** We now have the recomputed R point in pr, and its claimed x coordinate (modulo n) + * in xr. Naively, we would extract the x coordinate from pr (requiring a inversion modulo p), + * compute the remainder modulo n, and compare it to xr. However: + * + * xr == X(pr) mod n + * <=> exists h. (xr + h * n < p && xr + h * n == X(pr)) + * [Since 2 * n > p, h can only be 0 or 1] + * <=> (xr == X(pr)) || (xr + n < p && xr + n == X(pr)) + * [In Jacobian coordinates, X(pr) is pr.x / pr.z^2 mod p] + * <=> (xr == pr.x / pr.z^2 mod p) || (xr + n < p && xr + n == pr.x / pr.z^2 mod p) + * [Multiplying both sides of the equations by pr.z^2 mod p] + * <=> (xr * pr.z^2 mod p == pr.x) || (xr + n < p && (xr + n) * pr.z^2 mod p == pr.x) + * + * Thus, we can avoid the inversion, but we have to check both cases separately. + * secp256k1_gej_eq_x implements the (xr * pr.z^2 mod p == pr.x) test. + */ + if (secp256k1_gej_eq_x_var(&xr, &pr)) { + /* xr * pr.z^2 mod p == pr.x, so the signature is valid. */ + return 1; + } + if (secp256k1_fe_cmp_var(&xr, &secp256k1_ecdsa_const_p_minus_order) >= 0) { + /* xr + n >= p, so we can skip testing the second case. */ + return 0; + } + secp256k1_fe_add(&xr, &secp256k1_ecdsa_const_order_as_fe); + if (secp256k1_gej_eq_x_var(&xr, &pr)) { + /* (xr + n) * pr.z^2 mod p == pr.x, so the signature is valid. */ + return 1; + } + return 0; +#endif +} + +static int secp256k1_ecdsa_sig_sign(const secp256k1_ecmult_gen_context *ctx, secp256k1_scalar *sigr, secp256k1_scalar *sigs, const secp256k1_scalar *seckey, const secp256k1_scalar *message, const secp256k1_scalar *nonce, int *recid) { + unsigned char b[32]; + secp256k1_gej rp; + secp256k1_ge r; + secp256k1_scalar n; + int overflow = 0; + + secp256k1_ecmult_gen(ctx, &rp, nonce); + secp256k1_ge_set_gej(&r, &rp); + secp256k1_fe_normalize(&r.x); + secp256k1_fe_normalize(&r.y); + secp256k1_fe_get_b32(b, &r.x); + secp256k1_scalar_set_b32(sigr, b, &overflow); + /* These two conditions should be checked before calling */ + VERIFY_CHECK(!secp256k1_scalar_is_zero(sigr)); + VERIFY_CHECK(overflow == 0); + + if (recid) { + /* The overflow condition is cryptographically unreachable as hitting it requires finding the discrete log + * of some P where P.x >= order, and only 1 in about 2^127 points meet this criteria. + */ + *recid = (overflow ? 2 : 0) | (secp256k1_fe_is_odd(&r.y) ? 1 : 0); + } + secp256k1_scalar_mul(&n, sigr, seckey); + secp256k1_scalar_add(&n, &n, message); + secp256k1_scalar_inverse(sigs, nonce); + secp256k1_scalar_mul(sigs, sigs, &n); + secp256k1_scalar_clear(&n); + secp256k1_gej_clear(&rp); + secp256k1_ge_clear(&r); + if (secp256k1_scalar_is_zero(sigs)) { + return 0; + } + if (secp256k1_scalar_is_high(sigs)) { + secp256k1_scalar_negate(sigs, sigs); + if (recid) { + *recid ^= 1; + } + } + return 1; +} + +#endif /* SECP256K1_ECDSA_IMPL_H */ diff --git a/Pods/secp256k1_ios/secp256k1_ios/src/eckey.h b/Pods/secp256k1_ios/secp256k1_ios/src/eckey.h new file mode 100644 index 00000000..b621f1e6 --- /dev/null +++ b/Pods/secp256k1_ios/secp256k1_ios/src/eckey.h @@ -0,0 +1,25 @@ +/********************************************************************** + * Copyright (c) 2013, 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef SECP256K1_ECKEY_H +#define SECP256K1_ECKEY_H + +#include + +#include "group.h" +#include "scalar.h" +#include "ecmult.h" +#include "ecmult_gen.h" + +static int secp256k1_eckey_pubkey_parse(secp256k1_ge *elem, const unsigned char *pub, size_t size); +static int secp256k1_eckey_pubkey_serialize(secp256k1_ge *elem, unsigned char *pub, size_t *size, int compressed); + +static int secp256k1_eckey_privkey_tweak_add(secp256k1_scalar *key, const secp256k1_scalar *tweak); +static int secp256k1_eckey_pubkey_tweak_add(const secp256k1_ecmult_context *ctx, secp256k1_ge *key, const secp256k1_scalar *tweak); +static int secp256k1_eckey_privkey_tweak_mul(secp256k1_scalar *key, const secp256k1_scalar *tweak); +static int secp256k1_eckey_pubkey_tweak_mul(const secp256k1_ecmult_context *ctx, secp256k1_ge *key, const secp256k1_scalar *tweak); + +#endif /* SECP256K1_ECKEY_H */ diff --git a/Pods/secp256k1_ios/secp256k1_ios/src/eckey_impl.h b/Pods/secp256k1_ios/secp256k1_ios/src/eckey_impl.h new file mode 100644 index 00000000..1ab9a68e --- /dev/null +++ b/Pods/secp256k1_ios/secp256k1_ios/src/eckey_impl.h @@ -0,0 +1,100 @@ +/********************************************************************** + * Copyright (c) 2013, 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef SECP256K1_ECKEY_IMPL_H +#define SECP256K1_ECKEY_IMPL_H + +#include "eckey.h" + +#include "scalar.h" +#include "field.h" +#include "group.h" +#include "ecmult_gen.h" + +static int secp256k1_eckey_pubkey_parse(secp256k1_ge *elem, const unsigned char *pub, size_t size) { + if (size == 33 && (pub[0] == SECP256K1_TAG_PUBKEY_EVEN || pub[0] == SECP256K1_TAG_PUBKEY_ODD)) { + secp256k1_fe x; + return secp256k1_fe_set_b32(&x, pub+1) && secp256k1_ge_set_xo_var(elem, &x, pub[0] == SECP256K1_TAG_PUBKEY_ODD); + } else if (size == 65 && (pub[0] == 0x04 || pub[0] == 0x06 || pub[0] == 0x07)) { + secp256k1_fe x, y; + if (!secp256k1_fe_set_b32(&x, pub+1) || !secp256k1_fe_set_b32(&y, pub+33)) { + return 0; + } + secp256k1_ge_set_xy(elem, &x, &y); + if ((pub[0] == SECP256K1_TAG_PUBKEY_HYBRID_EVEN || pub[0] == SECP256K1_TAG_PUBKEY_HYBRID_ODD) && + secp256k1_fe_is_odd(&y) != (pub[0] == SECP256K1_TAG_PUBKEY_HYBRID_ODD)) { + return 0; + } + return secp256k1_ge_is_valid_var(elem); + } else { + return 0; + } +} + +static int secp256k1_eckey_pubkey_serialize(secp256k1_ge *elem, unsigned char *pub, size_t *size, int compressed) { + if (secp256k1_ge_is_infinity(elem)) { + return 0; + } + secp256k1_fe_normalize_var(&elem->x); + secp256k1_fe_normalize_var(&elem->y); + secp256k1_fe_get_b32(&pub[1], &elem->x); + if (compressed) { + *size = 33; + pub[0] = secp256k1_fe_is_odd(&elem->y) ? SECP256K1_TAG_PUBKEY_ODD : SECP256K1_TAG_PUBKEY_EVEN; + } else { + *size = 65; + pub[0] = SECP256K1_TAG_PUBKEY_UNCOMPRESSED; + secp256k1_fe_get_b32(&pub[33], &elem->y); + } + return 1; +} + +static int secp256k1_eckey_privkey_tweak_add(secp256k1_scalar *key, const secp256k1_scalar *tweak) { + secp256k1_scalar_add(key, key, tweak); + if (secp256k1_scalar_is_zero(key)) { + return 0; + } + return 1; +} + +static int secp256k1_eckey_pubkey_tweak_add(const secp256k1_ecmult_context *ctx, secp256k1_ge *key, const secp256k1_scalar *tweak) { + secp256k1_gej pt; + secp256k1_scalar one; + secp256k1_gej_set_ge(&pt, key); + secp256k1_scalar_set_int(&one, 1); + secp256k1_ecmult(ctx, &pt, &pt, &one, tweak); + + if (secp256k1_gej_is_infinity(&pt)) { + return 0; + } + secp256k1_ge_set_gej(key, &pt); + return 1; +} + +static int secp256k1_eckey_privkey_tweak_mul(secp256k1_scalar *key, const secp256k1_scalar *tweak) { + if (secp256k1_scalar_is_zero(tweak)) { + return 0; + } + + secp256k1_scalar_mul(key, key, tweak); + return 1; +} + +static int secp256k1_eckey_pubkey_tweak_mul(const secp256k1_ecmult_context *ctx, secp256k1_ge *key, const secp256k1_scalar *tweak) { + secp256k1_scalar zero; + secp256k1_gej pt; + if (secp256k1_scalar_is_zero(tweak)) { + return 0; + } + + secp256k1_scalar_set_int(&zero, 0); + secp256k1_gej_set_ge(&pt, key); + secp256k1_ecmult(ctx, &pt, &pt, tweak, &zero); + secp256k1_ge_set_gej(key, &pt); + return 1; +} + +#endif /* SECP256K1_ECKEY_IMPL_H */ diff --git a/Pods/secp256k1_ios/secp256k1_ios/src/ecmult.h b/Pods/secp256k1_ios/secp256k1_ios/src/ecmult.h new file mode 100644 index 00000000..6d44aba6 --- /dev/null +++ b/Pods/secp256k1_ios/secp256k1_ios/src/ecmult.h @@ -0,0 +1,31 @@ +/********************************************************************** + * Copyright (c) 2013, 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef SECP256K1_ECMULT_H +#define SECP256K1_ECMULT_H + +#include "num.h" +#include "group.h" + +typedef struct { + /* For accelerating the computation of a*P + b*G: */ + secp256k1_ge_storage (*pre_g)[]; /* odd multiples of the generator */ +#ifdef USE_ENDOMORPHISM + secp256k1_ge_storage (*pre_g_128)[]; /* odd multiples of 2^128*generator */ +#endif +} secp256k1_ecmult_context; + +static void secp256k1_ecmult_context_init(secp256k1_ecmult_context *ctx); +static void secp256k1_ecmult_context_build(secp256k1_ecmult_context *ctx, const secp256k1_callback *cb); +static void secp256k1_ecmult_context_clone(secp256k1_ecmult_context *dst, + const secp256k1_ecmult_context *src, const secp256k1_callback *cb); +static void secp256k1_ecmult_context_clear(secp256k1_ecmult_context *ctx); +static int secp256k1_ecmult_context_is_built(const secp256k1_ecmult_context *ctx); + +/** Double multiply: R = na*A + ng*G */ +static void secp256k1_ecmult(const secp256k1_ecmult_context *ctx, secp256k1_gej *r, const secp256k1_gej *a, const secp256k1_scalar *na, const secp256k1_scalar *ng); + +#endif /* SECP256K1_ECMULT_H */ diff --git a/Pods/secp256k1_ios/secp256k1_ios/src/ecmult_const.h b/Pods/secp256k1_ios/secp256k1_ios/src/ecmult_const.h new file mode 100644 index 00000000..72bf7d75 --- /dev/null +++ b/Pods/secp256k1_ios/secp256k1_ios/src/ecmult_const.h @@ -0,0 +1,15 @@ +/********************************************************************** + * Copyright (c) 2015 Andrew Poelstra * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef SECP256K1_ECMULT_CONST_H +#define SECP256K1_ECMULT_CONST_H + +#include "scalar.h" +#include "group.h" + +static void secp256k1_ecmult_const(secp256k1_gej *r, const secp256k1_ge *a, const secp256k1_scalar *q); + +#endif /* SECP256K1_ECMULT_CONST_H */ diff --git a/Pods/secp256k1_ios/secp256k1_ios/src/ecmult_const_impl.h b/Pods/secp256k1_ios/secp256k1_ios/src/ecmult_const_impl.h new file mode 100644 index 00000000..7d7a172b --- /dev/null +++ b/Pods/secp256k1_ios/secp256k1_ios/src/ecmult_const_impl.h @@ -0,0 +1,240 @@ +/********************************************************************** + * Copyright (c) 2015 Pieter Wuille, Andrew Poelstra * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef SECP256K1_ECMULT_CONST_IMPL_H +#define SECP256K1_ECMULT_CONST_IMPL_H + +#include "scalar.h" +#include "group.h" +#include "ecmult_const.h" +#include "ecmult_impl.h" + +#ifdef USE_ENDOMORPHISM + #define WNAF_BITS 128 +#else + #define WNAF_BITS 256 +#endif +#define WNAF_SIZE(w) ((WNAF_BITS + (w) - 1) / (w)) + +/* This is like `ECMULT_TABLE_GET_GE` but is constant time */ +#define ECMULT_CONST_TABLE_GET_GE(r,pre,n,w) do { \ + int m; \ + int abs_n = (n) * (((n) > 0) * 2 - 1); \ + int idx_n = abs_n / 2; \ + secp256k1_fe neg_y; \ + VERIFY_CHECK(((n) & 1) == 1); \ + VERIFY_CHECK((n) >= -((1 << ((w)-1)) - 1)); \ + VERIFY_CHECK((n) <= ((1 << ((w)-1)) - 1)); \ + VERIFY_SETUP(secp256k1_fe_clear(&(r)->x)); \ + VERIFY_SETUP(secp256k1_fe_clear(&(r)->y)); \ + for (m = 0; m < ECMULT_TABLE_SIZE(w); m++) { \ + /* This loop is used to avoid secret data in array indices. See + * the comment in ecmult_gen_impl.h for rationale. */ \ + secp256k1_fe_cmov(&(r)->x, &(pre)[m].x, m == idx_n); \ + secp256k1_fe_cmov(&(r)->y, &(pre)[m].y, m == idx_n); \ + } \ + (r)->infinity = 0; \ + secp256k1_fe_negate(&neg_y, &(r)->y, 1); \ + secp256k1_fe_cmov(&(r)->y, &neg_y, (n) != abs_n); \ +} while(0) + + +/** Convert a number to WNAF notation. + * The number becomes represented by sum(2^{wi} * wnaf[i], i=0..WNAF_SIZE(w)+1) - return_val. + * It has the following guarantees: + * - each wnaf[i] an odd integer between -(1 << w) and (1 << w) + * - each wnaf[i] is nonzero + * - the number of words set is always WNAF_SIZE(w) + 1 + * + * Adapted from `The Width-w NAF Method Provides Small Memory and Fast Elliptic Scalar + * Multiplications Secure against Side Channel Attacks`, Okeya and Tagaki. M. Joye (Ed.) + * CT-RSA 2003, LNCS 2612, pp. 328-443, 2003. Springer-Verlagy Berlin Heidelberg 2003 + * + * Numbers reference steps of `Algorithm SPA-resistant Width-w NAF with Odd Scalar` on pp. 335 + */ +static int secp256k1_wnaf_const(int *wnaf, secp256k1_scalar s, int w) { + int global_sign; + int skew = 0; + int word = 0; + + /* 1 2 3 */ + int u_last; + int u; + + int flip; + int bit; + secp256k1_scalar neg_s; + int not_neg_one; + /* Note that we cannot handle even numbers by negating them to be odd, as is + * done in other implementations, since if our scalars were specified to have + * width < 256 for performance reasons, their negations would have width 256 + * and we'd lose any performance benefit. Instead, we use a technique from + * Section 4.2 of the Okeya/Tagaki paper, which is to add either 1 (for even) + * or 2 (for odd) to the number we are encoding, returning a skew value indicating + * this, and having the caller compensate after doing the multiplication. */ + + /* Negative numbers will be negated to keep their bit representation below the maximum width */ + flip = secp256k1_scalar_is_high(&s); + /* We add 1 to even numbers, 2 to odd ones, noting that negation flips parity */ + bit = flip ^ !secp256k1_scalar_is_even(&s); + /* We check for negative one, since adding 2 to it will cause an overflow */ + secp256k1_scalar_negate(&neg_s, &s); + not_neg_one = !secp256k1_scalar_is_one(&neg_s); + secp256k1_scalar_cadd_bit(&s, bit, not_neg_one); + /* If we had negative one, flip == 1, s.d[0] == 0, bit == 1, so caller expects + * that we added two to it and flipped it. In fact for -1 these operations are + * identical. We only flipped, but since skewing is required (in the sense that + * the skew must be 1 or 2, never zero) and flipping is not, we need to change + * our flags to claim that we only skewed. */ + global_sign = secp256k1_scalar_cond_negate(&s, flip); + global_sign *= not_neg_one * 2 - 1; + skew = 1 << bit; + + /* 4 */ + u_last = secp256k1_scalar_shr_int(&s, w); + while (word * w < WNAF_BITS) { + int sign; + int even; + + /* 4.1 4.4 */ + u = secp256k1_scalar_shr_int(&s, w); + /* 4.2 */ + even = ((u & 1) == 0); + sign = 2 * (u_last > 0) - 1; + u += sign * even; + u_last -= sign * even * (1 << w); + + /* 4.3, adapted for global sign change */ + wnaf[word++] = u_last * global_sign; + + u_last = u; + } + wnaf[word] = u * global_sign; + + VERIFY_CHECK(secp256k1_scalar_is_zero(&s)); + VERIFY_CHECK(word == WNAF_SIZE(w)); + return skew; +} + + +static void secp256k1_ecmult_const(secp256k1_gej *r, const secp256k1_ge *a, const secp256k1_scalar *scalar) { + secp256k1_ge pre_a[ECMULT_TABLE_SIZE(WINDOW_A)]; + secp256k1_ge tmpa; + secp256k1_fe Z; + + int skew_1; + int wnaf_1[1 + WNAF_SIZE(WINDOW_A - 1)]; +#ifdef USE_ENDOMORPHISM + secp256k1_ge pre_a_lam[ECMULT_TABLE_SIZE(WINDOW_A)]; + int wnaf_lam[1 + WNAF_SIZE(WINDOW_A - 1)]; + int skew_lam; + secp256k1_scalar q_1, q_lam; +#endif + + int i; + secp256k1_scalar sc = *scalar; + + /* build wnaf representation for q. */ +#ifdef USE_ENDOMORPHISM + /* split q into q_1 and q_lam (where q = q_1 + q_lam*lambda, and q_1 and q_lam are ~128 bit) */ + secp256k1_scalar_split_lambda(&q_1, &q_lam, &sc); + skew_1 = secp256k1_wnaf_const(wnaf_1, q_1, WINDOW_A - 1); + skew_lam = secp256k1_wnaf_const(wnaf_lam, q_lam, WINDOW_A - 1); +#else + skew_1 = secp256k1_wnaf_const(wnaf_1, sc, WINDOW_A - 1); +#endif + + /* Calculate odd multiples of a. + * All multiples are brought to the same Z 'denominator', which is stored + * in Z. Due to secp256k1' isomorphism we can do all operations pretending + * that the Z coordinate was 1, use affine addition formulae, and correct + * the Z coordinate of the result once at the end. + */ + secp256k1_gej_set_ge(r, a); + secp256k1_ecmult_odd_multiples_table_globalz_windowa(pre_a, &Z, r); + for (i = 0; i < ECMULT_TABLE_SIZE(WINDOW_A); i++) { + secp256k1_fe_normalize_weak(&pre_a[i].y); + } +#ifdef USE_ENDOMORPHISM + for (i = 0; i < ECMULT_TABLE_SIZE(WINDOW_A); i++) { + secp256k1_ge_mul_lambda(&pre_a_lam[i], &pre_a[i]); + } +#endif + + /* first loop iteration (separated out so we can directly set r, rather + * than having it start at infinity, get doubled several times, then have + * its new value added to it) */ + i = wnaf_1[WNAF_SIZE(WINDOW_A - 1)]; + VERIFY_CHECK(i != 0); + ECMULT_CONST_TABLE_GET_GE(&tmpa, pre_a, i, WINDOW_A); + secp256k1_gej_set_ge(r, &tmpa); +#ifdef USE_ENDOMORPHISM + i = wnaf_lam[WNAF_SIZE(WINDOW_A - 1)]; + VERIFY_CHECK(i != 0); + ECMULT_CONST_TABLE_GET_GE(&tmpa, pre_a_lam, i, WINDOW_A); + secp256k1_gej_add_ge(r, r, &tmpa); +#endif + /* remaining loop iterations */ + for (i = WNAF_SIZE(WINDOW_A - 1) - 1; i >= 0; i--) { + int n; + int j; + for (j = 0; j < WINDOW_A - 1; ++j) { + secp256k1_gej_double_nonzero(r, r, NULL); + } + + n = wnaf_1[i]; + ECMULT_CONST_TABLE_GET_GE(&tmpa, pre_a, n, WINDOW_A); + VERIFY_CHECK(n != 0); + secp256k1_gej_add_ge(r, r, &tmpa); +#ifdef USE_ENDOMORPHISM + n = wnaf_lam[i]; + ECMULT_CONST_TABLE_GET_GE(&tmpa, pre_a_lam, n, WINDOW_A); + VERIFY_CHECK(n != 0); + secp256k1_gej_add_ge(r, r, &tmpa); +#endif + } + + secp256k1_fe_mul(&r->z, &r->z, &Z); + + { + /* Correct for wNAF skew */ + secp256k1_ge correction = *a; + secp256k1_ge_storage correction_1_stor; +#ifdef USE_ENDOMORPHISM + secp256k1_ge_storage correction_lam_stor; +#endif + secp256k1_ge_storage a2_stor; + secp256k1_gej tmpj; + secp256k1_gej_set_ge(&tmpj, &correction); + secp256k1_gej_double_var(&tmpj, &tmpj, NULL); + secp256k1_ge_set_gej(&correction, &tmpj); + secp256k1_ge_to_storage(&correction_1_stor, a); +#ifdef USE_ENDOMORPHISM + secp256k1_ge_to_storage(&correction_lam_stor, a); +#endif + secp256k1_ge_to_storage(&a2_stor, &correction); + + /* For odd numbers this is 2a (so replace it), for even ones a (so no-op) */ + secp256k1_ge_storage_cmov(&correction_1_stor, &a2_stor, skew_1 == 2); +#ifdef USE_ENDOMORPHISM + secp256k1_ge_storage_cmov(&correction_lam_stor, &a2_stor, skew_lam == 2); +#endif + + /* Apply the correction */ + secp256k1_ge_from_storage(&correction, &correction_1_stor); + secp256k1_ge_neg(&correction, &correction); + secp256k1_gej_add_ge(r, r, &correction); + +#ifdef USE_ENDOMORPHISM + secp256k1_ge_from_storage(&correction, &correction_lam_stor); + secp256k1_ge_neg(&correction, &correction); + secp256k1_ge_mul_lambda(&correction, &correction); + secp256k1_gej_add_ge(r, r, &correction); +#endif + } +} + +#endif /* SECP256K1_ECMULT_CONST_IMPL_H */ diff --git a/Pods/secp256k1_ios/secp256k1_ios/src/ecmult_gen.h b/Pods/secp256k1_ios/secp256k1_ios/src/ecmult_gen.h new file mode 100644 index 00000000..7564b701 --- /dev/null +++ b/Pods/secp256k1_ios/secp256k1_ios/src/ecmult_gen.h @@ -0,0 +1,43 @@ +/********************************************************************** + * Copyright (c) 2013, 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef SECP256K1_ECMULT_GEN_H +#define SECP256K1_ECMULT_GEN_H + +#include "scalar.h" +#include "group.h" + +typedef struct { + /* For accelerating the computation of a*G: + * To harden against timing attacks, use the following mechanism: + * * Break up the multiplicand into groups of 4 bits, called n_0, n_1, n_2, ..., n_63. + * * Compute sum(n_i * 16^i * G + U_i, i=0..63), where: + * * U_i = U * 2^i (for i=0..62) + * * U_i = U * (1-2^63) (for i=63) + * where U is a point with no known corresponding scalar. Note that sum(U_i, i=0..63) = 0. + * For each i, and each of the 16 possible values of n_i, (n_i * 16^i * G + U_i) is + * precomputed (call it prec(i, n_i)). The formula now becomes sum(prec(i, n_i), i=0..63). + * None of the resulting prec group elements have a known scalar, and neither do any of + * the intermediate sums while computing a*G. + */ + secp256k1_ge_storage (*prec)[64][16]; /* prec[j][i] = 16^j * i * G + U_i */ + secp256k1_scalar blind; + secp256k1_gej initial; +} secp256k1_ecmult_gen_context; + +static void secp256k1_ecmult_gen_context_init(secp256k1_ecmult_gen_context* ctx); +static void secp256k1_ecmult_gen_context_build(secp256k1_ecmult_gen_context* ctx, const secp256k1_callback* cb); +static void secp256k1_ecmult_gen_context_clone(secp256k1_ecmult_gen_context *dst, + const secp256k1_ecmult_gen_context* src, const secp256k1_callback* cb); +static void secp256k1_ecmult_gen_context_clear(secp256k1_ecmult_gen_context* ctx); +static int secp256k1_ecmult_gen_context_is_built(const secp256k1_ecmult_gen_context* ctx); + +/** Multiply with the generator: R = a*G */ +static void secp256k1_ecmult_gen(const secp256k1_ecmult_gen_context* ctx, secp256k1_gej *r, const secp256k1_scalar *a); + +static void secp256k1_ecmult_gen_blind(secp256k1_ecmult_gen_context *ctx, const unsigned char *seed32); + +#endif /* SECP256K1_ECMULT_GEN_H */ diff --git a/Pods/secp256k1_ios/secp256k1_ios/src/ecmult_gen_impl.h b/Pods/secp256k1_ios/secp256k1_ios/src/ecmult_gen_impl.h new file mode 100644 index 00000000..714f02e9 --- /dev/null +++ b/Pods/secp256k1_ios/secp256k1_ios/src/ecmult_gen_impl.h @@ -0,0 +1,210 @@ +/********************************************************************** + * Copyright (c) 2013, 2014, 2015 Pieter Wuille, Gregory Maxwell * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef SECP256K1_ECMULT_GEN_IMPL_H +#define SECP256K1_ECMULT_GEN_IMPL_H + +#include "scalar.h" +#include "group.h" +#include "ecmult_gen.h" +#include "hash_impl.h" +#ifdef USE_ECMULT_STATIC_PRECOMPUTATION +#include "ecmult_static_context.h" +#endif +static void secp256k1_ecmult_gen_context_init(secp256k1_ecmult_gen_context *ctx) { + ctx->prec = NULL; +} + +static void secp256k1_ecmult_gen_context_build(secp256k1_ecmult_gen_context *ctx, const secp256k1_callback* cb) { +#ifndef USE_ECMULT_STATIC_PRECOMPUTATION + secp256k1_ge prec[1024]; + secp256k1_gej gj; + secp256k1_gej nums_gej; + int i, j; +#endif + + if (ctx->prec != NULL) { + return; + } +#ifndef USE_ECMULT_STATIC_PRECOMPUTATION + ctx->prec = (secp256k1_ge_storage (*)[64][16])checked_malloc(cb, sizeof(*ctx->prec)); + + /* get the generator */ + secp256k1_gej_set_ge(&gj, &secp256k1_ge_const_g); + + /* Construct a group element with no known corresponding scalar (nothing up my sleeve). */ + { + static const unsigned char nums_b32[33] = "The scalar for this x is unknown"; + secp256k1_fe nums_x; + secp256k1_ge nums_ge; + int r; + r = secp256k1_fe_set_b32(&nums_x, nums_b32); + (void)r; + VERIFY_CHECK(r); + r = secp256k1_ge_set_xo_var(&nums_ge, &nums_x, 0); + (void)r; + VERIFY_CHECK(r); + secp256k1_gej_set_ge(&nums_gej, &nums_ge); + /* Add G to make the bits in x uniformly distributed. */ + secp256k1_gej_add_ge_var(&nums_gej, &nums_gej, &secp256k1_ge_const_g, NULL); + } + + /* compute prec. */ + { + secp256k1_gej precj[1024]; /* Jacobian versions of prec. */ + secp256k1_gej gbase; + secp256k1_gej numsbase; + gbase = gj; /* 16^j * G */ + numsbase = nums_gej; /* 2^j * nums. */ + for (j = 0; j < 64; j++) { + /* Set precj[j*16 .. j*16+15] to (numsbase, numsbase + gbase, ..., numsbase + 15*gbase). */ + precj[j*16] = numsbase; + for (i = 1; i < 16; i++) { + secp256k1_gej_add_var(&precj[j*16 + i], &precj[j*16 + i - 1], &gbase, NULL); + } + /* Multiply gbase by 16. */ + for (i = 0; i < 4; i++) { + secp256k1_gej_double_var(&gbase, &gbase, NULL); + } + /* Multiply numbase by 2. */ + secp256k1_gej_double_var(&numsbase, &numsbase, NULL); + if (j == 62) { + /* In the last iteration, numsbase is (1 - 2^j) * nums instead. */ + secp256k1_gej_neg(&numsbase, &numsbase); + secp256k1_gej_add_var(&numsbase, &numsbase, &nums_gej, NULL); + } + } + secp256k1_ge_set_all_gej_var(prec, precj, 1024, cb); + } + for (j = 0; j < 64; j++) { + for (i = 0; i < 16; i++) { + secp256k1_ge_to_storage(&(*ctx->prec)[j][i], &prec[j*16 + i]); + } + } +#else + (void)cb; + ctx->prec = (secp256k1_ge_storage (*)[64][16])secp256k1_ecmult_static_context; +#endif + secp256k1_ecmult_gen_blind(ctx, NULL); +} + +static int secp256k1_ecmult_gen_context_is_built(const secp256k1_ecmult_gen_context* ctx) { + return ctx->prec != NULL; +} + +static void secp256k1_ecmult_gen_context_clone(secp256k1_ecmult_gen_context *dst, + const secp256k1_ecmult_gen_context *src, const secp256k1_callback* cb) { + if (src->prec == NULL) { + dst->prec = NULL; + } else { +#ifndef USE_ECMULT_STATIC_PRECOMPUTATION + dst->prec = (secp256k1_ge_storage (*)[64][16])checked_malloc(cb, sizeof(*dst->prec)); + memcpy(dst->prec, src->prec, sizeof(*dst->prec)); +#else + (void)cb; + dst->prec = src->prec; +#endif + dst->initial = src->initial; + dst->blind = src->blind; + } +} + +static void secp256k1_ecmult_gen_context_clear(secp256k1_ecmult_gen_context *ctx) { +#ifndef USE_ECMULT_STATIC_PRECOMPUTATION + free(ctx->prec); +#endif + secp256k1_scalar_clear(&ctx->blind); + secp256k1_gej_clear(&ctx->initial); + ctx->prec = NULL; +} + +static void secp256k1_ecmult_gen(const secp256k1_ecmult_gen_context *ctx, secp256k1_gej *r, const secp256k1_scalar *gn) { + secp256k1_ge add; + secp256k1_ge_storage adds; + secp256k1_scalar gnb; + int bits; + int i, j; + memset(&adds, 0, sizeof(adds)); + *r = ctx->initial; + /* Blind scalar/point multiplication by computing (n-b)G + bG instead of nG. */ + secp256k1_scalar_add(&gnb, gn, &ctx->blind); + add.infinity = 0; + for (j = 0; j < 64; j++) { + bits = secp256k1_scalar_get_bits(&gnb, j * 4, 4); + for (i = 0; i < 16; i++) { + /** This uses a conditional move to avoid any secret data in array indexes. + * _Any_ use of secret indexes has been demonstrated to result in timing + * sidechannels, even when the cache-line access patterns are uniform. + * See also: + * "A word of warning", CHES 2013 Rump Session, by Daniel J. Bernstein and Peter Schwabe + * (https://cryptojedi.org/peter/data/chesrump-20130822.pdf) and + * "Cache Attacks and Countermeasures: the Case of AES", RSA 2006, + * by Dag Arne Osvik, Adi Shamir, and Eran Tromer + * (http://www.tau.ac.il/~tromer/papers/cache.pdf) + */ + secp256k1_ge_storage_cmov(&adds, &(*ctx->prec)[j][i], i == bits); + } + secp256k1_ge_from_storage(&add, &adds); + secp256k1_gej_add_ge(r, r, &add); + } + bits = 0; + secp256k1_ge_clear(&add); + secp256k1_scalar_clear(&gnb); +} + +/* Setup blinding values for secp256k1_ecmult_gen. */ +static void secp256k1_ecmult_gen_blind(secp256k1_ecmult_gen_context *ctx, const unsigned char *seed32) { + secp256k1_scalar b; + secp256k1_gej gb; + secp256k1_fe s; + unsigned char nonce32[32]; + secp256k1_rfc6979_hmac_sha256 rng; + int retry; + unsigned char keydata[64] = {0}; + if (seed32 == NULL) { + /* When seed is NULL, reset the initial point and blinding value. */ + secp256k1_gej_set_ge(&ctx->initial, &secp256k1_ge_const_g); + secp256k1_gej_neg(&ctx->initial, &ctx->initial); + secp256k1_scalar_set_int(&ctx->blind, 1); + } + /* The prior blinding value (if not reset) is chained forward by including it in the hash. */ + secp256k1_scalar_get_b32(nonce32, &ctx->blind); + /** Using a CSPRNG allows a failure free interface, avoids needing large amounts of random data, + * and guards against weak or adversarial seeds. This is a simpler and safer interface than + * asking the caller for blinding values directly and expecting them to retry on failure. + */ + memcpy(keydata, nonce32, 32); + if (seed32 != NULL) { + memcpy(keydata + 32, seed32, 32); + } + secp256k1_rfc6979_hmac_sha256_initialize(&rng, keydata, seed32 ? 64 : 32); + memset(keydata, 0, sizeof(keydata)); + /* Retry for out of range results to achieve uniformity. */ + do { + secp256k1_rfc6979_hmac_sha256_generate(&rng, nonce32, 32); + retry = !secp256k1_fe_set_b32(&s, nonce32); + retry |= secp256k1_fe_is_zero(&s); + } while (retry); /* This branch true is cryptographically unreachable. Requires sha256_hmac output > Fp. */ + /* Randomize the projection to defend against multiplier sidechannels. */ + secp256k1_gej_rescale(&ctx->initial, &s); + secp256k1_fe_clear(&s); + do { + secp256k1_rfc6979_hmac_sha256_generate(&rng, nonce32, 32); + secp256k1_scalar_set_b32(&b, nonce32, &retry); + /* A blinding value of 0 works, but would undermine the projection hardening. */ + retry |= secp256k1_scalar_is_zero(&b); + } while (retry); /* This branch true is cryptographically unreachable. Requires sha256_hmac output > order. */ + secp256k1_rfc6979_hmac_sha256_finalize(&rng); + memset(nonce32, 0, 32); + secp256k1_ecmult_gen(ctx, &gb, &b); + secp256k1_scalar_negate(&b, &b); + ctx->blind = b; + ctx->initial = gb; + secp256k1_scalar_clear(&b); + secp256k1_gej_clear(&gb); +} + +#endif /* SECP256K1_ECMULT_GEN_IMPL_H */ diff --git a/Pods/secp256k1_ios/secp256k1_ios/src/ecmult_impl.h b/Pods/secp256k1_ios/secp256k1_ios/src/ecmult_impl.h new file mode 100644 index 00000000..93d3794c --- /dev/null +++ b/Pods/secp256k1_ios/secp256k1_ios/src/ecmult_impl.h @@ -0,0 +1,406 @@ +/********************************************************************** + * Copyright (c) 2013, 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef SECP256K1_ECMULT_IMPL_H +#define SECP256K1_ECMULT_IMPL_H + +#include + +#include "group.h" +#include "scalar.h" +#include "ecmult.h" + +#if defined(EXHAUSTIVE_TEST_ORDER) +/* We need to lower these values for exhaustive tests because + * the tables cannot have infinities in them (this breaks the + * affine-isomorphism stuff which tracks z-ratios) */ +# if EXHAUSTIVE_TEST_ORDER > 128 +# define WINDOW_A 5 +# define WINDOW_G 8 +# elif EXHAUSTIVE_TEST_ORDER > 8 +# define WINDOW_A 4 +# define WINDOW_G 4 +# else +# define WINDOW_A 2 +# define WINDOW_G 2 +# endif +#else +/* optimal for 128-bit and 256-bit exponents. */ +#define WINDOW_A 5 +/** larger numbers may result in slightly better performance, at the cost of + exponentially larger precomputed tables. */ +#ifdef USE_ENDOMORPHISM +/** Two tables for window size 15: 1.375 MiB. */ +#define WINDOW_G 15 +#else +/** One table for window size 16: 1.375 MiB. */ +#define WINDOW_G 16 +#endif +#endif + +/** The number of entries a table with precomputed multiples needs to have. */ +#define ECMULT_TABLE_SIZE(w) (1 << ((w)-2)) + +/** Fill a table 'prej' with precomputed odd multiples of a. Prej will contain + * the values [1*a,3*a,...,(2*n-1)*a], so it space for n values. zr[0] will + * contain prej[0].z / a.z. The other zr[i] values = prej[i].z / prej[i-1].z. + * Prej's Z values are undefined, except for the last value. + */ +static void secp256k1_ecmult_odd_multiples_table(int n, secp256k1_gej *prej, secp256k1_fe *zr, const secp256k1_gej *a) { + secp256k1_gej d; + secp256k1_ge a_ge, d_ge; + int i; + + VERIFY_CHECK(!a->infinity); + + secp256k1_gej_double_var(&d, a, NULL); + + /* + * Perform the additions on an isomorphism where 'd' is affine: drop the z coordinate + * of 'd', and scale the 1P starting value's x/y coordinates without changing its z. + */ + d_ge.x = d.x; + d_ge.y = d.y; + d_ge.infinity = 0; + + secp256k1_ge_set_gej_zinv(&a_ge, a, &d.z); + prej[0].x = a_ge.x; + prej[0].y = a_ge.y; + prej[0].z = a->z; + prej[0].infinity = 0; + + zr[0] = d.z; + for (i = 1; i < n; i++) { + secp256k1_gej_add_ge_var(&prej[i], &prej[i-1], &d_ge, &zr[i]); + } + + /* + * Each point in 'prej' has a z coordinate too small by a factor of 'd.z'. Only + * the final point's z coordinate is actually used though, so just update that. + */ + secp256k1_fe_mul(&prej[n-1].z, &prej[n-1].z, &d.z); +} + +/** Fill a table 'pre' with precomputed odd multiples of a. + * + * There are two versions of this function: + * - secp256k1_ecmult_odd_multiples_table_globalz_windowa which brings its + * resulting point set to a single constant Z denominator, stores the X and Y + * coordinates as ge_storage points in pre, and stores the global Z in rz. + * It only operates on tables sized for WINDOW_A wnaf multiples. + * - secp256k1_ecmult_odd_multiples_table_storage_var, which converts its + * resulting point set to actually affine points, and stores those in pre. + * It operates on tables of any size, but uses heap-allocated temporaries. + * + * To compute a*P + b*G, we compute a table for P using the first function, + * and for G using the second (which requires an inverse, but it only needs to + * happen once). + */ +static void secp256k1_ecmult_odd_multiples_table_globalz_windowa(secp256k1_ge *pre, secp256k1_fe *globalz, const secp256k1_gej *a) { + secp256k1_gej prej[ECMULT_TABLE_SIZE(WINDOW_A)]; + secp256k1_fe zr[ECMULT_TABLE_SIZE(WINDOW_A)]; + + /* Compute the odd multiples in Jacobian form. */ + secp256k1_ecmult_odd_multiples_table(ECMULT_TABLE_SIZE(WINDOW_A), prej, zr, a); + /* Bring them to the same Z denominator. */ + secp256k1_ge_globalz_set_table_gej(ECMULT_TABLE_SIZE(WINDOW_A), pre, globalz, prej, zr); +} + +static void secp256k1_ecmult_odd_multiples_table_storage_var(int n, secp256k1_ge_storage *pre, const secp256k1_gej *a, const secp256k1_callback *cb) { + secp256k1_gej *prej = (secp256k1_gej*)checked_malloc(cb, sizeof(secp256k1_gej) * n); + secp256k1_ge *prea = (secp256k1_ge*)checked_malloc(cb, sizeof(secp256k1_ge) * n); + secp256k1_fe *zr = (secp256k1_fe*)checked_malloc(cb, sizeof(secp256k1_fe) * n); + int i; + + /* Compute the odd multiples in Jacobian form. */ + secp256k1_ecmult_odd_multiples_table(n, prej, zr, a); + /* Convert them in batch to affine coordinates. */ + secp256k1_ge_set_table_gej_var(prea, prej, zr, n); + /* Convert them to compact storage form. */ + for (i = 0; i < n; i++) { + secp256k1_ge_to_storage(&pre[i], &prea[i]); + } + + free(prea); + free(prej); + free(zr); +} + +/** The following two macro retrieves a particular odd multiple from a table + * of precomputed multiples. */ +#define ECMULT_TABLE_GET_GE(r,pre,n,w) do { \ + VERIFY_CHECK(((n) & 1) == 1); \ + VERIFY_CHECK((n) >= -((1 << ((w)-1)) - 1)); \ + VERIFY_CHECK((n) <= ((1 << ((w)-1)) - 1)); \ + if ((n) > 0) { \ + *(r) = (pre)[((n)-1)/2]; \ + } else { \ + secp256k1_ge_neg((r), &(pre)[(-(n)-1)/2]); \ + } \ +} while(0) + +#define ECMULT_TABLE_GET_GE_STORAGE(r,pre,n,w) do { \ + VERIFY_CHECK(((n) & 1) == 1); \ + VERIFY_CHECK((n) >= -((1 << ((w)-1)) - 1)); \ + VERIFY_CHECK((n) <= ((1 << ((w)-1)) - 1)); \ + if ((n) > 0) { \ + secp256k1_ge_from_storage((r), &(pre)[((n)-1)/2]); \ + } else { \ + secp256k1_ge_from_storage((r), &(pre)[(-(n)-1)/2]); \ + secp256k1_ge_neg((r), (r)); \ + } \ +} while(0) + +static void secp256k1_ecmult_context_init(secp256k1_ecmult_context *ctx) { + ctx->pre_g = NULL; +#ifdef USE_ENDOMORPHISM + ctx->pre_g_128 = NULL; +#endif +} + +static void secp256k1_ecmult_context_build(secp256k1_ecmult_context *ctx, const secp256k1_callback *cb) { + secp256k1_gej gj; + + if (ctx->pre_g != NULL) { + return; + } + + /* get the generator */ + secp256k1_gej_set_ge(&gj, &secp256k1_ge_const_g); + + ctx->pre_g = (secp256k1_ge_storage (*)[])checked_malloc(cb, sizeof((*ctx->pre_g)[0]) * ECMULT_TABLE_SIZE(WINDOW_G)); + + /* precompute the tables with odd multiples */ + secp256k1_ecmult_odd_multiples_table_storage_var(ECMULT_TABLE_SIZE(WINDOW_G), *ctx->pre_g, &gj, cb); + +#ifdef USE_ENDOMORPHISM + { + secp256k1_gej g_128j; + int i; + + ctx->pre_g_128 = (secp256k1_ge_storage (*)[])checked_malloc(cb, sizeof((*ctx->pre_g_128)[0]) * ECMULT_TABLE_SIZE(WINDOW_G)); + + /* calculate 2^128*generator */ + g_128j = gj; + for (i = 0; i < 128; i++) { + secp256k1_gej_double_var(&g_128j, &g_128j, NULL); + } + secp256k1_ecmult_odd_multiples_table_storage_var(ECMULT_TABLE_SIZE(WINDOW_G), *ctx->pre_g_128, &g_128j, cb); + } +#endif +} + +static void secp256k1_ecmult_context_clone(secp256k1_ecmult_context *dst, + const secp256k1_ecmult_context *src, const secp256k1_callback *cb) { + if (src->pre_g == NULL) { + dst->pre_g = NULL; + } else { + size_t size = sizeof((*dst->pre_g)[0]) * ECMULT_TABLE_SIZE(WINDOW_G); + dst->pre_g = (secp256k1_ge_storage (*)[])checked_malloc(cb, size); + memcpy(dst->pre_g, src->pre_g, size); + } +#ifdef USE_ENDOMORPHISM + if (src->pre_g_128 == NULL) { + dst->pre_g_128 = NULL; + } else { + size_t size = sizeof((*dst->pre_g_128)[0]) * ECMULT_TABLE_SIZE(WINDOW_G); + dst->pre_g_128 = (secp256k1_ge_storage (*)[])checked_malloc(cb, size); + memcpy(dst->pre_g_128, src->pre_g_128, size); + } +#endif +} + +static int secp256k1_ecmult_context_is_built(const secp256k1_ecmult_context *ctx) { + return ctx->pre_g != NULL; +} + +static void secp256k1_ecmult_context_clear(secp256k1_ecmult_context *ctx) { + free(ctx->pre_g); +#ifdef USE_ENDOMORPHISM + free(ctx->pre_g_128); +#endif + secp256k1_ecmult_context_init(ctx); +} + +/** Convert a number to WNAF notation. The number becomes represented by sum(2^i * wnaf[i], i=0..bits), + * with the following guarantees: + * - each wnaf[i] is either 0, or an odd integer between -(1<<(w-1) - 1) and (1<<(w-1) - 1) + * - two non-zero entries in wnaf are separated by at least w-1 zeroes. + * - the number of set values in wnaf is returned. This number is at most 256, and at most one more + * than the number of bits in the (absolute value) of the input. + */ +static int secp256k1_ecmult_wnaf(int *wnaf, int len, const secp256k1_scalar *a, int w) { + secp256k1_scalar s = *a; + int last_set_bit = -1; + int bit = 0; + int sign = 1; + int carry = 0; + + VERIFY_CHECK(wnaf != NULL); + VERIFY_CHECK(0 <= len && len <= 256); + VERIFY_CHECK(a != NULL); + VERIFY_CHECK(2 <= w && w <= 31); + + memset(wnaf, 0, len * sizeof(wnaf[0])); + + if (secp256k1_scalar_get_bits(&s, 255, 1)) { + secp256k1_scalar_negate(&s, &s); + sign = -1; + } + + while (bit < len) { + int now; + int word; + if (secp256k1_scalar_get_bits(&s, bit, 1) == (unsigned int)carry) { + bit++; + continue; + } + + now = w; + if (now > len - bit) { + now = len - bit; + } + + word = secp256k1_scalar_get_bits_var(&s, bit, now) + carry; + + carry = (word >> (w-1)) & 1; + word -= carry << w; + + wnaf[bit] = sign * word; + last_set_bit = bit; + + bit += now; + } +#ifdef VERIFY + CHECK(carry == 0); + while (bit < 256) { + CHECK(secp256k1_scalar_get_bits(&s, bit++, 1) == 0); + } +#endif + return last_set_bit + 1; +} + +static void secp256k1_ecmult(const secp256k1_ecmult_context *ctx, secp256k1_gej *r, const secp256k1_gej *a, const secp256k1_scalar *na, const secp256k1_scalar *ng) { + secp256k1_ge pre_a[ECMULT_TABLE_SIZE(WINDOW_A)]; + secp256k1_ge tmpa; + secp256k1_fe Z; +#ifdef USE_ENDOMORPHISM + secp256k1_ge pre_a_lam[ECMULT_TABLE_SIZE(WINDOW_A)]; + secp256k1_scalar na_1, na_lam; + /* Splitted G factors. */ + secp256k1_scalar ng_1, ng_128; + int wnaf_na_1[130]; + int wnaf_na_lam[130]; + int bits_na_1; + int bits_na_lam; + int wnaf_ng_1[129]; + int bits_ng_1; + int wnaf_ng_128[129]; + int bits_ng_128; +#else + int wnaf_na[256]; + int bits_na; + int wnaf_ng[256]; + int bits_ng; +#endif + int i; + int bits; + +#ifdef USE_ENDOMORPHISM + /* split na into na_1 and na_lam (where na = na_1 + na_lam*lambda, and na_1 and na_lam are ~128 bit) */ + secp256k1_scalar_split_lambda(&na_1, &na_lam, na); + + /* build wnaf representation for na_1 and na_lam. */ + bits_na_1 = secp256k1_ecmult_wnaf(wnaf_na_1, 130, &na_1, WINDOW_A); + bits_na_lam = secp256k1_ecmult_wnaf(wnaf_na_lam, 130, &na_lam, WINDOW_A); + VERIFY_CHECK(bits_na_1 <= 130); + VERIFY_CHECK(bits_na_lam <= 130); + bits = bits_na_1; + if (bits_na_lam > bits) { + bits = bits_na_lam; + } +#else + /* build wnaf representation for na. */ + bits_na = secp256k1_ecmult_wnaf(wnaf_na, 256, na, WINDOW_A); + bits = bits_na; +#endif + + /* Calculate odd multiples of a. + * All multiples are brought to the same Z 'denominator', which is stored + * in Z. Due to secp256k1' isomorphism we can do all operations pretending + * that the Z coordinate was 1, use affine addition formulae, and correct + * the Z coordinate of the result once at the end. + * The exception is the precomputed G table points, which are actually + * affine. Compared to the base used for other points, they have a Z ratio + * of 1/Z, so we can use secp256k1_gej_add_zinv_var, which uses the same + * isomorphism to efficiently add with a known Z inverse. + */ + secp256k1_ecmult_odd_multiples_table_globalz_windowa(pre_a, &Z, a); + +#ifdef USE_ENDOMORPHISM + for (i = 0; i < ECMULT_TABLE_SIZE(WINDOW_A); i++) { + secp256k1_ge_mul_lambda(&pre_a_lam[i], &pre_a[i]); + } + + /* split ng into ng_1 and ng_128 (where gn = gn_1 + gn_128*2^128, and gn_1 and gn_128 are ~128 bit) */ + secp256k1_scalar_split_128(&ng_1, &ng_128, ng); + + /* Build wnaf representation for ng_1 and ng_128 */ + bits_ng_1 = secp256k1_ecmult_wnaf(wnaf_ng_1, 129, &ng_1, WINDOW_G); + bits_ng_128 = secp256k1_ecmult_wnaf(wnaf_ng_128, 129, &ng_128, WINDOW_G); + if (bits_ng_1 > bits) { + bits = bits_ng_1; + } + if (bits_ng_128 > bits) { + bits = bits_ng_128; + } +#else + bits_ng = secp256k1_ecmult_wnaf(wnaf_ng, 256, ng, WINDOW_G); + if (bits_ng > bits) { + bits = bits_ng; + } +#endif + + secp256k1_gej_set_infinity(r); + + for (i = bits - 1; i >= 0; i--) { + int n; + secp256k1_gej_double_var(r, r, NULL); +#ifdef USE_ENDOMORPHISM + if (i < bits_na_1 && (n = wnaf_na_1[i])) { + ECMULT_TABLE_GET_GE(&tmpa, pre_a, n, WINDOW_A); + secp256k1_gej_add_ge_var(r, r, &tmpa, NULL); + } + if (i < bits_na_lam && (n = wnaf_na_lam[i])) { + ECMULT_TABLE_GET_GE(&tmpa, pre_a_lam, n, WINDOW_A); + secp256k1_gej_add_ge_var(r, r, &tmpa, NULL); + } + if (i < bits_ng_1 && (n = wnaf_ng_1[i])) { + ECMULT_TABLE_GET_GE_STORAGE(&tmpa, *ctx->pre_g, n, WINDOW_G); + secp256k1_gej_add_zinv_var(r, r, &tmpa, &Z); + } + if (i < bits_ng_128 && (n = wnaf_ng_128[i])) { + ECMULT_TABLE_GET_GE_STORAGE(&tmpa, *ctx->pre_g_128, n, WINDOW_G); + secp256k1_gej_add_zinv_var(r, r, &tmpa, &Z); + } +#else + if (i < bits_na && (n = wnaf_na[i])) { + ECMULT_TABLE_GET_GE(&tmpa, pre_a, n, WINDOW_A); + secp256k1_gej_add_ge_var(r, r, &tmpa, NULL); + } + if (i < bits_ng && (n = wnaf_ng[i])) { + ECMULT_TABLE_GET_GE_STORAGE(&tmpa, *ctx->pre_g, n, WINDOW_G); + secp256k1_gej_add_zinv_var(r, r, &tmpa, &Z); + } +#endif + } + + if (!r->infinity) { + secp256k1_fe_mul(&r->z, &r->z, &Z); + } +} + +#endif /* SECP256K1_ECMULT_IMPL_H */ diff --git a/Pods/secp256k1_ios/secp256k1_ios/src/field.h b/Pods/secp256k1_ios/secp256k1_ios/src/field.h new file mode 100644 index 00000000..bb6692ad --- /dev/null +++ b/Pods/secp256k1_ios/secp256k1_ios/src/field.h @@ -0,0 +1,132 @@ +/********************************************************************** + * Copyright (c) 2013, 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef SECP256K1_FIELD_H +#define SECP256K1_FIELD_H + +/** Field element module. + * + * Field elements can be represented in several ways, but code accessing + * it (and implementations) need to take certain properties into account: + * - Each field element can be normalized or not. + * - Each field element has a magnitude, which represents how far away + * its representation is away from normalization. Normalized elements + * always have a magnitude of 1, but a magnitude of 1 doesn't imply + * normality. + */ + +#if defined HAVE_CONFIG_H +#include "libsecp256k1-config.h" +#endif + +#if defined(USE_FIELD_10X26) +#include "field_10x26.h" +#elif defined(USE_FIELD_5X52) +#include "field_5x52.h" +#else +#error "Please select field implementation" +#endif + +#include "util.h" + +/** Normalize a field element. */ +static void secp256k1_fe_normalize(secp256k1_fe *r); + +/** Weakly normalize a field element: reduce it magnitude to 1, but don't fully normalize. */ +static void secp256k1_fe_normalize_weak(secp256k1_fe *r); + +/** Normalize a field element, without constant-time guarantee. */ +static void secp256k1_fe_normalize_var(secp256k1_fe *r); + +/** Verify whether a field element represents zero i.e. would normalize to a zero value. The field + * implementation may optionally normalize the input, but this should not be relied upon. */ +static int secp256k1_fe_normalizes_to_zero(secp256k1_fe *r); + +/** Verify whether a field element represents zero i.e. would normalize to a zero value. The field + * implementation may optionally normalize the input, but this should not be relied upon. */ +static int secp256k1_fe_normalizes_to_zero_var(secp256k1_fe *r); + +/** Set a field element equal to a small integer. Resulting field element is normalized. */ +static void secp256k1_fe_set_int(secp256k1_fe *r, int a); + +/** Sets a field element equal to zero, initializing all fields. */ +static void secp256k1_fe_clear(secp256k1_fe *a); + +/** Verify whether a field element is zero. Requires the input to be normalized. */ +static int secp256k1_fe_is_zero(const secp256k1_fe *a); + +/** Check the "oddness" of a field element. Requires the input to be normalized. */ +static int secp256k1_fe_is_odd(const secp256k1_fe *a); + +/** Compare two field elements. Requires magnitude-1 inputs. */ +static int secp256k1_fe_equal(const secp256k1_fe *a, const secp256k1_fe *b); + +/** Same as secp256k1_fe_equal, but may be variable time. */ +static int secp256k1_fe_equal_var(const secp256k1_fe *a, const secp256k1_fe *b); + +/** Compare two field elements. Requires both inputs to be normalized */ +static int secp256k1_fe_cmp_var(const secp256k1_fe *a, const secp256k1_fe *b); + +/** Set a field element equal to 32-byte big endian value. If successful, the resulting field element is normalized. */ +static int secp256k1_fe_set_b32(secp256k1_fe *r, const unsigned char *a); + +/** Convert a field element to a 32-byte big endian value. Requires the input to be normalized */ +static void secp256k1_fe_get_b32(unsigned char *r, const secp256k1_fe *a); + +/** Set a field element equal to the additive inverse of another. Takes a maximum magnitude of the input + * as an argument. The magnitude of the output is one higher. */ +static void secp256k1_fe_negate(secp256k1_fe *r, const secp256k1_fe *a, int m); + +/** Multiplies the passed field element with a small integer constant. Multiplies the magnitude by that + * small integer. */ +static void secp256k1_fe_mul_int(secp256k1_fe *r, int a); + +/** Adds a field element to another. The result has the sum of the inputs' magnitudes as magnitude. */ +static void secp256k1_fe_add(secp256k1_fe *r, const secp256k1_fe *a); + +/** Sets a field element to be the product of two others. Requires the inputs' magnitudes to be at most 8. + * The output magnitude is 1 (but not guaranteed to be normalized). */ +static void secp256k1_fe_mul(secp256k1_fe *r, const secp256k1_fe *a, const secp256k1_fe * SECP256K1_RESTRICT b); + +/** Sets a field element to be the square of another. Requires the input's magnitude to be at most 8. + * The output magnitude is 1 (but not guaranteed to be normalized). */ +static void secp256k1_fe_sqr(secp256k1_fe *r, const secp256k1_fe *a); + +/** If a has a square root, it is computed in r and 1 is returned. If a does not + * have a square root, the root of its negation is computed and 0 is returned. + * The input's magnitude can be at most 8. The output magnitude is 1 (but not + * guaranteed to be normalized). The result in r will always be a square + * itself. */ +static int secp256k1_fe_sqrt(secp256k1_fe *r, const secp256k1_fe *a); + +/** Checks whether a field element is a quadratic residue. */ +static int secp256k1_fe_is_quad_var(const secp256k1_fe *a); + +/** Sets a field element to be the (modular) inverse of another. Requires the input's magnitude to be + * at most 8. The output magnitude is 1 (but not guaranteed to be normalized). */ +static void secp256k1_fe_inv(secp256k1_fe *r, const secp256k1_fe *a); + +/** Potentially faster version of secp256k1_fe_inv, without constant-time guarantee. */ +static void secp256k1_fe_inv_var(secp256k1_fe *r, const secp256k1_fe *a); + +/** Calculate the (modular) inverses of a batch of field elements. Requires the inputs' magnitudes to be + * at most 8. The output magnitudes are 1 (but not guaranteed to be normalized). The inputs and + * outputs must not overlap in memory. */ +static void secp256k1_fe_inv_all_var(secp256k1_fe *r, const secp256k1_fe *a, size_t len); + +/** Convert a field element to the storage type. */ +static void secp256k1_fe_to_storage(secp256k1_fe_storage *r, const secp256k1_fe *a); + +/** Convert a field element back from the storage type. */ +static void secp256k1_fe_from_storage(secp256k1_fe *r, const secp256k1_fe_storage *a); + +/** If flag is true, set *r equal to *a; otherwise leave it. Constant-time. */ +static void secp256k1_fe_storage_cmov(secp256k1_fe_storage *r, const secp256k1_fe_storage *a, int flag); + +/** If flag is true, set *r equal to *a; otherwise leave it. Constant-time. */ +static void secp256k1_fe_cmov(secp256k1_fe *r, const secp256k1_fe *a, int flag); + +#endif /* SECP256K1_FIELD_H */ diff --git a/Pods/secp256k1_ios/secp256k1_ios/src/field_10x26.h b/Pods/secp256k1_ios/secp256k1_ios/src/field_10x26.h new file mode 100644 index 00000000..727c5267 --- /dev/null +++ b/Pods/secp256k1_ios/secp256k1_ios/src/field_10x26.h @@ -0,0 +1,48 @@ +/********************************************************************** + * Copyright (c) 2013, 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef SECP256K1_FIELD_REPR_H +#define SECP256K1_FIELD_REPR_H + +#include + +typedef struct { + /* X = sum(i=0..9, elem[i]*2^26) mod n */ + uint32_t n[10]; +#ifdef VERIFY + int magnitude; + int normalized; +#endif +} secp256k1_fe; + +/* Unpacks a constant into a overlapping multi-limbed FE element. */ +#define SECP256K1_FE_CONST_INNER(d7, d6, d5, d4, d3, d2, d1, d0) { \ + (d0) & 0x3FFFFFFUL, \ + (((uint32_t)d0) >> 26) | (((uint32_t)(d1) & 0xFFFFFUL) << 6), \ + (((uint32_t)d1) >> 20) | (((uint32_t)(d2) & 0x3FFFUL) << 12), \ + (((uint32_t)d2) >> 14) | (((uint32_t)(d3) & 0xFFUL) << 18), \ + (((uint32_t)d3) >> 8) | (((uint32_t)(d4) & 0x3UL) << 24), \ + (((uint32_t)d4) >> 2) & 0x3FFFFFFUL, \ + (((uint32_t)d4) >> 28) | (((uint32_t)(d5) & 0x3FFFFFUL) << 4), \ + (((uint32_t)d5) >> 22) | (((uint32_t)(d6) & 0xFFFFUL) << 10), \ + (((uint32_t)d6) >> 16) | (((uint32_t)(d7) & 0x3FFUL) << 16), \ + (((uint32_t)d7) >> 10) \ +} + +#ifdef VERIFY +#define SECP256K1_FE_CONST(d7, d6, d5, d4, d3, d2, d1, d0) {SECP256K1_FE_CONST_INNER((d7), (d6), (d5), (d4), (d3), (d2), (d1), (d0)), 1, 1} +#else +#define SECP256K1_FE_CONST(d7, d6, d5, d4, d3, d2, d1, d0) {SECP256K1_FE_CONST_INNER((d7), (d6), (d5), (d4), (d3), (d2), (d1), (d0))} +#endif + +typedef struct { + uint32_t n[8]; +} secp256k1_fe_storage; + +#define SECP256K1_FE_STORAGE_CONST(d7, d6, d5, d4, d3, d2, d1, d0) {{ (d0), (d1), (d2), (d3), (d4), (d5), (d6), (d7) }} +#define SECP256K1_FE_STORAGE_CONST_GET(d) d.n[7], d.n[6], d.n[5], d.n[4],d.n[3], d.n[2], d.n[1], d.n[0] + +#endif /* SECP256K1_FIELD_REPR_H */ diff --git a/Pods/secp256k1_ios/secp256k1_ios/src/field_10x26_impl.h b/Pods/secp256k1_ios/secp256k1_ios/src/field_10x26_impl.h new file mode 100644 index 00000000..94f8132f --- /dev/null +++ b/Pods/secp256k1_ios/secp256k1_ios/src/field_10x26_impl.h @@ -0,0 +1,1161 @@ +/********************************************************************** + * Copyright (c) 2013, 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef SECP256K1_FIELD_REPR_IMPL_H +#define SECP256K1_FIELD_REPR_IMPL_H + +#include "util.h" +#include "num.h" +#include "field.h" + +#ifdef VERIFY +static void secp256k1_fe_verify(const secp256k1_fe *a) { + const uint32_t *d = a->n; + int m = a->normalized ? 1 : 2 * a->magnitude, r = 1; + r &= (d[0] <= 0x3FFFFFFUL * m); + r &= (d[1] <= 0x3FFFFFFUL * m); + r &= (d[2] <= 0x3FFFFFFUL * m); + r &= (d[3] <= 0x3FFFFFFUL * m); + r &= (d[4] <= 0x3FFFFFFUL * m); + r &= (d[5] <= 0x3FFFFFFUL * m); + r &= (d[6] <= 0x3FFFFFFUL * m); + r &= (d[7] <= 0x3FFFFFFUL * m); + r &= (d[8] <= 0x3FFFFFFUL * m); + r &= (d[9] <= 0x03FFFFFUL * m); + r &= (a->magnitude >= 0); + r &= (a->magnitude <= 32); + if (a->normalized) { + r &= (a->magnitude <= 1); + if (r && (d[9] == 0x03FFFFFUL)) { + uint32_t mid = d[8] & d[7] & d[6] & d[5] & d[4] & d[3] & d[2]; + if (mid == 0x3FFFFFFUL) { + r &= ((d[1] + 0x40UL + ((d[0] + 0x3D1UL) >> 26)) <= 0x3FFFFFFUL); + } + } + } + VERIFY_CHECK(r == 1); +} +#endif + +static void secp256k1_fe_normalize(secp256k1_fe *r) { + uint32_t t0 = r->n[0], t1 = r->n[1], t2 = r->n[2], t3 = r->n[3], t4 = r->n[4], + t5 = r->n[5], t6 = r->n[6], t7 = r->n[7], t8 = r->n[8], t9 = r->n[9]; + + /* Reduce t9 at the start so there will be at most a single carry from the first pass */ + uint32_t m; + uint32_t x = t9 >> 22; t9 &= 0x03FFFFFUL; + + /* The first pass ensures the magnitude is 1, ... */ + t0 += x * 0x3D1UL; t1 += (x << 6); + t1 += (t0 >> 26); t0 &= 0x3FFFFFFUL; + t2 += (t1 >> 26); t1 &= 0x3FFFFFFUL; + t3 += (t2 >> 26); t2 &= 0x3FFFFFFUL; m = t2; + t4 += (t3 >> 26); t3 &= 0x3FFFFFFUL; m &= t3; + t5 += (t4 >> 26); t4 &= 0x3FFFFFFUL; m &= t4; + t6 += (t5 >> 26); t5 &= 0x3FFFFFFUL; m &= t5; + t7 += (t6 >> 26); t6 &= 0x3FFFFFFUL; m &= t6; + t8 += (t7 >> 26); t7 &= 0x3FFFFFFUL; m &= t7; + t9 += (t8 >> 26); t8 &= 0x3FFFFFFUL; m &= t8; + + /* ... except for a possible carry at bit 22 of t9 (i.e. bit 256 of the field element) */ + VERIFY_CHECK(t9 >> 23 == 0); + + /* At most a single final reduction is needed; check if the value is >= the field characteristic */ + x = (t9 >> 22) | ((t9 == 0x03FFFFFUL) & (m == 0x3FFFFFFUL) + & ((t1 + 0x40UL + ((t0 + 0x3D1UL) >> 26)) > 0x3FFFFFFUL)); + + /* Apply the final reduction (for constant-time behaviour, we do it always) */ + t0 += x * 0x3D1UL; t1 += (x << 6); + t1 += (t0 >> 26); t0 &= 0x3FFFFFFUL; + t2 += (t1 >> 26); t1 &= 0x3FFFFFFUL; + t3 += (t2 >> 26); t2 &= 0x3FFFFFFUL; + t4 += (t3 >> 26); t3 &= 0x3FFFFFFUL; + t5 += (t4 >> 26); t4 &= 0x3FFFFFFUL; + t6 += (t5 >> 26); t5 &= 0x3FFFFFFUL; + t7 += (t6 >> 26); t6 &= 0x3FFFFFFUL; + t8 += (t7 >> 26); t7 &= 0x3FFFFFFUL; + t9 += (t8 >> 26); t8 &= 0x3FFFFFFUL; + + /* If t9 didn't carry to bit 22 already, then it should have after any final reduction */ + VERIFY_CHECK(t9 >> 22 == x); + + /* Mask off the possible multiple of 2^256 from the final reduction */ + t9 &= 0x03FFFFFUL; + + r->n[0] = t0; r->n[1] = t1; r->n[2] = t2; r->n[3] = t3; r->n[4] = t4; + r->n[5] = t5; r->n[6] = t6; r->n[7] = t7; r->n[8] = t8; r->n[9] = t9; + +#ifdef VERIFY + r->magnitude = 1; + r->normalized = 1; + secp256k1_fe_verify(r); +#endif +} + +static void secp256k1_fe_normalize_weak(secp256k1_fe *r) { + uint32_t t0 = r->n[0], t1 = r->n[1], t2 = r->n[2], t3 = r->n[3], t4 = r->n[4], + t5 = r->n[5], t6 = r->n[6], t7 = r->n[7], t8 = r->n[8], t9 = r->n[9]; + + /* Reduce t9 at the start so there will be at most a single carry from the first pass */ + uint32_t x = t9 >> 22; t9 &= 0x03FFFFFUL; + + /* The first pass ensures the magnitude is 1, ... */ + t0 += x * 0x3D1UL; t1 += (x << 6); + t1 += (t0 >> 26); t0 &= 0x3FFFFFFUL; + t2 += (t1 >> 26); t1 &= 0x3FFFFFFUL; + t3 += (t2 >> 26); t2 &= 0x3FFFFFFUL; + t4 += (t3 >> 26); t3 &= 0x3FFFFFFUL; + t5 += (t4 >> 26); t4 &= 0x3FFFFFFUL; + t6 += (t5 >> 26); t5 &= 0x3FFFFFFUL; + t7 += (t6 >> 26); t6 &= 0x3FFFFFFUL; + t8 += (t7 >> 26); t7 &= 0x3FFFFFFUL; + t9 += (t8 >> 26); t8 &= 0x3FFFFFFUL; + + /* ... except for a possible carry at bit 22 of t9 (i.e. bit 256 of the field element) */ + VERIFY_CHECK(t9 >> 23 == 0); + + r->n[0] = t0; r->n[1] = t1; r->n[2] = t2; r->n[3] = t3; r->n[4] = t4; + r->n[5] = t5; r->n[6] = t6; r->n[7] = t7; r->n[8] = t8; r->n[9] = t9; + +#ifdef VERIFY + r->magnitude = 1; + secp256k1_fe_verify(r); +#endif +} + +static void secp256k1_fe_normalize_var(secp256k1_fe *r) { + uint32_t t0 = r->n[0], t1 = r->n[1], t2 = r->n[2], t3 = r->n[3], t4 = r->n[4], + t5 = r->n[5], t6 = r->n[6], t7 = r->n[7], t8 = r->n[8], t9 = r->n[9]; + + /* Reduce t9 at the start so there will be at most a single carry from the first pass */ + uint32_t m; + uint32_t x = t9 >> 22; t9 &= 0x03FFFFFUL; + + /* The first pass ensures the magnitude is 1, ... */ + t0 += x * 0x3D1UL; t1 += (x << 6); + t1 += (t0 >> 26); t0 &= 0x3FFFFFFUL; + t2 += (t1 >> 26); t1 &= 0x3FFFFFFUL; + t3 += (t2 >> 26); t2 &= 0x3FFFFFFUL; m = t2; + t4 += (t3 >> 26); t3 &= 0x3FFFFFFUL; m &= t3; + t5 += (t4 >> 26); t4 &= 0x3FFFFFFUL; m &= t4; + t6 += (t5 >> 26); t5 &= 0x3FFFFFFUL; m &= t5; + t7 += (t6 >> 26); t6 &= 0x3FFFFFFUL; m &= t6; + t8 += (t7 >> 26); t7 &= 0x3FFFFFFUL; m &= t7; + t9 += (t8 >> 26); t8 &= 0x3FFFFFFUL; m &= t8; + + /* ... except for a possible carry at bit 22 of t9 (i.e. bit 256 of the field element) */ + VERIFY_CHECK(t9 >> 23 == 0); + + /* At most a single final reduction is needed; check if the value is >= the field characteristic */ + x = (t9 >> 22) | ((t9 == 0x03FFFFFUL) & (m == 0x3FFFFFFUL) + & ((t1 + 0x40UL + ((t0 + 0x3D1UL) >> 26)) > 0x3FFFFFFUL)); + + if (x) { + t0 += 0x3D1UL; t1 += (x << 6); + t1 += (t0 >> 26); t0 &= 0x3FFFFFFUL; + t2 += (t1 >> 26); t1 &= 0x3FFFFFFUL; + t3 += (t2 >> 26); t2 &= 0x3FFFFFFUL; + t4 += (t3 >> 26); t3 &= 0x3FFFFFFUL; + t5 += (t4 >> 26); t4 &= 0x3FFFFFFUL; + t6 += (t5 >> 26); t5 &= 0x3FFFFFFUL; + t7 += (t6 >> 26); t6 &= 0x3FFFFFFUL; + t8 += (t7 >> 26); t7 &= 0x3FFFFFFUL; + t9 += (t8 >> 26); t8 &= 0x3FFFFFFUL; + + /* If t9 didn't carry to bit 22 already, then it should have after any final reduction */ + VERIFY_CHECK(t9 >> 22 == x); + + /* Mask off the possible multiple of 2^256 from the final reduction */ + t9 &= 0x03FFFFFUL; + } + + r->n[0] = t0; r->n[1] = t1; r->n[2] = t2; r->n[3] = t3; r->n[4] = t4; + r->n[5] = t5; r->n[6] = t6; r->n[7] = t7; r->n[8] = t8; r->n[9] = t9; + +#ifdef VERIFY + r->magnitude = 1; + r->normalized = 1; + secp256k1_fe_verify(r); +#endif +} + +static int secp256k1_fe_normalizes_to_zero(secp256k1_fe *r) { + uint32_t t0 = r->n[0], t1 = r->n[1], t2 = r->n[2], t3 = r->n[3], t4 = r->n[4], + t5 = r->n[5], t6 = r->n[6], t7 = r->n[7], t8 = r->n[8], t9 = r->n[9]; + + /* z0 tracks a possible raw value of 0, z1 tracks a possible raw value of P */ + uint32_t z0, z1; + + /* Reduce t9 at the start so there will be at most a single carry from the first pass */ + uint32_t x = t9 >> 22; t9 &= 0x03FFFFFUL; + + /* The first pass ensures the magnitude is 1, ... */ + t0 += x * 0x3D1UL; t1 += (x << 6); + t1 += (t0 >> 26); t0 &= 0x3FFFFFFUL; z0 = t0; z1 = t0 ^ 0x3D0UL; + t2 += (t1 >> 26); t1 &= 0x3FFFFFFUL; z0 |= t1; z1 &= t1 ^ 0x40UL; + t3 += (t2 >> 26); t2 &= 0x3FFFFFFUL; z0 |= t2; z1 &= t2; + t4 += (t3 >> 26); t3 &= 0x3FFFFFFUL; z0 |= t3; z1 &= t3; + t5 += (t4 >> 26); t4 &= 0x3FFFFFFUL; z0 |= t4; z1 &= t4; + t6 += (t5 >> 26); t5 &= 0x3FFFFFFUL; z0 |= t5; z1 &= t5; + t7 += (t6 >> 26); t6 &= 0x3FFFFFFUL; z0 |= t6; z1 &= t6; + t8 += (t7 >> 26); t7 &= 0x3FFFFFFUL; z0 |= t7; z1 &= t7; + t9 += (t8 >> 26); t8 &= 0x3FFFFFFUL; z0 |= t8; z1 &= t8; + z0 |= t9; z1 &= t9 ^ 0x3C00000UL; + + /* ... except for a possible carry at bit 22 of t9 (i.e. bit 256 of the field element) */ + VERIFY_CHECK(t9 >> 23 == 0); + + return (z0 == 0) | (z1 == 0x3FFFFFFUL); +} + +static int secp256k1_fe_normalizes_to_zero_var(secp256k1_fe *r) { + uint32_t t0, t1, t2, t3, t4, t5, t6, t7, t8, t9; + uint32_t z0, z1; + uint32_t x; + + t0 = r->n[0]; + t9 = r->n[9]; + + /* Reduce t9 at the start so there will be at most a single carry from the first pass */ + x = t9 >> 22; + + /* The first pass ensures the magnitude is 1, ... */ + t0 += x * 0x3D1UL; + + /* z0 tracks a possible raw value of 0, z1 tracks a possible raw value of P */ + z0 = t0 & 0x3FFFFFFUL; + z1 = z0 ^ 0x3D0UL; + + /* Fast return path should catch the majority of cases */ + if ((z0 != 0UL) & (z1 != 0x3FFFFFFUL)) { + return 0; + } + + t1 = r->n[1]; + t2 = r->n[2]; + t3 = r->n[3]; + t4 = r->n[4]; + t5 = r->n[5]; + t6 = r->n[6]; + t7 = r->n[7]; + t8 = r->n[8]; + + t9 &= 0x03FFFFFUL; + t1 += (x << 6); + + t1 += (t0 >> 26); + t2 += (t1 >> 26); t1 &= 0x3FFFFFFUL; z0 |= t1; z1 &= t1 ^ 0x40UL; + t3 += (t2 >> 26); t2 &= 0x3FFFFFFUL; z0 |= t2; z1 &= t2; + t4 += (t3 >> 26); t3 &= 0x3FFFFFFUL; z0 |= t3; z1 &= t3; + t5 += (t4 >> 26); t4 &= 0x3FFFFFFUL; z0 |= t4; z1 &= t4; + t6 += (t5 >> 26); t5 &= 0x3FFFFFFUL; z0 |= t5; z1 &= t5; + t7 += (t6 >> 26); t6 &= 0x3FFFFFFUL; z0 |= t6; z1 &= t6; + t8 += (t7 >> 26); t7 &= 0x3FFFFFFUL; z0 |= t7; z1 &= t7; + t9 += (t8 >> 26); t8 &= 0x3FFFFFFUL; z0 |= t8; z1 &= t8; + z0 |= t9; z1 &= t9 ^ 0x3C00000UL; + + /* ... except for a possible carry at bit 22 of t9 (i.e. bit 256 of the field element) */ + VERIFY_CHECK(t9 >> 23 == 0); + + return (z0 == 0) | (z1 == 0x3FFFFFFUL); +} + +SECP256K1_INLINE static void secp256k1_fe_set_int(secp256k1_fe *r, int a) { + r->n[0] = a; + r->n[1] = r->n[2] = r->n[3] = r->n[4] = r->n[5] = r->n[6] = r->n[7] = r->n[8] = r->n[9] = 0; +#ifdef VERIFY + r->magnitude = 1; + r->normalized = 1; + secp256k1_fe_verify(r); +#endif +} + +SECP256K1_INLINE static int secp256k1_fe_is_zero(const secp256k1_fe *a) { + const uint32_t *t = a->n; +#ifdef VERIFY + VERIFY_CHECK(a->normalized); + secp256k1_fe_verify(a); +#endif + return (t[0] | t[1] | t[2] | t[3] | t[4] | t[5] | t[6] | t[7] | t[8] | t[9]) == 0; +} + +SECP256K1_INLINE static int secp256k1_fe_is_odd(const secp256k1_fe *a) { +#ifdef VERIFY + VERIFY_CHECK(a->normalized); + secp256k1_fe_verify(a); +#endif + return a->n[0] & 1; +} + +SECP256K1_INLINE static void secp256k1_fe_clear(secp256k1_fe *a) { + int i; +#ifdef VERIFY + a->magnitude = 0; + a->normalized = 1; +#endif + for (i=0; i<10; i++) { + a->n[i] = 0; + } +} + +static int secp256k1_fe_cmp_var(const secp256k1_fe *a, const secp256k1_fe *b) { + int i; +#ifdef VERIFY + VERIFY_CHECK(a->normalized); + VERIFY_CHECK(b->normalized); + secp256k1_fe_verify(a); + secp256k1_fe_verify(b); +#endif + for (i = 9; i >= 0; i--) { + if (a->n[i] > b->n[i]) { + return 1; + } + if (a->n[i] < b->n[i]) { + return -1; + } + } + return 0; +} + +static int secp256k1_fe_set_b32(secp256k1_fe *r, const unsigned char *a) { + r->n[0] = (uint32_t)a[31] | ((uint32_t)a[30] << 8) | ((uint32_t)a[29] << 16) | ((uint32_t)(a[28] & 0x3) << 24); + r->n[1] = (uint32_t)((a[28] >> 2) & 0x3f) | ((uint32_t)a[27] << 6) | ((uint32_t)a[26] << 14) | ((uint32_t)(a[25] & 0xf) << 22); + r->n[2] = (uint32_t)((a[25] >> 4) & 0xf) | ((uint32_t)a[24] << 4) | ((uint32_t)a[23] << 12) | ((uint32_t)(a[22] & 0x3f) << 20); + r->n[3] = (uint32_t)((a[22] >> 6) & 0x3) | ((uint32_t)a[21] << 2) | ((uint32_t)a[20] << 10) | ((uint32_t)a[19] << 18); + r->n[4] = (uint32_t)a[18] | ((uint32_t)a[17] << 8) | ((uint32_t)a[16] << 16) | ((uint32_t)(a[15] & 0x3) << 24); + r->n[5] = (uint32_t)((a[15] >> 2) & 0x3f) | ((uint32_t)a[14] << 6) | ((uint32_t)a[13] << 14) | ((uint32_t)(a[12] & 0xf) << 22); + r->n[6] = (uint32_t)((a[12] >> 4) & 0xf) | ((uint32_t)a[11] << 4) | ((uint32_t)a[10] << 12) | ((uint32_t)(a[9] & 0x3f) << 20); + r->n[7] = (uint32_t)((a[9] >> 6) & 0x3) | ((uint32_t)a[8] << 2) | ((uint32_t)a[7] << 10) | ((uint32_t)a[6] << 18); + r->n[8] = (uint32_t)a[5] | ((uint32_t)a[4] << 8) | ((uint32_t)a[3] << 16) | ((uint32_t)(a[2] & 0x3) << 24); + r->n[9] = (uint32_t)((a[2] >> 2) & 0x3f) | ((uint32_t)a[1] << 6) | ((uint32_t)a[0] << 14); + + if (r->n[9] == 0x3FFFFFUL && (r->n[8] & r->n[7] & r->n[6] & r->n[5] & r->n[4] & r->n[3] & r->n[2]) == 0x3FFFFFFUL && (r->n[1] + 0x40UL + ((r->n[0] + 0x3D1UL) >> 26)) > 0x3FFFFFFUL) { + return 0; + } +#ifdef VERIFY + r->magnitude = 1; + r->normalized = 1; + secp256k1_fe_verify(r); +#endif + return 1; +} + +/** Convert a field element to a 32-byte big endian value. Requires the input to be normalized */ +static void secp256k1_fe_get_b32(unsigned char *r, const secp256k1_fe *a) { +#ifdef VERIFY + VERIFY_CHECK(a->normalized); + secp256k1_fe_verify(a); +#endif + r[0] = (a->n[9] >> 14) & 0xff; + r[1] = (a->n[9] >> 6) & 0xff; + r[2] = ((a->n[9] & 0x3F) << 2) | ((a->n[8] >> 24) & 0x3); + r[3] = (a->n[8] >> 16) & 0xff; + r[4] = (a->n[8] >> 8) & 0xff; + r[5] = a->n[8] & 0xff; + r[6] = (a->n[7] >> 18) & 0xff; + r[7] = (a->n[7] >> 10) & 0xff; + r[8] = (a->n[7] >> 2) & 0xff; + r[9] = ((a->n[7] & 0x3) << 6) | ((a->n[6] >> 20) & 0x3f); + r[10] = (a->n[6] >> 12) & 0xff; + r[11] = (a->n[6] >> 4) & 0xff; + r[12] = ((a->n[6] & 0xf) << 4) | ((a->n[5] >> 22) & 0xf); + r[13] = (a->n[5] >> 14) & 0xff; + r[14] = (a->n[5] >> 6) & 0xff; + r[15] = ((a->n[5] & 0x3f) << 2) | ((a->n[4] >> 24) & 0x3); + r[16] = (a->n[4] >> 16) & 0xff; + r[17] = (a->n[4] >> 8) & 0xff; + r[18] = a->n[4] & 0xff; + r[19] = (a->n[3] >> 18) & 0xff; + r[20] = (a->n[3] >> 10) & 0xff; + r[21] = (a->n[3] >> 2) & 0xff; + r[22] = ((a->n[3] & 0x3) << 6) | ((a->n[2] >> 20) & 0x3f); + r[23] = (a->n[2] >> 12) & 0xff; + r[24] = (a->n[2] >> 4) & 0xff; + r[25] = ((a->n[2] & 0xf) << 4) | ((a->n[1] >> 22) & 0xf); + r[26] = (a->n[1] >> 14) & 0xff; + r[27] = (a->n[1] >> 6) & 0xff; + r[28] = ((a->n[1] & 0x3f) << 2) | ((a->n[0] >> 24) & 0x3); + r[29] = (a->n[0] >> 16) & 0xff; + r[30] = (a->n[0] >> 8) & 0xff; + r[31] = a->n[0] & 0xff; +} + +SECP256K1_INLINE static void secp256k1_fe_negate(secp256k1_fe *r, const secp256k1_fe *a, int m) { +#ifdef VERIFY + VERIFY_CHECK(a->magnitude <= m); + secp256k1_fe_verify(a); +#endif + r->n[0] = 0x3FFFC2FUL * 2 * (m + 1) - a->n[0]; + r->n[1] = 0x3FFFFBFUL * 2 * (m + 1) - a->n[1]; + r->n[2] = 0x3FFFFFFUL * 2 * (m + 1) - a->n[2]; + r->n[3] = 0x3FFFFFFUL * 2 * (m + 1) - a->n[3]; + r->n[4] = 0x3FFFFFFUL * 2 * (m + 1) - a->n[4]; + r->n[5] = 0x3FFFFFFUL * 2 * (m + 1) - a->n[5]; + r->n[6] = 0x3FFFFFFUL * 2 * (m + 1) - a->n[6]; + r->n[7] = 0x3FFFFFFUL * 2 * (m + 1) - a->n[7]; + r->n[8] = 0x3FFFFFFUL * 2 * (m + 1) - a->n[8]; + r->n[9] = 0x03FFFFFUL * 2 * (m + 1) - a->n[9]; +#ifdef VERIFY + r->magnitude = m + 1; + r->normalized = 0; + secp256k1_fe_verify(r); +#endif +} + +SECP256K1_INLINE static void secp256k1_fe_mul_int(secp256k1_fe *r, int a) { + r->n[0] *= a; + r->n[1] *= a; + r->n[2] *= a; + r->n[3] *= a; + r->n[4] *= a; + r->n[5] *= a; + r->n[6] *= a; + r->n[7] *= a; + r->n[8] *= a; + r->n[9] *= a; +#ifdef VERIFY + r->magnitude *= a; + r->normalized = 0; + secp256k1_fe_verify(r); +#endif +} + +SECP256K1_INLINE static void secp256k1_fe_add(secp256k1_fe *r, const secp256k1_fe *a) { +#ifdef VERIFY + secp256k1_fe_verify(a); +#endif + r->n[0] += a->n[0]; + r->n[1] += a->n[1]; + r->n[2] += a->n[2]; + r->n[3] += a->n[3]; + r->n[4] += a->n[4]; + r->n[5] += a->n[5]; + r->n[6] += a->n[6]; + r->n[7] += a->n[7]; + r->n[8] += a->n[8]; + r->n[9] += a->n[9]; +#ifdef VERIFY + r->magnitude += a->magnitude; + r->normalized = 0; + secp256k1_fe_verify(r); +#endif +} + +#if defined(USE_EXTERNAL_ASM) + +/* External assembler implementation */ +void secp256k1_fe_mul_inner(uint32_t *r, const uint32_t *a, const uint32_t * SECP256K1_RESTRICT b); +void secp256k1_fe_sqr_inner(uint32_t *r, const uint32_t *a); + +#else + +#ifdef VERIFY +#define VERIFY_BITS(x, n) VERIFY_CHECK(((x) >> (n)) == 0) +#else +#define VERIFY_BITS(x, n) do { } while(0) +#endif + +SECP256K1_INLINE static void secp256k1_fe_mul_inner(uint32_t *r, const uint32_t *a, const uint32_t * SECP256K1_RESTRICT b) { + uint64_t c, d; + uint64_t u0, u1, u2, u3, u4, u5, u6, u7, u8; + uint32_t t9, t1, t0, t2, t3, t4, t5, t6, t7; + const uint32_t M = 0x3FFFFFFUL, R0 = 0x3D10UL, R1 = 0x400UL; + + VERIFY_BITS(a[0], 30); + VERIFY_BITS(a[1], 30); + VERIFY_BITS(a[2], 30); + VERIFY_BITS(a[3], 30); + VERIFY_BITS(a[4], 30); + VERIFY_BITS(a[5], 30); + VERIFY_BITS(a[6], 30); + VERIFY_BITS(a[7], 30); + VERIFY_BITS(a[8], 30); + VERIFY_BITS(a[9], 26); + VERIFY_BITS(b[0], 30); + VERIFY_BITS(b[1], 30); + VERIFY_BITS(b[2], 30); + VERIFY_BITS(b[3], 30); + VERIFY_BITS(b[4], 30); + VERIFY_BITS(b[5], 30); + VERIFY_BITS(b[6], 30); + VERIFY_BITS(b[7], 30); + VERIFY_BITS(b[8], 30); + VERIFY_BITS(b[9], 26); + + /** [... a b c] is a shorthand for ... + a<<52 + b<<26 + c<<0 mod n. + * px is a shorthand for sum(a[i]*b[x-i], i=0..x). + * Note that [x 0 0 0 0 0 0 0 0 0 0] = [x*R1 x*R0]. + */ + + d = (uint64_t)a[0] * b[9] + + (uint64_t)a[1] * b[8] + + (uint64_t)a[2] * b[7] + + (uint64_t)a[3] * b[6] + + (uint64_t)a[4] * b[5] + + (uint64_t)a[5] * b[4] + + (uint64_t)a[6] * b[3] + + (uint64_t)a[7] * b[2] + + (uint64_t)a[8] * b[1] + + (uint64_t)a[9] * b[0]; + /* VERIFY_BITS(d, 64); */ + /* [d 0 0 0 0 0 0 0 0 0] = [p9 0 0 0 0 0 0 0 0 0] */ + t9 = d & M; d >>= 26; + VERIFY_BITS(t9, 26); + VERIFY_BITS(d, 38); + /* [d t9 0 0 0 0 0 0 0 0 0] = [p9 0 0 0 0 0 0 0 0 0] */ + + c = (uint64_t)a[0] * b[0]; + VERIFY_BITS(c, 60); + /* [d t9 0 0 0 0 0 0 0 0 c] = [p9 0 0 0 0 0 0 0 0 p0] */ + d += (uint64_t)a[1] * b[9] + + (uint64_t)a[2] * b[8] + + (uint64_t)a[3] * b[7] + + (uint64_t)a[4] * b[6] + + (uint64_t)a[5] * b[5] + + (uint64_t)a[6] * b[4] + + (uint64_t)a[7] * b[3] + + (uint64_t)a[8] * b[2] + + (uint64_t)a[9] * b[1]; + VERIFY_BITS(d, 63); + /* [d t9 0 0 0 0 0 0 0 0 c] = [p10 p9 0 0 0 0 0 0 0 0 p0] */ + u0 = d & M; d >>= 26; c += u0 * R0; + VERIFY_BITS(u0, 26); + VERIFY_BITS(d, 37); + VERIFY_BITS(c, 61); + /* [d u0 t9 0 0 0 0 0 0 0 0 c-u0*R0] = [p10 p9 0 0 0 0 0 0 0 0 p0] */ + t0 = c & M; c >>= 26; c += u0 * R1; + VERIFY_BITS(t0, 26); + VERIFY_BITS(c, 37); + /* [d u0 t9 0 0 0 0 0 0 0 c-u0*R1 t0-u0*R0] = [p10 p9 0 0 0 0 0 0 0 0 p0] */ + /* [d 0 t9 0 0 0 0 0 0 0 c t0] = [p10 p9 0 0 0 0 0 0 0 0 p0] */ + + c += (uint64_t)a[0] * b[1] + + (uint64_t)a[1] * b[0]; + VERIFY_BITS(c, 62); + /* [d 0 t9 0 0 0 0 0 0 0 c t0] = [p10 p9 0 0 0 0 0 0 0 p1 p0] */ + d += (uint64_t)a[2] * b[9] + + (uint64_t)a[3] * b[8] + + (uint64_t)a[4] * b[7] + + (uint64_t)a[5] * b[6] + + (uint64_t)a[6] * b[5] + + (uint64_t)a[7] * b[4] + + (uint64_t)a[8] * b[3] + + (uint64_t)a[9] * b[2]; + VERIFY_BITS(d, 63); + /* [d 0 t9 0 0 0 0 0 0 0 c t0] = [p11 p10 p9 0 0 0 0 0 0 0 p1 p0] */ + u1 = d & M; d >>= 26; c += u1 * R0; + VERIFY_BITS(u1, 26); + VERIFY_BITS(d, 37); + VERIFY_BITS(c, 63); + /* [d u1 0 t9 0 0 0 0 0 0 0 c-u1*R0 t0] = [p11 p10 p9 0 0 0 0 0 0 0 p1 p0] */ + t1 = c & M; c >>= 26; c += u1 * R1; + VERIFY_BITS(t1, 26); + VERIFY_BITS(c, 38); + /* [d u1 0 t9 0 0 0 0 0 0 c-u1*R1 t1-u1*R0 t0] = [p11 p10 p9 0 0 0 0 0 0 0 p1 p0] */ + /* [d 0 0 t9 0 0 0 0 0 0 c t1 t0] = [p11 p10 p9 0 0 0 0 0 0 0 p1 p0] */ + + c += (uint64_t)a[0] * b[2] + + (uint64_t)a[1] * b[1] + + (uint64_t)a[2] * b[0]; + VERIFY_BITS(c, 62); + /* [d 0 0 t9 0 0 0 0 0 0 c t1 t0] = [p11 p10 p9 0 0 0 0 0 0 p2 p1 p0] */ + d += (uint64_t)a[3] * b[9] + + (uint64_t)a[4] * b[8] + + (uint64_t)a[5] * b[7] + + (uint64_t)a[6] * b[6] + + (uint64_t)a[7] * b[5] + + (uint64_t)a[8] * b[4] + + (uint64_t)a[9] * b[3]; + VERIFY_BITS(d, 63); + /* [d 0 0 t9 0 0 0 0 0 0 c t1 t0] = [p12 p11 p10 p9 0 0 0 0 0 0 p2 p1 p0] */ + u2 = d & M; d >>= 26; c += u2 * R0; + VERIFY_BITS(u2, 26); + VERIFY_BITS(d, 37); + VERIFY_BITS(c, 63); + /* [d u2 0 0 t9 0 0 0 0 0 0 c-u2*R0 t1 t0] = [p12 p11 p10 p9 0 0 0 0 0 0 p2 p1 p0] */ + t2 = c & M; c >>= 26; c += u2 * R1; + VERIFY_BITS(t2, 26); + VERIFY_BITS(c, 38); + /* [d u2 0 0 t9 0 0 0 0 0 c-u2*R1 t2-u2*R0 t1 t0] = [p12 p11 p10 p9 0 0 0 0 0 0 p2 p1 p0] */ + /* [d 0 0 0 t9 0 0 0 0 0 c t2 t1 t0] = [p12 p11 p10 p9 0 0 0 0 0 0 p2 p1 p0] */ + + c += (uint64_t)a[0] * b[3] + + (uint64_t)a[1] * b[2] + + (uint64_t)a[2] * b[1] + + (uint64_t)a[3] * b[0]; + VERIFY_BITS(c, 63); + /* [d 0 0 0 t9 0 0 0 0 0 c t2 t1 t0] = [p12 p11 p10 p9 0 0 0 0 0 p3 p2 p1 p0] */ + d += (uint64_t)a[4] * b[9] + + (uint64_t)a[5] * b[8] + + (uint64_t)a[6] * b[7] + + (uint64_t)a[7] * b[6] + + (uint64_t)a[8] * b[5] + + (uint64_t)a[9] * b[4]; + VERIFY_BITS(d, 63); + /* [d 0 0 0 t9 0 0 0 0 0 c t2 t1 t0] = [p13 p12 p11 p10 p9 0 0 0 0 0 p3 p2 p1 p0] */ + u3 = d & M; d >>= 26; c += u3 * R0; + VERIFY_BITS(u3, 26); + VERIFY_BITS(d, 37); + /* VERIFY_BITS(c, 64); */ + /* [d u3 0 0 0 t9 0 0 0 0 0 c-u3*R0 t2 t1 t0] = [p13 p12 p11 p10 p9 0 0 0 0 0 p3 p2 p1 p0] */ + t3 = c & M; c >>= 26; c += u3 * R1; + VERIFY_BITS(t3, 26); + VERIFY_BITS(c, 39); + /* [d u3 0 0 0 t9 0 0 0 0 c-u3*R1 t3-u3*R0 t2 t1 t0] = [p13 p12 p11 p10 p9 0 0 0 0 0 p3 p2 p1 p0] */ + /* [d 0 0 0 0 t9 0 0 0 0 c t3 t2 t1 t0] = [p13 p12 p11 p10 p9 0 0 0 0 0 p3 p2 p1 p0] */ + + c += (uint64_t)a[0] * b[4] + + (uint64_t)a[1] * b[3] + + (uint64_t)a[2] * b[2] + + (uint64_t)a[3] * b[1] + + (uint64_t)a[4] * b[0]; + VERIFY_BITS(c, 63); + /* [d 0 0 0 0 t9 0 0 0 0 c t3 t2 t1 t0] = [p13 p12 p11 p10 p9 0 0 0 0 p4 p3 p2 p1 p0] */ + d += (uint64_t)a[5] * b[9] + + (uint64_t)a[6] * b[8] + + (uint64_t)a[7] * b[7] + + (uint64_t)a[8] * b[6] + + (uint64_t)a[9] * b[5]; + VERIFY_BITS(d, 62); + /* [d 0 0 0 0 t9 0 0 0 0 c t3 t2 t1 t0] = [p14 p13 p12 p11 p10 p9 0 0 0 0 p4 p3 p2 p1 p0] */ + u4 = d & M; d >>= 26; c += u4 * R0; + VERIFY_BITS(u4, 26); + VERIFY_BITS(d, 36); + /* VERIFY_BITS(c, 64); */ + /* [d u4 0 0 0 0 t9 0 0 0 0 c-u4*R0 t3 t2 t1 t0] = [p14 p13 p12 p11 p10 p9 0 0 0 0 p4 p3 p2 p1 p0] */ + t4 = c & M; c >>= 26; c += u4 * R1; + VERIFY_BITS(t4, 26); + VERIFY_BITS(c, 39); + /* [d u4 0 0 0 0 t9 0 0 0 c-u4*R1 t4-u4*R0 t3 t2 t1 t0] = [p14 p13 p12 p11 p10 p9 0 0 0 0 p4 p3 p2 p1 p0] */ + /* [d 0 0 0 0 0 t9 0 0 0 c t4 t3 t2 t1 t0] = [p14 p13 p12 p11 p10 p9 0 0 0 0 p4 p3 p2 p1 p0] */ + + c += (uint64_t)a[0] * b[5] + + (uint64_t)a[1] * b[4] + + (uint64_t)a[2] * b[3] + + (uint64_t)a[3] * b[2] + + (uint64_t)a[4] * b[1] + + (uint64_t)a[5] * b[0]; + VERIFY_BITS(c, 63); + /* [d 0 0 0 0 0 t9 0 0 0 c t4 t3 t2 t1 t0] = [p14 p13 p12 p11 p10 p9 0 0 0 p5 p4 p3 p2 p1 p0] */ + d += (uint64_t)a[6] * b[9] + + (uint64_t)a[7] * b[8] + + (uint64_t)a[8] * b[7] + + (uint64_t)a[9] * b[6]; + VERIFY_BITS(d, 62); + /* [d 0 0 0 0 0 t9 0 0 0 c t4 t3 t2 t1 t0] = [p15 p14 p13 p12 p11 p10 p9 0 0 0 p5 p4 p3 p2 p1 p0] */ + u5 = d & M; d >>= 26; c += u5 * R0; + VERIFY_BITS(u5, 26); + VERIFY_BITS(d, 36); + /* VERIFY_BITS(c, 64); */ + /* [d u5 0 0 0 0 0 t9 0 0 0 c-u5*R0 t4 t3 t2 t1 t0] = [p15 p14 p13 p12 p11 p10 p9 0 0 0 p5 p4 p3 p2 p1 p0] */ + t5 = c & M; c >>= 26; c += u5 * R1; + VERIFY_BITS(t5, 26); + VERIFY_BITS(c, 39); + /* [d u5 0 0 0 0 0 t9 0 0 c-u5*R1 t5-u5*R0 t4 t3 t2 t1 t0] = [p15 p14 p13 p12 p11 p10 p9 0 0 0 p5 p4 p3 p2 p1 p0] */ + /* [d 0 0 0 0 0 0 t9 0 0 c t5 t4 t3 t2 t1 t0] = [p15 p14 p13 p12 p11 p10 p9 0 0 0 p5 p4 p3 p2 p1 p0] */ + + c += (uint64_t)a[0] * b[6] + + (uint64_t)a[1] * b[5] + + (uint64_t)a[2] * b[4] + + (uint64_t)a[3] * b[3] + + (uint64_t)a[4] * b[2] + + (uint64_t)a[5] * b[1] + + (uint64_t)a[6] * b[0]; + VERIFY_BITS(c, 63); + /* [d 0 0 0 0 0 0 t9 0 0 c t5 t4 t3 t2 t1 t0] = [p15 p14 p13 p12 p11 p10 p9 0 0 p6 p5 p4 p3 p2 p1 p0] */ + d += (uint64_t)a[7] * b[9] + + (uint64_t)a[8] * b[8] + + (uint64_t)a[9] * b[7]; + VERIFY_BITS(d, 61); + /* [d 0 0 0 0 0 0 t9 0 0 c t5 t4 t3 t2 t1 t0] = [p16 p15 p14 p13 p12 p11 p10 p9 0 0 p6 p5 p4 p3 p2 p1 p0] */ + u6 = d & M; d >>= 26; c += u6 * R0; + VERIFY_BITS(u6, 26); + VERIFY_BITS(d, 35); + /* VERIFY_BITS(c, 64); */ + /* [d u6 0 0 0 0 0 0 t9 0 0 c-u6*R0 t5 t4 t3 t2 t1 t0] = [p16 p15 p14 p13 p12 p11 p10 p9 0 0 p6 p5 p4 p3 p2 p1 p0] */ + t6 = c & M; c >>= 26; c += u6 * R1; + VERIFY_BITS(t6, 26); + VERIFY_BITS(c, 39); + /* [d u6 0 0 0 0 0 0 t9 0 c-u6*R1 t6-u6*R0 t5 t4 t3 t2 t1 t0] = [p16 p15 p14 p13 p12 p11 p10 p9 0 0 p6 p5 p4 p3 p2 p1 p0] */ + /* [d 0 0 0 0 0 0 0 t9 0 c t6 t5 t4 t3 t2 t1 t0] = [p16 p15 p14 p13 p12 p11 p10 p9 0 0 p6 p5 p4 p3 p2 p1 p0] */ + + c += (uint64_t)a[0] * b[7] + + (uint64_t)a[1] * b[6] + + (uint64_t)a[2] * b[5] + + (uint64_t)a[3] * b[4] + + (uint64_t)a[4] * b[3] + + (uint64_t)a[5] * b[2] + + (uint64_t)a[6] * b[1] + + (uint64_t)a[7] * b[0]; + /* VERIFY_BITS(c, 64); */ + VERIFY_CHECK(c <= 0x8000007C00000007ULL); + /* [d 0 0 0 0 0 0 0 t9 0 c t6 t5 t4 t3 t2 t1 t0] = [p16 p15 p14 p13 p12 p11 p10 p9 0 p7 p6 p5 p4 p3 p2 p1 p0] */ + d += (uint64_t)a[8] * b[9] + + (uint64_t)a[9] * b[8]; + VERIFY_BITS(d, 58); + /* [d 0 0 0 0 0 0 0 t9 0 c t6 t5 t4 t3 t2 t1 t0] = [p17 p16 p15 p14 p13 p12 p11 p10 p9 0 p7 p6 p5 p4 p3 p2 p1 p0] */ + u7 = d & M; d >>= 26; c += u7 * R0; + VERIFY_BITS(u7, 26); + VERIFY_BITS(d, 32); + /* VERIFY_BITS(c, 64); */ + VERIFY_CHECK(c <= 0x800001703FFFC2F7ULL); + /* [d u7 0 0 0 0 0 0 0 t9 0 c-u7*R0 t6 t5 t4 t3 t2 t1 t0] = [p17 p16 p15 p14 p13 p12 p11 p10 p9 0 p7 p6 p5 p4 p3 p2 p1 p0] */ + t7 = c & M; c >>= 26; c += u7 * R1; + VERIFY_BITS(t7, 26); + VERIFY_BITS(c, 38); + /* [d u7 0 0 0 0 0 0 0 t9 c-u7*R1 t7-u7*R0 t6 t5 t4 t3 t2 t1 t0] = [p17 p16 p15 p14 p13 p12 p11 p10 p9 0 p7 p6 p5 p4 p3 p2 p1 p0] */ + /* [d 0 0 0 0 0 0 0 0 t9 c t7 t6 t5 t4 t3 t2 t1 t0] = [p17 p16 p15 p14 p13 p12 p11 p10 p9 0 p7 p6 p5 p4 p3 p2 p1 p0] */ + + c += (uint64_t)a[0] * b[8] + + (uint64_t)a[1] * b[7] + + (uint64_t)a[2] * b[6] + + (uint64_t)a[3] * b[5] + + (uint64_t)a[4] * b[4] + + (uint64_t)a[5] * b[3] + + (uint64_t)a[6] * b[2] + + (uint64_t)a[7] * b[1] + + (uint64_t)a[8] * b[0]; + /* VERIFY_BITS(c, 64); */ + VERIFY_CHECK(c <= 0x9000007B80000008ULL); + /* [d 0 0 0 0 0 0 0 0 t9 c t7 t6 t5 t4 t3 t2 t1 t0] = [p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + d += (uint64_t)a[9] * b[9]; + VERIFY_BITS(d, 57); + /* [d 0 0 0 0 0 0 0 0 t9 c t7 t6 t5 t4 t3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + u8 = d & M; d >>= 26; c += u8 * R0; + VERIFY_BITS(u8, 26); + VERIFY_BITS(d, 31); + /* VERIFY_BITS(c, 64); */ + VERIFY_CHECK(c <= 0x9000016FBFFFC2F8ULL); + /* [d u8 0 0 0 0 0 0 0 0 t9 c-u8*R0 t7 t6 t5 t4 t3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + + r[3] = t3; + VERIFY_BITS(r[3], 26); + /* [d u8 0 0 0 0 0 0 0 0 t9 c-u8*R0 t7 t6 t5 t4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + r[4] = t4; + VERIFY_BITS(r[4], 26); + /* [d u8 0 0 0 0 0 0 0 0 t9 c-u8*R0 t7 t6 t5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + r[5] = t5; + VERIFY_BITS(r[5], 26); + /* [d u8 0 0 0 0 0 0 0 0 t9 c-u8*R0 t7 t6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + r[6] = t6; + VERIFY_BITS(r[6], 26); + /* [d u8 0 0 0 0 0 0 0 0 t9 c-u8*R0 t7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + r[7] = t7; + VERIFY_BITS(r[7], 26); + /* [d u8 0 0 0 0 0 0 0 0 t9 c-u8*R0 r7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + + r[8] = c & M; c >>= 26; c += u8 * R1; + VERIFY_BITS(r[8], 26); + VERIFY_BITS(c, 39); + /* [d u8 0 0 0 0 0 0 0 0 t9+c-u8*R1 r8-u8*R0 r7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + /* [d 0 0 0 0 0 0 0 0 0 t9+c r8 r7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + c += d * R0 + t9; + VERIFY_BITS(c, 45); + /* [d 0 0 0 0 0 0 0 0 0 c-d*R0 r8 r7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + r[9] = c & (M >> 4); c >>= 22; c += d * (R1 << 4); + VERIFY_BITS(r[9], 22); + VERIFY_BITS(c, 46); + /* [d 0 0 0 0 0 0 0 0 r9+((c-d*R1<<4)<<22)-d*R0 r8 r7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + /* [d 0 0 0 0 0 0 0 -d*R1 r9+(c<<22)-d*R0 r8 r7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + /* [r9+(c<<22) r8 r7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + + d = c * (R0 >> 4) + t0; + VERIFY_BITS(d, 56); + /* [r9+(c<<22) r8 r7 r6 r5 r4 r3 t2 t1 d-c*R0>>4] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + r[0] = d & M; d >>= 26; + VERIFY_BITS(r[0], 26); + VERIFY_BITS(d, 30); + /* [r9+(c<<22) r8 r7 r6 r5 r4 r3 t2 t1+d r0-c*R0>>4] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + d += c * (R1 >> 4) + t1; + VERIFY_BITS(d, 53); + VERIFY_CHECK(d <= 0x10000003FFFFBFULL); + /* [r9+(c<<22) r8 r7 r6 r5 r4 r3 t2 d-c*R1>>4 r0-c*R0>>4] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + /* [r9 r8 r7 r6 r5 r4 r3 t2 d r0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + r[1] = d & M; d >>= 26; + VERIFY_BITS(r[1], 26); + VERIFY_BITS(d, 27); + VERIFY_CHECK(d <= 0x4000000ULL); + /* [r9 r8 r7 r6 r5 r4 r3 t2+d r1 r0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + d += t2; + VERIFY_BITS(d, 27); + /* [r9 r8 r7 r6 r5 r4 r3 d r1 r0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + r[2] = d; + VERIFY_BITS(r[2], 27); + /* [r9 r8 r7 r6 r5 r4 r3 r2 r1 r0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ +} + +SECP256K1_INLINE static void secp256k1_fe_sqr_inner(uint32_t *r, const uint32_t *a) { + uint64_t c, d; + uint64_t u0, u1, u2, u3, u4, u5, u6, u7, u8; + uint32_t t9, t0, t1, t2, t3, t4, t5, t6, t7; + const uint32_t M = 0x3FFFFFFUL, R0 = 0x3D10UL, R1 = 0x400UL; + + VERIFY_BITS(a[0], 30); + VERIFY_BITS(a[1], 30); + VERIFY_BITS(a[2], 30); + VERIFY_BITS(a[3], 30); + VERIFY_BITS(a[4], 30); + VERIFY_BITS(a[5], 30); + VERIFY_BITS(a[6], 30); + VERIFY_BITS(a[7], 30); + VERIFY_BITS(a[8], 30); + VERIFY_BITS(a[9], 26); + + /** [... a b c] is a shorthand for ... + a<<52 + b<<26 + c<<0 mod n. + * px is a shorthand for sum(a[i]*a[x-i], i=0..x). + * Note that [x 0 0 0 0 0 0 0 0 0 0] = [x*R1 x*R0]. + */ + + d = (uint64_t)(a[0]*2) * a[9] + + (uint64_t)(a[1]*2) * a[8] + + (uint64_t)(a[2]*2) * a[7] + + (uint64_t)(a[3]*2) * a[6] + + (uint64_t)(a[4]*2) * a[5]; + /* VERIFY_BITS(d, 64); */ + /* [d 0 0 0 0 0 0 0 0 0] = [p9 0 0 0 0 0 0 0 0 0] */ + t9 = d & M; d >>= 26; + VERIFY_BITS(t9, 26); + VERIFY_BITS(d, 38); + /* [d t9 0 0 0 0 0 0 0 0 0] = [p9 0 0 0 0 0 0 0 0 0] */ + + c = (uint64_t)a[0] * a[0]; + VERIFY_BITS(c, 60); + /* [d t9 0 0 0 0 0 0 0 0 c] = [p9 0 0 0 0 0 0 0 0 p0] */ + d += (uint64_t)(a[1]*2) * a[9] + + (uint64_t)(a[2]*2) * a[8] + + (uint64_t)(a[3]*2) * a[7] + + (uint64_t)(a[4]*2) * a[6] + + (uint64_t)a[5] * a[5]; + VERIFY_BITS(d, 63); + /* [d t9 0 0 0 0 0 0 0 0 c] = [p10 p9 0 0 0 0 0 0 0 0 p0] */ + u0 = d & M; d >>= 26; c += u0 * R0; + VERIFY_BITS(u0, 26); + VERIFY_BITS(d, 37); + VERIFY_BITS(c, 61); + /* [d u0 t9 0 0 0 0 0 0 0 0 c-u0*R0] = [p10 p9 0 0 0 0 0 0 0 0 p0] */ + t0 = c & M; c >>= 26; c += u0 * R1; + VERIFY_BITS(t0, 26); + VERIFY_BITS(c, 37); + /* [d u0 t9 0 0 0 0 0 0 0 c-u0*R1 t0-u0*R0] = [p10 p9 0 0 0 0 0 0 0 0 p0] */ + /* [d 0 t9 0 0 0 0 0 0 0 c t0] = [p10 p9 0 0 0 0 0 0 0 0 p0] */ + + c += (uint64_t)(a[0]*2) * a[1]; + VERIFY_BITS(c, 62); + /* [d 0 t9 0 0 0 0 0 0 0 c t0] = [p10 p9 0 0 0 0 0 0 0 p1 p0] */ + d += (uint64_t)(a[2]*2) * a[9] + + (uint64_t)(a[3]*2) * a[8] + + (uint64_t)(a[4]*2) * a[7] + + (uint64_t)(a[5]*2) * a[6]; + VERIFY_BITS(d, 63); + /* [d 0 t9 0 0 0 0 0 0 0 c t0] = [p11 p10 p9 0 0 0 0 0 0 0 p1 p0] */ + u1 = d & M; d >>= 26; c += u1 * R0; + VERIFY_BITS(u1, 26); + VERIFY_BITS(d, 37); + VERIFY_BITS(c, 63); + /* [d u1 0 t9 0 0 0 0 0 0 0 c-u1*R0 t0] = [p11 p10 p9 0 0 0 0 0 0 0 p1 p0] */ + t1 = c & M; c >>= 26; c += u1 * R1; + VERIFY_BITS(t1, 26); + VERIFY_BITS(c, 38); + /* [d u1 0 t9 0 0 0 0 0 0 c-u1*R1 t1-u1*R0 t0] = [p11 p10 p9 0 0 0 0 0 0 0 p1 p0] */ + /* [d 0 0 t9 0 0 0 0 0 0 c t1 t0] = [p11 p10 p9 0 0 0 0 0 0 0 p1 p0] */ + + c += (uint64_t)(a[0]*2) * a[2] + + (uint64_t)a[1] * a[1]; + VERIFY_BITS(c, 62); + /* [d 0 0 t9 0 0 0 0 0 0 c t1 t0] = [p11 p10 p9 0 0 0 0 0 0 p2 p1 p0] */ + d += (uint64_t)(a[3]*2) * a[9] + + (uint64_t)(a[4]*2) * a[8] + + (uint64_t)(a[5]*2) * a[7] + + (uint64_t)a[6] * a[6]; + VERIFY_BITS(d, 63); + /* [d 0 0 t9 0 0 0 0 0 0 c t1 t0] = [p12 p11 p10 p9 0 0 0 0 0 0 p2 p1 p0] */ + u2 = d & M; d >>= 26; c += u2 * R0; + VERIFY_BITS(u2, 26); + VERIFY_BITS(d, 37); + VERIFY_BITS(c, 63); + /* [d u2 0 0 t9 0 0 0 0 0 0 c-u2*R0 t1 t0] = [p12 p11 p10 p9 0 0 0 0 0 0 p2 p1 p0] */ + t2 = c & M; c >>= 26; c += u2 * R1; + VERIFY_BITS(t2, 26); + VERIFY_BITS(c, 38); + /* [d u2 0 0 t9 0 0 0 0 0 c-u2*R1 t2-u2*R0 t1 t0] = [p12 p11 p10 p9 0 0 0 0 0 0 p2 p1 p0] */ + /* [d 0 0 0 t9 0 0 0 0 0 c t2 t1 t0] = [p12 p11 p10 p9 0 0 0 0 0 0 p2 p1 p0] */ + + c += (uint64_t)(a[0]*2) * a[3] + + (uint64_t)(a[1]*2) * a[2]; + VERIFY_BITS(c, 63); + /* [d 0 0 0 t9 0 0 0 0 0 c t2 t1 t0] = [p12 p11 p10 p9 0 0 0 0 0 p3 p2 p1 p0] */ + d += (uint64_t)(a[4]*2) * a[9] + + (uint64_t)(a[5]*2) * a[8] + + (uint64_t)(a[6]*2) * a[7]; + VERIFY_BITS(d, 63); + /* [d 0 0 0 t9 0 0 0 0 0 c t2 t1 t0] = [p13 p12 p11 p10 p9 0 0 0 0 0 p3 p2 p1 p0] */ + u3 = d & M; d >>= 26; c += u3 * R0; + VERIFY_BITS(u3, 26); + VERIFY_BITS(d, 37); + /* VERIFY_BITS(c, 64); */ + /* [d u3 0 0 0 t9 0 0 0 0 0 c-u3*R0 t2 t1 t0] = [p13 p12 p11 p10 p9 0 0 0 0 0 p3 p2 p1 p0] */ + t3 = c & M; c >>= 26; c += u3 * R1; + VERIFY_BITS(t3, 26); + VERIFY_BITS(c, 39); + /* [d u3 0 0 0 t9 0 0 0 0 c-u3*R1 t3-u3*R0 t2 t1 t0] = [p13 p12 p11 p10 p9 0 0 0 0 0 p3 p2 p1 p0] */ + /* [d 0 0 0 0 t9 0 0 0 0 c t3 t2 t1 t0] = [p13 p12 p11 p10 p9 0 0 0 0 0 p3 p2 p1 p0] */ + + c += (uint64_t)(a[0]*2) * a[4] + + (uint64_t)(a[1]*2) * a[3] + + (uint64_t)a[2] * a[2]; + VERIFY_BITS(c, 63); + /* [d 0 0 0 0 t9 0 0 0 0 c t3 t2 t1 t0] = [p13 p12 p11 p10 p9 0 0 0 0 p4 p3 p2 p1 p0] */ + d += (uint64_t)(a[5]*2) * a[9] + + (uint64_t)(a[6]*2) * a[8] + + (uint64_t)a[7] * a[7]; + VERIFY_BITS(d, 62); + /* [d 0 0 0 0 t9 0 0 0 0 c t3 t2 t1 t0] = [p14 p13 p12 p11 p10 p9 0 0 0 0 p4 p3 p2 p1 p0] */ + u4 = d & M; d >>= 26; c += u4 * R0; + VERIFY_BITS(u4, 26); + VERIFY_BITS(d, 36); + /* VERIFY_BITS(c, 64); */ + /* [d u4 0 0 0 0 t9 0 0 0 0 c-u4*R0 t3 t2 t1 t0] = [p14 p13 p12 p11 p10 p9 0 0 0 0 p4 p3 p2 p1 p0] */ + t4 = c & M; c >>= 26; c += u4 * R1; + VERIFY_BITS(t4, 26); + VERIFY_BITS(c, 39); + /* [d u4 0 0 0 0 t9 0 0 0 c-u4*R1 t4-u4*R0 t3 t2 t1 t0] = [p14 p13 p12 p11 p10 p9 0 0 0 0 p4 p3 p2 p1 p0] */ + /* [d 0 0 0 0 0 t9 0 0 0 c t4 t3 t2 t1 t0] = [p14 p13 p12 p11 p10 p9 0 0 0 0 p4 p3 p2 p1 p0] */ + + c += (uint64_t)(a[0]*2) * a[5] + + (uint64_t)(a[1]*2) * a[4] + + (uint64_t)(a[2]*2) * a[3]; + VERIFY_BITS(c, 63); + /* [d 0 0 0 0 0 t9 0 0 0 c t4 t3 t2 t1 t0] = [p14 p13 p12 p11 p10 p9 0 0 0 p5 p4 p3 p2 p1 p0] */ + d += (uint64_t)(a[6]*2) * a[9] + + (uint64_t)(a[7]*2) * a[8]; + VERIFY_BITS(d, 62); + /* [d 0 0 0 0 0 t9 0 0 0 c t4 t3 t2 t1 t0] = [p15 p14 p13 p12 p11 p10 p9 0 0 0 p5 p4 p3 p2 p1 p0] */ + u5 = d & M; d >>= 26; c += u5 * R0; + VERIFY_BITS(u5, 26); + VERIFY_BITS(d, 36); + /* VERIFY_BITS(c, 64); */ + /* [d u5 0 0 0 0 0 t9 0 0 0 c-u5*R0 t4 t3 t2 t1 t0] = [p15 p14 p13 p12 p11 p10 p9 0 0 0 p5 p4 p3 p2 p1 p0] */ + t5 = c & M; c >>= 26; c += u5 * R1; + VERIFY_BITS(t5, 26); + VERIFY_BITS(c, 39); + /* [d u5 0 0 0 0 0 t9 0 0 c-u5*R1 t5-u5*R0 t4 t3 t2 t1 t0] = [p15 p14 p13 p12 p11 p10 p9 0 0 0 p5 p4 p3 p2 p1 p0] */ + /* [d 0 0 0 0 0 0 t9 0 0 c t5 t4 t3 t2 t1 t0] = [p15 p14 p13 p12 p11 p10 p9 0 0 0 p5 p4 p3 p2 p1 p0] */ + + c += (uint64_t)(a[0]*2) * a[6] + + (uint64_t)(a[1]*2) * a[5] + + (uint64_t)(a[2]*2) * a[4] + + (uint64_t)a[3] * a[3]; + VERIFY_BITS(c, 63); + /* [d 0 0 0 0 0 0 t9 0 0 c t5 t4 t3 t2 t1 t0] = [p15 p14 p13 p12 p11 p10 p9 0 0 p6 p5 p4 p3 p2 p1 p0] */ + d += (uint64_t)(a[7]*2) * a[9] + + (uint64_t)a[8] * a[8]; + VERIFY_BITS(d, 61); + /* [d 0 0 0 0 0 0 t9 0 0 c t5 t4 t3 t2 t1 t0] = [p16 p15 p14 p13 p12 p11 p10 p9 0 0 p6 p5 p4 p3 p2 p1 p0] */ + u6 = d & M; d >>= 26; c += u6 * R0; + VERIFY_BITS(u6, 26); + VERIFY_BITS(d, 35); + /* VERIFY_BITS(c, 64); */ + /* [d u6 0 0 0 0 0 0 t9 0 0 c-u6*R0 t5 t4 t3 t2 t1 t0] = [p16 p15 p14 p13 p12 p11 p10 p9 0 0 p6 p5 p4 p3 p2 p1 p0] */ + t6 = c & M; c >>= 26; c += u6 * R1; + VERIFY_BITS(t6, 26); + VERIFY_BITS(c, 39); + /* [d u6 0 0 0 0 0 0 t9 0 c-u6*R1 t6-u6*R0 t5 t4 t3 t2 t1 t0] = [p16 p15 p14 p13 p12 p11 p10 p9 0 0 p6 p5 p4 p3 p2 p1 p0] */ + /* [d 0 0 0 0 0 0 0 t9 0 c t6 t5 t4 t3 t2 t1 t0] = [p16 p15 p14 p13 p12 p11 p10 p9 0 0 p6 p5 p4 p3 p2 p1 p0] */ + + c += (uint64_t)(a[0]*2) * a[7] + + (uint64_t)(a[1]*2) * a[6] + + (uint64_t)(a[2]*2) * a[5] + + (uint64_t)(a[3]*2) * a[4]; + /* VERIFY_BITS(c, 64); */ + VERIFY_CHECK(c <= 0x8000007C00000007ULL); + /* [d 0 0 0 0 0 0 0 t9 0 c t6 t5 t4 t3 t2 t1 t0] = [p16 p15 p14 p13 p12 p11 p10 p9 0 p7 p6 p5 p4 p3 p2 p1 p0] */ + d += (uint64_t)(a[8]*2) * a[9]; + VERIFY_BITS(d, 58); + /* [d 0 0 0 0 0 0 0 t9 0 c t6 t5 t4 t3 t2 t1 t0] = [p17 p16 p15 p14 p13 p12 p11 p10 p9 0 p7 p6 p5 p4 p3 p2 p1 p0] */ + u7 = d & M; d >>= 26; c += u7 * R0; + VERIFY_BITS(u7, 26); + VERIFY_BITS(d, 32); + /* VERIFY_BITS(c, 64); */ + VERIFY_CHECK(c <= 0x800001703FFFC2F7ULL); + /* [d u7 0 0 0 0 0 0 0 t9 0 c-u7*R0 t6 t5 t4 t3 t2 t1 t0] = [p17 p16 p15 p14 p13 p12 p11 p10 p9 0 p7 p6 p5 p4 p3 p2 p1 p0] */ + t7 = c & M; c >>= 26; c += u7 * R1; + VERIFY_BITS(t7, 26); + VERIFY_BITS(c, 38); + /* [d u7 0 0 0 0 0 0 0 t9 c-u7*R1 t7-u7*R0 t6 t5 t4 t3 t2 t1 t0] = [p17 p16 p15 p14 p13 p12 p11 p10 p9 0 p7 p6 p5 p4 p3 p2 p1 p0] */ + /* [d 0 0 0 0 0 0 0 0 t9 c t7 t6 t5 t4 t3 t2 t1 t0] = [p17 p16 p15 p14 p13 p12 p11 p10 p9 0 p7 p6 p5 p4 p3 p2 p1 p0] */ + + c += (uint64_t)(a[0]*2) * a[8] + + (uint64_t)(a[1]*2) * a[7] + + (uint64_t)(a[2]*2) * a[6] + + (uint64_t)(a[3]*2) * a[5] + + (uint64_t)a[4] * a[4]; + /* VERIFY_BITS(c, 64); */ + VERIFY_CHECK(c <= 0x9000007B80000008ULL); + /* [d 0 0 0 0 0 0 0 0 t9 c t7 t6 t5 t4 t3 t2 t1 t0] = [p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + d += (uint64_t)a[9] * a[9]; + VERIFY_BITS(d, 57); + /* [d 0 0 0 0 0 0 0 0 t9 c t7 t6 t5 t4 t3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + u8 = d & M; d >>= 26; c += u8 * R0; + VERIFY_BITS(u8, 26); + VERIFY_BITS(d, 31); + /* VERIFY_BITS(c, 64); */ + VERIFY_CHECK(c <= 0x9000016FBFFFC2F8ULL); + /* [d u8 0 0 0 0 0 0 0 0 t9 c-u8*R0 t7 t6 t5 t4 t3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + + r[3] = t3; + VERIFY_BITS(r[3], 26); + /* [d u8 0 0 0 0 0 0 0 0 t9 c-u8*R0 t7 t6 t5 t4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + r[4] = t4; + VERIFY_BITS(r[4], 26); + /* [d u8 0 0 0 0 0 0 0 0 t9 c-u8*R0 t7 t6 t5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + r[5] = t5; + VERIFY_BITS(r[5], 26); + /* [d u8 0 0 0 0 0 0 0 0 t9 c-u8*R0 t7 t6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + r[6] = t6; + VERIFY_BITS(r[6], 26); + /* [d u8 0 0 0 0 0 0 0 0 t9 c-u8*R0 t7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + r[7] = t7; + VERIFY_BITS(r[7], 26); + /* [d u8 0 0 0 0 0 0 0 0 t9 c-u8*R0 r7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + + r[8] = c & M; c >>= 26; c += u8 * R1; + VERIFY_BITS(r[8], 26); + VERIFY_BITS(c, 39); + /* [d u8 0 0 0 0 0 0 0 0 t9+c-u8*R1 r8-u8*R0 r7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + /* [d 0 0 0 0 0 0 0 0 0 t9+c r8 r7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + c += d * R0 + t9; + VERIFY_BITS(c, 45); + /* [d 0 0 0 0 0 0 0 0 0 c-d*R0 r8 r7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + r[9] = c & (M >> 4); c >>= 22; c += d * (R1 << 4); + VERIFY_BITS(r[9], 22); + VERIFY_BITS(c, 46); + /* [d 0 0 0 0 0 0 0 0 r9+((c-d*R1<<4)<<22)-d*R0 r8 r7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + /* [d 0 0 0 0 0 0 0 -d*R1 r9+(c<<22)-d*R0 r8 r7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + /* [r9+(c<<22) r8 r7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + + d = c * (R0 >> 4) + t0; + VERIFY_BITS(d, 56); + /* [r9+(c<<22) r8 r7 r6 r5 r4 r3 t2 t1 d-c*R0>>4] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + r[0] = d & M; d >>= 26; + VERIFY_BITS(r[0], 26); + VERIFY_BITS(d, 30); + /* [r9+(c<<22) r8 r7 r6 r5 r4 r3 t2 t1+d r0-c*R0>>4] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + d += c * (R1 >> 4) + t1; + VERIFY_BITS(d, 53); + VERIFY_CHECK(d <= 0x10000003FFFFBFULL); + /* [r9+(c<<22) r8 r7 r6 r5 r4 r3 t2 d-c*R1>>4 r0-c*R0>>4] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + /* [r9 r8 r7 r6 r5 r4 r3 t2 d r0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + r[1] = d & M; d >>= 26; + VERIFY_BITS(r[1], 26); + VERIFY_BITS(d, 27); + VERIFY_CHECK(d <= 0x4000000ULL); + /* [r9 r8 r7 r6 r5 r4 r3 t2+d r1 r0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + d += t2; + VERIFY_BITS(d, 27); + /* [r9 r8 r7 r6 r5 r4 r3 d r1 r0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + r[2] = d; + VERIFY_BITS(r[2], 27); + /* [r9 r8 r7 r6 r5 r4 r3 r2 r1 r0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ +} +#endif + +static void secp256k1_fe_mul(secp256k1_fe *r, const secp256k1_fe *a, const secp256k1_fe * SECP256K1_RESTRICT b) { +#ifdef VERIFY + VERIFY_CHECK(a->magnitude <= 8); + VERIFY_CHECK(b->magnitude <= 8); + secp256k1_fe_verify(a); + secp256k1_fe_verify(b); + VERIFY_CHECK(r != b); +#endif + secp256k1_fe_mul_inner(r->n, a->n, b->n); +#ifdef VERIFY + r->magnitude = 1; + r->normalized = 0; + secp256k1_fe_verify(r); +#endif +} + +static void secp256k1_fe_sqr(secp256k1_fe *r, const secp256k1_fe *a) { +#ifdef VERIFY + VERIFY_CHECK(a->magnitude <= 8); + secp256k1_fe_verify(a); +#endif + secp256k1_fe_sqr_inner(r->n, a->n); +#ifdef VERIFY + r->magnitude = 1; + r->normalized = 0; + secp256k1_fe_verify(r); +#endif +} + +static SECP256K1_INLINE void secp256k1_fe_cmov(secp256k1_fe *r, const secp256k1_fe *a, int flag) { + uint32_t mask0, mask1; + mask0 = flag + ~((uint32_t)0); + mask1 = ~mask0; + r->n[0] = (r->n[0] & mask0) | (a->n[0] & mask1); + r->n[1] = (r->n[1] & mask0) | (a->n[1] & mask1); + r->n[2] = (r->n[2] & mask0) | (a->n[2] & mask1); + r->n[3] = (r->n[3] & mask0) | (a->n[3] & mask1); + r->n[4] = (r->n[4] & mask0) | (a->n[4] & mask1); + r->n[5] = (r->n[5] & mask0) | (a->n[5] & mask1); + r->n[6] = (r->n[6] & mask0) | (a->n[6] & mask1); + r->n[7] = (r->n[7] & mask0) | (a->n[7] & mask1); + r->n[8] = (r->n[8] & mask0) | (a->n[8] & mask1); + r->n[9] = (r->n[9] & mask0) | (a->n[9] & mask1); +#ifdef VERIFY + if (a->magnitude > r->magnitude) { + r->magnitude = a->magnitude; + } + r->normalized &= a->normalized; +#endif +} + +static SECP256K1_INLINE void secp256k1_fe_storage_cmov(secp256k1_fe_storage *r, const secp256k1_fe_storage *a, int flag) { + uint32_t mask0, mask1; + mask0 = flag + ~((uint32_t)0); + mask1 = ~mask0; + r->n[0] = (r->n[0] & mask0) | (a->n[0] & mask1); + r->n[1] = (r->n[1] & mask0) | (a->n[1] & mask1); + r->n[2] = (r->n[2] & mask0) | (a->n[2] & mask1); + r->n[3] = (r->n[3] & mask0) | (a->n[3] & mask1); + r->n[4] = (r->n[4] & mask0) | (a->n[4] & mask1); + r->n[5] = (r->n[5] & mask0) | (a->n[5] & mask1); + r->n[6] = (r->n[6] & mask0) | (a->n[6] & mask1); + r->n[7] = (r->n[7] & mask0) | (a->n[7] & mask1); +} + +static void secp256k1_fe_to_storage(secp256k1_fe_storage *r, const secp256k1_fe *a) { +#ifdef VERIFY + VERIFY_CHECK(a->normalized); +#endif + r->n[0] = a->n[0] | a->n[1] << 26; + r->n[1] = a->n[1] >> 6 | a->n[2] << 20; + r->n[2] = a->n[2] >> 12 | a->n[3] << 14; + r->n[3] = a->n[3] >> 18 | a->n[4] << 8; + r->n[4] = a->n[4] >> 24 | a->n[5] << 2 | a->n[6] << 28; + r->n[5] = a->n[6] >> 4 | a->n[7] << 22; + r->n[6] = a->n[7] >> 10 | a->n[8] << 16; + r->n[7] = a->n[8] >> 16 | a->n[9] << 10; +} + +static SECP256K1_INLINE void secp256k1_fe_from_storage(secp256k1_fe *r, const secp256k1_fe_storage *a) { + r->n[0] = a->n[0] & 0x3FFFFFFUL; + r->n[1] = a->n[0] >> 26 | ((a->n[1] << 6) & 0x3FFFFFFUL); + r->n[2] = a->n[1] >> 20 | ((a->n[2] << 12) & 0x3FFFFFFUL); + r->n[3] = a->n[2] >> 14 | ((a->n[3] << 18) & 0x3FFFFFFUL); + r->n[4] = a->n[3] >> 8 | ((a->n[4] << 24) & 0x3FFFFFFUL); + r->n[5] = (a->n[4] >> 2) & 0x3FFFFFFUL; + r->n[6] = a->n[4] >> 28 | ((a->n[5] << 4) & 0x3FFFFFFUL); + r->n[7] = a->n[5] >> 22 | ((a->n[6] << 10) & 0x3FFFFFFUL); + r->n[8] = a->n[6] >> 16 | ((a->n[7] << 16) & 0x3FFFFFFUL); + r->n[9] = a->n[7] >> 10; +#ifdef VERIFY + r->magnitude = 1; + r->normalized = 1; +#endif +} + +#endif /* SECP256K1_FIELD_REPR_IMPL_H */ diff --git a/Pods/secp256k1_ios/secp256k1_ios/src/field_5x52.h b/Pods/secp256k1_ios/secp256k1_ios/src/field_5x52.h new file mode 100644 index 00000000..bccd8feb --- /dev/null +++ b/Pods/secp256k1_ios/secp256k1_ios/src/field_5x52.h @@ -0,0 +1,47 @@ +/********************************************************************** + * Copyright (c) 2013, 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef SECP256K1_FIELD_REPR_H +#define SECP256K1_FIELD_REPR_H + +#include + +typedef struct { + /* X = sum(i=0..4, elem[i]*2^52) mod n */ + uint64_t n[5]; +#ifdef VERIFY + int magnitude; + int normalized; +#endif +} secp256k1_fe; + +/* Unpacks a constant into a overlapping multi-limbed FE element. */ +#define SECP256K1_FE_CONST_INNER(d7, d6, d5, d4, d3, d2, d1, d0) { \ + (d0) | (((uint64_t)(d1) & 0xFFFFFUL) << 32), \ + ((uint64_t)(d1) >> 20) | (((uint64_t)(d2)) << 12) | (((uint64_t)(d3) & 0xFFUL) << 44), \ + ((uint64_t)(d3) >> 8) | (((uint64_t)(d4) & 0xFFFFFFFUL) << 24), \ + ((uint64_t)(d4) >> 28) | (((uint64_t)(d5)) << 4) | (((uint64_t)(d6) & 0xFFFFUL) << 36), \ + ((uint64_t)(d6) >> 16) | (((uint64_t)(d7)) << 16) \ +} + +#ifdef VERIFY +#define SECP256K1_FE_CONST(d7, d6, d5, d4, d3, d2, d1, d0) {SECP256K1_FE_CONST_INNER((d7), (d6), (d5), (d4), (d3), (d2), (d1), (d0)), 1, 1} +#else +#define SECP256K1_FE_CONST(d7, d6, d5, d4, d3, d2, d1, d0) {SECP256K1_FE_CONST_INNER((d7), (d6), (d5), (d4), (d3), (d2), (d1), (d0))} +#endif + +typedef struct { + uint64_t n[4]; +} secp256k1_fe_storage; + +#define SECP256K1_FE_STORAGE_CONST(d7, d6, d5, d4, d3, d2, d1, d0) {{ \ + (d0) | (((uint64_t)(d1)) << 32), \ + (d2) | (((uint64_t)(d3)) << 32), \ + (d4) | (((uint64_t)(d5)) << 32), \ + (d6) | (((uint64_t)(d7)) << 32) \ +}} + +#endif /* SECP256K1_FIELD_REPR_H */ diff --git a/Pods/secp256k1_ios/secp256k1_ios/src/field_5x52_asm_impl.h b/Pods/secp256k1_ios/secp256k1_ios/src/field_5x52_asm_impl.h new file mode 100644 index 00000000..1fc3171f --- /dev/null +++ b/Pods/secp256k1_ios/secp256k1_ios/src/field_5x52_asm_impl.h @@ -0,0 +1,502 @@ +/********************************************************************** + * Copyright (c) 2013-2014 Diederik Huys, Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +/** + * Changelog: + * - March 2013, Diederik Huys: original version + * - November 2014, Pieter Wuille: updated to use Peter Dettman's parallel multiplication algorithm + * - December 2014, Pieter Wuille: converted from YASM to GCC inline assembly + */ + +#ifndef SECP256K1_FIELD_INNER5X52_IMPL_H +#define SECP256K1_FIELD_INNER5X52_IMPL_H + +SECP256K1_INLINE static void secp256k1_fe_mul_inner(uint64_t *r, const uint64_t *a, const uint64_t * SECP256K1_RESTRICT b) { +/** + * Registers: rdx:rax = multiplication accumulator + * r9:r8 = c + * r15:rcx = d + * r10-r14 = a0-a4 + * rbx = b + * rdi = r + * rsi = a / t? + */ + uint64_t tmp1, tmp2, tmp3; +__asm__ __volatile__( + "movq 0(%%rsi),%%r10\n" + "movq 8(%%rsi),%%r11\n" + "movq 16(%%rsi),%%r12\n" + "movq 24(%%rsi),%%r13\n" + "movq 32(%%rsi),%%r14\n" + + /* d += a3 * b0 */ + "movq 0(%%rbx),%%rax\n" + "mulq %%r13\n" + "movq %%rax,%%rcx\n" + "movq %%rdx,%%r15\n" + /* d += a2 * b1 */ + "movq 8(%%rbx),%%rax\n" + "mulq %%r12\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* d += a1 * b2 */ + "movq 16(%%rbx),%%rax\n" + "mulq %%r11\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* d = a0 * b3 */ + "movq 24(%%rbx),%%rax\n" + "mulq %%r10\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* c = a4 * b4 */ + "movq 32(%%rbx),%%rax\n" + "mulq %%r14\n" + "movq %%rax,%%r8\n" + "movq %%rdx,%%r9\n" + /* d += (c & M) * R */ + "movq $0xfffffffffffff,%%rdx\n" + "andq %%rdx,%%rax\n" + "movq $0x1000003d10,%%rdx\n" + "mulq %%rdx\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* c >>= 52 (%%r8 only) */ + "shrdq $52,%%r9,%%r8\n" + /* t3 (tmp1) = d & M */ + "movq %%rcx,%%rsi\n" + "movq $0xfffffffffffff,%%rdx\n" + "andq %%rdx,%%rsi\n" + "movq %%rsi,%q1\n" + /* d >>= 52 */ + "shrdq $52,%%r15,%%rcx\n" + "xorq %%r15,%%r15\n" + /* d += a4 * b0 */ + "movq 0(%%rbx),%%rax\n" + "mulq %%r14\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* d += a3 * b1 */ + "movq 8(%%rbx),%%rax\n" + "mulq %%r13\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* d += a2 * b2 */ + "movq 16(%%rbx),%%rax\n" + "mulq %%r12\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* d += a1 * b3 */ + "movq 24(%%rbx),%%rax\n" + "mulq %%r11\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* d += a0 * b4 */ + "movq 32(%%rbx),%%rax\n" + "mulq %%r10\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* d += c * R */ + "movq %%r8,%%rax\n" + "movq $0x1000003d10,%%rdx\n" + "mulq %%rdx\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* t4 = d & M (%%rsi) */ + "movq %%rcx,%%rsi\n" + "movq $0xfffffffffffff,%%rdx\n" + "andq %%rdx,%%rsi\n" + /* d >>= 52 */ + "shrdq $52,%%r15,%%rcx\n" + "xorq %%r15,%%r15\n" + /* tx = t4 >> 48 (tmp3) */ + "movq %%rsi,%%rax\n" + "shrq $48,%%rax\n" + "movq %%rax,%q3\n" + /* t4 &= (M >> 4) (tmp2) */ + "movq $0xffffffffffff,%%rax\n" + "andq %%rax,%%rsi\n" + "movq %%rsi,%q2\n" + /* c = a0 * b0 */ + "movq 0(%%rbx),%%rax\n" + "mulq %%r10\n" + "movq %%rax,%%r8\n" + "movq %%rdx,%%r9\n" + /* d += a4 * b1 */ + "movq 8(%%rbx),%%rax\n" + "mulq %%r14\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* d += a3 * b2 */ + "movq 16(%%rbx),%%rax\n" + "mulq %%r13\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* d += a2 * b3 */ + "movq 24(%%rbx),%%rax\n" + "mulq %%r12\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* d += a1 * b4 */ + "movq 32(%%rbx),%%rax\n" + "mulq %%r11\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* u0 = d & M (%%rsi) */ + "movq %%rcx,%%rsi\n" + "movq $0xfffffffffffff,%%rdx\n" + "andq %%rdx,%%rsi\n" + /* d >>= 52 */ + "shrdq $52,%%r15,%%rcx\n" + "xorq %%r15,%%r15\n" + /* u0 = (u0 << 4) | tx (%%rsi) */ + "shlq $4,%%rsi\n" + "movq %q3,%%rax\n" + "orq %%rax,%%rsi\n" + /* c += u0 * (R >> 4) */ + "movq $0x1000003d1,%%rax\n" + "mulq %%rsi\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* r[0] = c & M */ + "movq %%r8,%%rax\n" + "movq $0xfffffffffffff,%%rdx\n" + "andq %%rdx,%%rax\n" + "movq %%rax,0(%%rdi)\n" + /* c >>= 52 */ + "shrdq $52,%%r9,%%r8\n" + "xorq %%r9,%%r9\n" + /* c += a1 * b0 */ + "movq 0(%%rbx),%%rax\n" + "mulq %%r11\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* c += a0 * b1 */ + "movq 8(%%rbx),%%rax\n" + "mulq %%r10\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* d += a4 * b2 */ + "movq 16(%%rbx),%%rax\n" + "mulq %%r14\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* d += a3 * b3 */ + "movq 24(%%rbx),%%rax\n" + "mulq %%r13\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* d += a2 * b4 */ + "movq 32(%%rbx),%%rax\n" + "mulq %%r12\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* c += (d & M) * R */ + "movq %%rcx,%%rax\n" + "movq $0xfffffffffffff,%%rdx\n" + "andq %%rdx,%%rax\n" + "movq $0x1000003d10,%%rdx\n" + "mulq %%rdx\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* d >>= 52 */ + "shrdq $52,%%r15,%%rcx\n" + "xorq %%r15,%%r15\n" + /* r[1] = c & M */ + "movq %%r8,%%rax\n" + "movq $0xfffffffffffff,%%rdx\n" + "andq %%rdx,%%rax\n" + "movq %%rax,8(%%rdi)\n" + /* c >>= 52 */ + "shrdq $52,%%r9,%%r8\n" + "xorq %%r9,%%r9\n" + /* c += a2 * b0 */ + "movq 0(%%rbx),%%rax\n" + "mulq %%r12\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* c += a1 * b1 */ + "movq 8(%%rbx),%%rax\n" + "mulq %%r11\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* c += a0 * b2 (last use of %%r10 = a0) */ + "movq 16(%%rbx),%%rax\n" + "mulq %%r10\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* fetch t3 (%%r10, overwrites a0), t4 (%%rsi) */ + "movq %q2,%%rsi\n" + "movq %q1,%%r10\n" + /* d += a4 * b3 */ + "movq 24(%%rbx),%%rax\n" + "mulq %%r14\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* d += a3 * b4 */ + "movq 32(%%rbx),%%rax\n" + "mulq %%r13\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* c += (d & M) * R */ + "movq %%rcx,%%rax\n" + "movq $0xfffffffffffff,%%rdx\n" + "andq %%rdx,%%rax\n" + "movq $0x1000003d10,%%rdx\n" + "mulq %%rdx\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* d >>= 52 (%%rcx only) */ + "shrdq $52,%%r15,%%rcx\n" + /* r[2] = c & M */ + "movq %%r8,%%rax\n" + "movq $0xfffffffffffff,%%rdx\n" + "andq %%rdx,%%rax\n" + "movq %%rax,16(%%rdi)\n" + /* c >>= 52 */ + "shrdq $52,%%r9,%%r8\n" + "xorq %%r9,%%r9\n" + /* c += t3 */ + "addq %%r10,%%r8\n" + /* c += d * R */ + "movq %%rcx,%%rax\n" + "movq $0x1000003d10,%%rdx\n" + "mulq %%rdx\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* r[3] = c & M */ + "movq %%r8,%%rax\n" + "movq $0xfffffffffffff,%%rdx\n" + "andq %%rdx,%%rax\n" + "movq %%rax,24(%%rdi)\n" + /* c >>= 52 (%%r8 only) */ + "shrdq $52,%%r9,%%r8\n" + /* c += t4 (%%r8 only) */ + "addq %%rsi,%%r8\n" + /* r[4] = c */ + "movq %%r8,32(%%rdi)\n" +: "+S"(a), "=m"(tmp1), "=m"(tmp2), "=m"(tmp3) +: "b"(b), "D"(r) +: "%rax", "%rcx", "%rdx", "%r8", "%r9", "%r10", "%r11", "%r12", "%r13", "%r14", "%r15", "cc", "memory" +); +} + +SECP256K1_INLINE static void secp256k1_fe_sqr_inner(uint64_t *r, const uint64_t *a) { +/** + * Registers: rdx:rax = multiplication accumulator + * r9:r8 = c + * rcx:rbx = d + * r10-r14 = a0-a4 + * r15 = M (0xfffffffffffff) + * rdi = r + * rsi = a / t? + */ + uint64_t tmp1, tmp2, tmp3; +__asm__ __volatile__( + "movq 0(%%rsi),%%r10\n" + "movq 8(%%rsi),%%r11\n" + "movq 16(%%rsi),%%r12\n" + "movq 24(%%rsi),%%r13\n" + "movq 32(%%rsi),%%r14\n" + "movq $0xfffffffffffff,%%r15\n" + + /* d = (a0*2) * a3 */ + "leaq (%%r10,%%r10,1),%%rax\n" + "mulq %%r13\n" + "movq %%rax,%%rbx\n" + "movq %%rdx,%%rcx\n" + /* d += (a1*2) * a2 */ + "leaq (%%r11,%%r11,1),%%rax\n" + "mulq %%r12\n" + "addq %%rax,%%rbx\n" + "adcq %%rdx,%%rcx\n" + /* c = a4 * a4 */ + "movq %%r14,%%rax\n" + "mulq %%r14\n" + "movq %%rax,%%r8\n" + "movq %%rdx,%%r9\n" + /* d += (c & M) * R */ + "andq %%r15,%%rax\n" + "movq $0x1000003d10,%%rdx\n" + "mulq %%rdx\n" + "addq %%rax,%%rbx\n" + "adcq %%rdx,%%rcx\n" + /* c >>= 52 (%%r8 only) */ + "shrdq $52,%%r9,%%r8\n" + /* t3 (tmp1) = d & M */ + "movq %%rbx,%%rsi\n" + "andq %%r15,%%rsi\n" + "movq %%rsi,%q1\n" + /* d >>= 52 */ + "shrdq $52,%%rcx,%%rbx\n" + "xorq %%rcx,%%rcx\n" + /* a4 *= 2 */ + "addq %%r14,%%r14\n" + /* d += a0 * a4 */ + "movq %%r10,%%rax\n" + "mulq %%r14\n" + "addq %%rax,%%rbx\n" + "adcq %%rdx,%%rcx\n" + /* d+= (a1*2) * a3 */ + "leaq (%%r11,%%r11,1),%%rax\n" + "mulq %%r13\n" + "addq %%rax,%%rbx\n" + "adcq %%rdx,%%rcx\n" + /* d += a2 * a2 */ + "movq %%r12,%%rax\n" + "mulq %%r12\n" + "addq %%rax,%%rbx\n" + "adcq %%rdx,%%rcx\n" + /* d += c * R */ + "movq %%r8,%%rax\n" + "movq $0x1000003d10,%%rdx\n" + "mulq %%rdx\n" + "addq %%rax,%%rbx\n" + "adcq %%rdx,%%rcx\n" + /* t4 = d & M (%%rsi) */ + "movq %%rbx,%%rsi\n" + "andq %%r15,%%rsi\n" + /* d >>= 52 */ + "shrdq $52,%%rcx,%%rbx\n" + "xorq %%rcx,%%rcx\n" + /* tx = t4 >> 48 (tmp3) */ + "movq %%rsi,%%rax\n" + "shrq $48,%%rax\n" + "movq %%rax,%q3\n" + /* t4 &= (M >> 4) (tmp2) */ + "movq $0xffffffffffff,%%rax\n" + "andq %%rax,%%rsi\n" + "movq %%rsi,%q2\n" + /* c = a0 * a0 */ + "movq %%r10,%%rax\n" + "mulq %%r10\n" + "movq %%rax,%%r8\n" + "movq %%rdx,%%r9\n" + /* d += a1 * a4 */ + "movq %%r11,%%rax\n" + "mulq %%r14\n" + "addq %%rax,%%rbx\n" + "adcq %%rdx,%%rcx\n" + /* d += (a2*2) * a3 */ + "leaq (%%r12,%%r12,1),%%rax\n" + "mulq %%r13\n" + "addq %%rax,%%rbx\n" + "adcq %%rdx,%%rcx\n" + /* u0 = d & M (%%rsi) */ + "movq %%rbx,%%rsi\n" + "andq %%r15,%%rsi\n" + /* d >>= 52 */ + "shrdq $52,%%rcx,%%rbx\n" + "xorq %%rcx,%%rcx\n" + /* u0 = (u0 << 4) | tx (%%rsi) */ + "shlq $4,%%rsi\n" + "movq %q3,%%rax\n" + "orq %%rax,%%rsi\n" + /* c += u0 * (R >> 4) */ + "movq $0x1000003d1,%%rax\n" + "mulq %%rsi\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* r[0] = c & M */ + "movq %%r8,%%rax\n" + "andq %%r15,%%rax\n" + "movq %%rax,0(%%rdi)\n" + /* c >>= 52 */ + "shrdq $52,%%r9,%%r8\n" + "xorq %%r9,%%r9\n" + /* a0 *= 2 */ + "addq %%r10,%%r10\n" + /* c += a0 * a1 */ + "movq %%r10,%%rax\n" + "mulq %%r11\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* d += a2 * a4 */ + "movq %%r12,%%rax\n" + "mulq %%r14\n" + "addq %%rax,%%rbx\n" + "adcq %%rdx,%%rcx\n" + /* d += a3 * a3 */ + "movq %%r13,%%rax\n" + "mulq %%r13\n" + "addq %%rax,%%rbx\n" + "adcq %%rdx,%%rcx\n" + /* c += (d & M) * R */ + "movq %%rbx,%%rax\n" + "andq %%r15,%%rax\n" + "movq $0x1000003d10,%%rdx\n" + "mulq %%rdx\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* d >>= 52 */ + "shrdq $52,%%rcx,%%rbx\n" + "xorq %%rcx,%%rcx\n" + /* r[1] = c & M */ + "movq %%r8,%%rax\n" + "andq %%r15,%%rax\n" + "movq %%rax,8(%%rdi)\n" + /* c >>= 52 */ + "shrdq $52,%%r9,%%r8\n" + "xorq %%r9,%%r9\n" + /* c += a0 * a2 (last use of %%r10) */ + "movq %%r10,%%rax\n" + "mulq %%r12\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* fetch t3 (%%r10, overwrites a0),t4 (%%rsi) */ + "movq %q2,%%rsi\n" + "movq %q1,%%r10\n" + /* c += a1 * a1 */ + "movq %%r11,%%rax\n" + "mulq %%r11\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* d += a3 * a4 */ + "movq %%r13,%%rax\n" + "mulq %%r14\n" + "addq %%rax,%%rbx\n" + "adcq %%rdx,%%rcx\n" + /* c += (d & M) * R */ + "movq %%rbx,%%rax\n" + "andq %%r15,%%rax\n" + "movq $0x1000003d10,%%rdx\n" + "mulq %%rdx\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* d >>= 52 (%%rbx only) */ + "shrdq $52,%%rcx,%%rbx\n" + /* r[2] = c & M */ + "movq %%r8,%%rax\n" + "andq %%r15,%%rax\n" + "movq %%rax,16(%%rdi)\n" + /* c >>= 52 */ + "shrdq $52,%%r9,%%r8\n" + "xorq %%r9,%%r9\n" + /* c += t3 */ + "addq %%r10,%%r8\n" + /* c += d * R */ + "movq %%rbx,%%rax\n" + "movq $0x1000003d10,%%rdx\n" + "mulq %%rdx\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* r[3] = c & M */ + "movq %%r8,%%rax\n" + "andq %%r15,%%rax\n" + "movq %%rax,24(%%rdi)\n" + /* c >>= 52 (%%r8 only) */ + "shrdq $52,%%r9,%%r8\n" + /* c += t4 (%%r8 only) */ + "addq %%rsi,%%r8\n" + /* r[4] = c */ + "movq %%r8,32(%%rdi)\n" +: "+S"(a), "=m"(tmp1), "=m"(tmp2), "=m"(tmp3) +: "D"(r) +: "%rax", "%rbx", "%rcx", "%rdx", "%r8", "%r9", "%r10", "%r11", "%r12", "%r13", "%r14", "%r15", "cc", "memory" +); +} + +#endif /* SECP256K1_FIELD_INNER5X52_IMPL_H */ diff --git a/Pods/secp256k1_ios/secp256k1_ios/src/field_5x52_impl.h b/Pods/secp256k1_ios/secp256k1_ios/src/field_5x52_impl.h new file mode 100644 index 00000000..957c61b0 --- /dev/null +++ b/Pods/secp256k1_ios/secp256k1_ios/src/field_5x52_impl.h @@ -0,0 +1,496 @@ +/********************************************************************** + * Copyright (c) 2013, 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef SECP256K1_FIELD_REPR_IMPL_H +#define SECP256K1_FIELD_REPR_IMPL_H + +#if defined HAVE_CONFIG_H +#include "libsecp256k1-config.h" +#endif + +#include "util.h" +#include "num.h" +#include "field.h" + +#if defined(USE_ASM_X86_64) +#include "field_5x52_asm_impl.h" +#else +#include "field_5x52_int128_impl.h" +#endif + +/** Implements arithmetic modulo FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE FFFFFC2F, + * represented as 5 uint64_t's in base 2^52. The values are allowed to contain >52 each. In particular, + * each FieldElem has a 'magnitude' associated with it. Internally, a magnitude M means each element + * is at most M*(2^53-1), except the most significant one, which is limited to M*(2^49-1). All operations + * accept any input with magnitude at most M, and have different rules for propagating magnitude to their + * output. + */ + +#ifdef VERIFY +static void secp256k1_fe_verify(const secp256k1_fe *a) { + const uint64_t *d = a->n; + int m = a->normalized ? 1 : 2 * a->magnitude, r = 1; + /* secp256k1 'p' value defined in "Standards for Efficient Cryptography" (SEC2) 2.7.1. */ + r &= (d[0] <= 0xFFFFFFFFFFFFFULL * m); + r &= (d[1] <= 0xFFFFFFFFFFFFFULL * m); + r &= (d[2] <= 0xFFFFFFFFFFFFFULL * m); + r &= (d[3] <= 0xFFFFFFFFFFFFFULL * m); + r &= (d[4] <= 0x0FFFFFFFFFFFFULL * m); + r &= (a->magnitude >= 0); + r &= (a->magnitude <= 2048); + if (a->normalized) { + r &= (a->magnitude <= 1); + if (r && (d[4] == 0x0FFFFFFFFFFFFULL) && ((d[3] & d[2] & d[1]) == 0xFFFFFFFFFFFFFULL)) { + r &= (d[0] < 0xFFFFEFFFFFC2FULL); + } + } + VERIFY_CHECK(r == 1); +} +#endif + +static void secp256k1_fe_normalize(secp256k1_fe *r) { + uint64_t t0 = r->n[0], t1 = r->n[1], t2 = r->n[2], t3 = r->n[3], t4 = r->n[4]; + + /* Reduce t4 at the start so there will be at most a single carry from the first pass */ + uint64_t m; + uint64_t x = t4 >> 48; t4 &= 0x0FFFFFFFFFFFFULL; + + /* The first pass ensures the magnitude is 1, ... */ + t0 += x * 0x1000003D1ULL; + t1 += (t0 >> 52); t0 &= 0xFFFFFFFFFFFFFULL; + t2 += (t1 >> 52); t1 &= 0xFFFFFFFFFFFFFULL; m = t1; + t3 += (t2 >> 52); t2 &= 0xFFFFFFFFFFFFFULL; m &= t2; + t4 += (t3 >> 52); t3 &= 0xFFFFFFFFFFFFFULL; m &= t3; + + /* ... except for a possible carry at bit 48 of t4 (i.e. bit 256 of the field element) */ + VERIFY_CHECK(t4 >> 49 == 0); + + /* At most a single final reduction is needed; check if the value is >= the field characteristic */ + x = (t4 >> 48) | ((t4 == 0x0FFFFFFFFFFFFULL) & (m == 0xFFFFFFFFFFFFFULL) + & (t0 >= 0xFFFFEFFFFFC2FULL)); + + /* Apply the final reduction (for constant-time behaviour, we do it always) */ + t0 += x * 0x1000003D1ULL; + t1 += (t0 >> 52); t0 &= 0xFFFFFFFFFFFFFULL; + t2 += (t1 >> 52); t1 &= 0xFFFFFFFFFFFFFULL; + t3 += (t2 >> 52); t2 &= 0xFFFFFFFFFFFFFULL; + t4 += (t3 >> 52); t3 &= 0xFFFFFFFFFFFFFULL; + + /* If t4 didn't carry to bit 48 already, then it should have after any final reduction */ + VERIFY_CHECK(t4 >> 48 == x); + + /* Mask off the possible multiple of 2^256 from the final reduction */ + t4 &= 0x0FFFFFFFFFFFFULL; + + r->n[0] = t0; r->n[1] = t1; r->n[2] = t2; r->n[3] = t3; r->n[4] = t4; + +#ifdef VERIFY + r->magnitude = 1; + r->normalized = 1; + secp256k1_fe_verify(r); +#endif +} + +static void secp256k1_fe_normalize_weak(secp256k1_fe *r) { + uint64_t t0 = r->n[0], t1 = r->n[1], t2 = r->n[2], t3 = r->n[3], t4 = r->n[4]; + + /* Reduce t4 at the start so there will be at most a single carry from the first pass */ + uint64_t x = t4 >> 48; t4 &= 0x0FFFFFFFFFFFFULL; + + /* The first pass ensures the magnitude is 1, ... */ + t0 += x * 0x1000003D1ULL; + t1 += (t0 >> 52); t0 &= 0xFFFFFFFFFFFFFULL; + t2 += (t1 >> 52); t1 &= 0xFFFFFFFFFFFFFULL; + t3 += (t2 >> 52); t2 &= 0xFFFFFFFFFFFFFULL; + t4 += (t3 >> 52); t3 &= 0xFFFFFFFFFFFFFULL; + + /* ... except for a possible carry at bit 48 of t4 (i.e. bit 256 of the field element) */ + VERIFY_CHECK(t4 >> 49 == 0); + + r->n[0] = t0; r->n[1] = t1; r->n[2] = t2; r->n[3] = t3; r->n[4] = t4; + +#ifdef VERIFY + r->magnitude = 1; + secp256k1_fe_verify(r); +#endif +} + +static void secp256k1_fe_normalize_var(secp256k1_fe *r) { + uint64_t t0 = r->n[0], t1 = r->n[1], t2 = r->n[2], t3 = r->n[3], t4 = r->n[4]; + + /* Reduce t4 at the start so there will be at most a single carry from the first pass */ + uint64_t m; + uint64_t x = t4 >> 48; t4 &= 0x0FFFFFFFFFFFFULL; + + /* The first pass ensures the magnitude is 1, ... */ + t0 += x * 0x1000003D1ULL; + t1 += (t0 >> 52); t0 &= 0xFFFFFFFFFFFFFULL; + t2 += (t1 >> 52); t1 &= 0xFFFFFFFFFFFFFULL; m = t1; + t3 += (t2 >> 52); t2 &= 0xFFFFFFFFFFFFFULL; m &= t2; + t4 += (t3 >> 52); t3 &= 0xFFFFFFFFFFFFFULL; m &= t3; + + /* ... except for a possible carry at bit 48 of t4 (i.e. bit 256 of the field element) */ + VERIFY_CHECK(t4 >> 49 == 0); + + /* At most a single final reduction is needed; check if the value is >= the field characteristic */ + x = (t4 >> 48) | ((t4 == 0x0FFFFFFFFFFFFULL) & (m == 0xFFFFFFFFFFFFFULL) + & (t0 >= 0xFFFFEFFFFFC2FULL)); + + if (x) { + t0 += 0x1000003D1ULL; + t1 += (t0 >> 52); t0 &= 0xFFFFFFFFFFFFFULL; + t2 += (t1 >> 52); t1 &= 0xFFFFFFFFFFFFFULL; + t3 += (t2 >> 52); t2 &= 0xFFFFFFFFFFFFFULL; + t4 += (t3 >> 52); t3 &= 0xFFFFFFFFFFFFFULL; + + /* If t4 didn't carry to bit 48 already, then it should have after any final reduction */ + VERIFY_CHECK(t4 >> 48 == x); + + /* Mask off the possible multiple of 2^256 from the final reduction */ + t4 &= 0x0FFFFFFFFFFFFULL; + } + + r->n[0] = t0; r->n[1] = t1; r->n[2] = t2; r->n[3] = t3; r->n[4] = t4; + +#ifdef VERIFY + r->magnitude = 1; + r->normalized = 1; + secp256k1_fe_verify(r); +#endif +} + +static int secp256k1_fe_normalizes_to_zero(secp256k1_fe *r) { + uint64_t t0 = r->n[0], t1 = r->n[1], t2 = r->n[2], t3 = r->n[3], t4 = r->n[4]; + + /* z0 tracks a possible raw value of 0, z1 tracks a possible raw value of P */ + uint64_t z0, z1; + + /* Reduce t4 at the start so there will be at most a single carry from the first pass */ + uint64_t x = t4 >> 48; t4 &= 0x0FFFFFFFFFFFFULL; + + /* The first pass ensures the magnitude is 1, ... */ + t0 += x * 0x1000003D1ULL; + t1 += (t0 >> 52); t0 &= 0xFFFFFFFFFFFFFULL; z0 = t0; z1 = t0 ^ 0x1000003D0ULL; + t2 += (t1 >> 52); t1 &= 0xFFFFFFFFFFFFFULL; z0 |= t1; z1 &= t1; + t3 += (t2 >> 52); t2 &= 0xFFFFFFFFFFFFFULL; z0 |= t2; z1 &= t2; + t4 += (t3 >> 52); t3 &= 0xFFFFFFFFFFFFFULL; z0 |= t3; z1 &= t3; + z0 |= t4; z1 &= t4 ^ 0xF000000000000ULL; + + /* ... except for a possible carry at bit 48 of t4 (i.e. bit 256 of the field element) */ + VERIFY_CHECK(t4 >> 49 == 0); + + return (z0 == 0) | (z1 == 0xFFFFFFFFFFFFFULL); +} + +static int secp256k1_fe_normalizes_to_zero_var(secp256k1_fe *r) { + uint64_t t0, t1, t2, t3, t4; + uint64_t z0, z1; + uint64_t x; + + t0 = r->n[0]; + t4 = r->n[4]; + + /* Reduce t4 at the start so there will be at most a single carry from the first pass */ + x = t4 >> 48; + + /* The first pass ensures the magnitude is 1, ... */ + t0 += x * 0x1000003D1ULL; + + /* z0 tracks a possible raw value of 0, z1 tracks a possible raw value of P */ + z0 = t0 & 0xFFFFFFFFFFFFFULL; + z1 = z0 ^ 0x1000003D0ULL; + + /* Fast return path should catch the majority of cases */ + if ((z0 != 0ULL) & (z1 != 0xFFFFFFFFFFFFFULL)) { + return 0; + } + + t1 = r->n[1]; + t2 = r->n[2]; + t3 = r->n[3]; + + t4 &= 0x0FFFFFFFFFFFFULL; + + t1 += (t0 >> 52); + t2 += (t1 >> 52); t1 &= 0xFFFFFFFFFFFFFULL; z0 |= t1; z1 &= t1; + t3 += (t2 >> 52); t2 &= 0xFFFFFFFFFFFFFULL; z0 |= t2; z1 &= t2; + t4 += (t3 >> 52); t3 &= 0xFFFFFFFFFFFFFULL; z0 |= t3; z1 &= t3; + z0 |= t4; z1 &= t4 ^ 0xF000000000000ULL; + + /* ... except for a possible carry at bit 48 of t4 (i.e. bit 256 of the field element) */ + VERIFY_CHECK(t4 >> 49 == 0); + + return (z0 == 0) | (z1 == 0xFFFFFFFFFFFFFULL); +} + +SECP256K1_INLINE static void secp256k1_fe_set_int(secp256k1_fe *r, int a) { + r->n[0] = a; + r->n[1] = r->n[2] = r->n[3] = r->n[4] = 0; +#ifdef VERIFY + r->magnitude = 1; + r->normalized = 1; + secp256k1_fe_verify(r); +#endif +} + +SECP256K1_INLINE static int secp256k1_fe_is_zero(const secp256k1_fe *a) { + const uint64_t *t = a->n; +#ifdef VERIFY + VERIFY_CHECK(a->normalized); + secp256k1_fe_verify(a); +#endif + return (t[0] | t[1] | t[2] | t[3] | t[4]) == 0; +} + +SECP256K1_INLINE static int secp256k1_fe_is_odd(const secp256k1_fe *a) { +#ifdef VERIFY + VERIFY_CHECK(a->normalized); + secp256k1_fe_verify(a); +#endif + return a->n[0] & 1; +} + +SECP256K1_INLINE static void secp256k1_fe_clear(secp256k1_fe *a) { + int i; +#ifdef VERIFY + a->magnitude = 0; + a->normalized = 1; +#endif + for (i=0; i<5; i++) { + a->n[i] = 0; + } +} + +static int secp256k1_fe_cmp_var(const secp256k1_fe *a, const secp256k1_fe *b) { + int i; +#ifdef VERIFY + VERIFY_CHECK(a->normalized); + VERIFY_CHECK(b->normalized); + secp256k1_fe_verify(a); + secp256k1_fe_verify(b); +#endif + for (i = 4; i >= 0; i--) { + if (a->n[i] > b->n[i]) { + return 1; + } + if (a->n[i] < b->n[i]) { + return -1; + } + } + return 0; +} + +static int secp256k1_fe_set_b32(secp256k1_fe *r, const unsigned char *a) { + r->n[0] = (uint64_t)a[31] + | ((uint64_t)a[30] << 8) + | ((uint64_t)a[29] << 16) + | ((uint64_t)a[28] << 24) + | ((uint64_t)a[27] << 32) + | ((uint64_t)a[26] << 40) + | ((uint64_t)(a[25] & 0xF) << 48); + r->n[1] = (uint64_t)((a[25] >> 4) & 0xF) + | ((uint64_t)a[24] << 4) + | ((uint64_t)a[23] << 12) + | ((uint64_t)a[22] << 20) + | ((uint64_t)a[21] << 28) + | ((uint64_t)a[20] << 36) + | ((uint64_t)a[19] << 44); + r->n[2] = (uint64_t)a[18] + | ((uint64_t)a[17] << 8) + | ((uint64_t)a[16] << 16) + | ((uint64_t)a[15] << 24) + | ((uint64_t)a[14] << 32) + | ((uint64_t)a[13] << 40) + | ((uint64_t)(a[12] & 0xF) << 48); + r->n[3] = (uint64_t)((a[12] >> 4) & 0xF) + | ((uint64_t)a[11] << 4) + | ((uint64_t)a[10] << 12) + | ((uint64_t)a[9] << 20) + | ((uint64_t)a[8] << 28) + | ((uint64_t)a[7] << 36) + | ((uint64_t)a[6] << 44); + r->n[4] = (uint64_t)a[5] + | ((uint64_t)a[4] << 8) + | ((uint64_t)a[3] << 16) + | ((uint64_t)a[2] << 24) + | ((uint64_t)a[1] << 32) + | ((uint64_t)a[0] << 40); + if (r->n[4] == 0x0FFFFFFFFFFFFULL && (r->n[3] & r->n[2] & r->n[1]) == 0xFFFFFFFFFFFFFULL && r->n[0] >= 0xFFFFEFFFFFC2FULL) { + return 0; + } +#ifdef VERIFY + r->magnitude = 1; + r->normalized = 1; + secp256k1_fe_verify(r); +#endif + return 1; +} + +/** Convert a field element to a 32-byte big endian value. Requires the input to be normalized */ +static void secp256k1_fe_get_b32(unsigned char *r, const secp256k1_fe *a) { +#ifdef VERIFY + VERIFY_CHECK(a->normalized); + secp256k1_fe_verify(a); +#endif + r[0] = (a->n[4] >> 40) & 0xFF; + r[1] = (a->n[4] >> 32) & 0xFF; + r[2] = (a->n[4] >> 24) & 0xFF; + r[3] = (a->n[4] >> 16) & 0xFF; + r[4] = (a->n[4] >> 8) & 0xFF; + r[5] = a->n[4] & 0xFF; + r[6] = (a->n[3] >> 44) & 0xFF; + r[7] = (a->n[3] >> 36) & 0xFF; + r[8] = (a->n[3] >> 28) & 0xFF; + r[9] = (a->n[3] >> 20) & 0xFF; + r[10] = (a->n[3] >> 12) & 0xFF; + r[11] = (a->n[3] >> 4) & 0xFF; + r[12] = ((a->n[2] >> 48) & 0xF) | ((a->n[3] & 0xF) << 4); + r[13] = (a->n[2] >> 40) & 0xFF; + r[14] = (a->n[2] >> 32) & 0xFF; + r[15] = (a->n[2] >> 24) & 0xFF; + r[16] = (a->n[2] >> 16) & 0xFF; + r[17] = (a->n[2] >> 8) & 0xFF; + r[18] = a->n[2] & 0xFF; + r[19] = (a->n[1] >> 44) & 0xFF; + r[20] = (a->n[1] >> 36) & 0xFF; + r[21] = (a->n[1] >> 28) & 0xFF; + r[22] = (a->n[1] >> 20) & 0xFF; + r[23] = (a->n[1] >> 12) & 0xFF; + r[24] = (a->n[1] >> 4) & 0xFF; + r[25] = ((a->n[0] >> 48) & 0xF) | ((a->n[1] & 0xF) << 4); + r[26] = (a->n[0] >> 40) & 0xFF; + r[27] = (a->n[0] >> 32) & 0xFF; + r[28] = (a->n[0] >> 24) & 0xFF; + r[29] = (a->n[0] >> 16) & 0xFF; + r[30] = (a->n[0] >> 8) & 0xFF; + r[31] = a->n[0] & 0xFF; +} + +SECP256K1_INLINE static void secp256k1_fe_negate(secp256k1_fe *r, const secp256k1_fe *a, int m) { +#ifdef VERIFY + VERIFY_CHECK(a->magnitude <= m); + secp256k1_fe_verify(a); +#endif + r->n[0] = 0xFFFFEFFFFFC2FULL * 2 * (m + 1) - a->n[0]; + r->n[1] = 0xFFFFFFFFFFFFFULL * 2 * (m + 1) - a->n[1]; + r->n[2] = 0xFFFFFFFFFFFFFULL * 2 * (m + 1) - a->n[2]; + r->n[3] = 0xFFFFFFFFFFFFFULL * 2 * (m + 1) - a->n[3]; + r->n[4] = 0x0FFFFFFFFFFFFULL * 2 * (m + 1) - a->n[4]; +#ifdef VERIFY + r->magnitude = m + 1; + r->normalized = 0; + secp256k1_fe_verify(r); +#endif +} + +SECP256K1_INLINE static void secp256k1_fe_mul_int(secp256k1_fe *r, int a) { + r->n[0] *= a; + r->n[1] *= a; + r->n[2] *= a; + r->n[3] *= a; + r->n[4] *= a; +#ifdef VERIFY + r->magnitude *= a; + r->normalized = 0; + secp256k1_fe_verify(r); +#endif +} + +SECP256K1_INLINE static void secp256k1_fe_add(secp256k1_fe *r, const secp256k1_fe *a) { +#ifdef VERIFY + secp256k1_fe_verify(a); +#endif + r->n[0] += a->n[0]; + r->n[1] += a->n[1]; + r->n[2] += a->n[2]; + r->n[3] += a->n[3]; + r->n[4] += a->n[4]; +#ifdef VERIFY + r->magnitude += a->magnitude; + r->normalized = 0; + secp256k1_fe_verify(r); +#endif +} + +static void secp256k1_fe_mul(secp256k1_fe *r, const secp256k1_fe *a, const secp256k1_fe * SECP256K1_RESTRICT b) { +#ifdef VERIFY + VERIFY_CHECK(a->magnitude <= 8); + VERIFY_CHECK(b->magnitude <= 8); + secp256k1_fe_verify(a); + secp256k1_fe_verify(b); + VERIFY_CHECK(r != b); +#endif + secp256k1_fe_mul_inner(r->n, a->n, b->n); +#ifdef VERIFY + r->magnitude = 1; + r->normalized = 0; + secp256k1_fe_verify(r); +#endif +} + +static void secp256k1_fe_sqr(secp256k1_fe *r, const secp256k1_fe *a) { +#ifdef VERIFY + VERIFY_CHECK(a->magnitude <= 8); + secp256k1_fe_verify(a); +#endif + secp256k1_fe_sqr_inner(r->n, a->n); +#ifdef VERIFY + r->magnitude = 1; + r->normalized = 0; + secp256k1_fe_verify(r); +#endif +} + +static SECP256K1_INLINE void secp256k1_fe_cmov(secp256k1_fe *r, const secp256k1_fe *a, int flag) { + uint64_t mask0, mask1; + mask0 = flag + ~((uint64_t)0); + mask1 = ~mask0; + r->n[0] = (r->n[0] & mask0) | (a->n[0] & mask1); + r->n[1] = (r->n[1] & mask0) | (a->n[1] & mask1); + r->n[2] = (r->n[2] & mask0) | (a->n[2] & mask1); + r->n[3] = (r->n[3] & mask0) | (a->n[3] & mask1); + r->n[4] = (r->n[4] & mask0) | (a->n[4] & mask1); +#ifdef VERIFY + if (a->magnitude > r->magnitude) { + r->magnitude = a->magnitude; + } + r->normalized &= a->normalized; +#endif +} + +static SECP256K1_INLINE void secp256k1_fe_storage_cmov(secp256k1_fe_storage *r, const secp256k1_fe_storage *a, int flag) { + uint64_t mask0, mask1; + mask0 = flag + ~((uint64_t)0); + mask1 = ~mask0; + r->n[0] = (r->n[0] & mask0) | (a->n[0] & mask1); + r->n[1] = (r->n[1] & mask0) | (a->n[1] & mask1); + r->n[2] = (r->n[2] & mask0) | (a->n[2] & mask1); + r->n[3] = (r->n[3] & mask0) | (a->n[3] & mask1); +} + +static void secp256k1_fe_to_storage(secp256k1_fe_storage *r, const secp256k1_fe *a) { +#ifdef VERIFY + VERIFY_CHECK(a->normalized); +#endif + r->n[0] = a->n[0] | a->n[1] << 52; + r->n[1] = a->n[1] >> 12 | a->n[2] << 40; + r->n[2] = a->n[2] >> 24 | a->n[3] << 28; + r->n[3] = a->n[3] >> 36 | a->n[4] << 16; +} + +static SECP256K1_INLINE void secp256k1_fe_from_storage(secp256k1_fe *r, const secp256k1_fe_storage *a) { + r->n[0] = a->n[0] & 0xFFFFFFFFFFFFFULL; + r->n[1] = a->n[0] >> 52 | ((a->n[1] << 12) & 0xFFFFFFFFFFFFFULL); + r->n[2] = a->n[1] >> 40 | ((a->n[2] << 24) & 0xFFFFFFFFFFFFFULL); + r->n[3] = a->n[2] >> 28 | ((a->n[3] << 36) & 0xFFFFFFFFFFFFFULL); + r->n[4] = a->n[3] >> 16; +#ifdef VERIFY + r->magnitude = 1; + r->normalized = 1; +#endif +} + +#endif /* SECP256K1_FIELD_REPR_IMPL_H */ diff --git a/Pods/secp256k1_ios/secp256k1_ios/src/field_5x52_int128_impl.h b/Pods/secp256k1_ios/secp256k1_ios/src/field_5x52_int128_impl.h new file mode 100644 index 00000000..95a0d179 --- /dev/null +++ b/Pods/secp256k1_ios/secp256k1_ios/src/field_5x52_int128_impl.h @@ -0,0 +1,277 @@ +/********************************************************************** + * Copyright (c) 2013, 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef SECP256K1_FIELD_INNER5X52_IMPL_H +#define SECP256K1_FIELD_INNER5X52_IMPL_H + +#include + +#ifdef VERIFY +#define VERIFY_BITS(x, n) VERIFY_CHECK(((x) >> (n)) == 0) +#else +#define VERIFY_BITS(x, n) do { } while(0) +#endif + +SECP256K1_INLINE static void secp256k1_fe_mul_inner(uint64_t *r, const uint64_t *a, const uint64_t * SECP256K1_RESTRICT b) { + uint128_t c, d; + uint64_t t3, t4, tx, u0; + uint64_t a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4]; + const uint64_t M = 0xFFFFFFFFFFFFFULL, R = 0x1000003D10ULL; + + VERIFY_BITS(a[0], 56); + VERIFY_BITS(a[1], 56); + VERIFY_BITS(a[2], 56); + VERIFY_BITS(a[3], 56); + VERIFY_BITS(a[4], 52); + VERIFY_BITS(b[0], 56); + VERIFY_BITS(b[1], 56); + VERIFY_BITS(b[2], 56); + VERIFY_BITS(b[3], 56); + VERIFY_BITS(b[4], 52); + VERIFY_CHECK(r != b); + + /* [... a b c] is a shorthand for ... + a<<104 + b<<52 + c<<0 mod n. + * px is a shorthand for sum(a[i]*b[x-i], i=0..x). + * Note that [x 0 0 0 0 0] = [x*R]. + */ + + d = (uint128_t)a0 * b[3] + + (uint128_t)a1 * b[2] + + (uint128_t)a2 * b[1] + + (uint128_t)a3 * b[0]; + VERIFY_BITS(d, 114); + /* [d 0 0 0] = [p3 0 0 0] */ + c = (uint128_t)a4 * b[4]; + VERIFY_BITS(c, 112); + /* [c 0 0 0 0 d 0 0 0] = [p8 0 0 0 0 p3 0 0 0] */ + d += (c & M) * R; c >>= 52; + VERIFY_BITS(d, 115); + VERIFY_BITS(c, 60); + /* [c 0 0 0 0 0 d 0 0 0] = [p8 0 0 0 0 p3 0 0 0] */ + t3 = d & M; d >>= 52; + VERIFY_BITS(t3, 52); + VERIFY_BITS(d, 63); + /* [c 0 0 0 0 d t3 0 0 0] = [p8 0 0 0 0 p3 0 0 0] */ + + d += (uint128_t)a0 * b[4] + + (uint128_t)a1 * b[3] + + (uint128_t)a2 * b[2] + + (uint128_t)a3 * b[1] + + (uint128_t)a4 * b[0]; + VERIFY_BITS(d, 115); + /* [c 0 0 0 0 d t3 0 0 0] = [p8 0 0 0 p4 p3 0 0 0] */ + d += c * R; + VERIFY_BITS(d, 116); + /* [d t3 0 0 0] = [p8 0 0 0 p4 p3 0 0 0] */ + t4 = d & M; d >>= 52; + VERIFY_BITS(t4, 52); + VERIFY_BITS(d, 64); + /* [d t4 t3 0 0 0] = [p8 0 0 0 p4 p3 0 0 0] */ + tx = (t4 >> 48); t4 &= (M >> 4); + VERIFY_BITS(tx, 4); + VERIFY_BITS(t4, 48); + /* [d t4+(tx<<48) t3 0 0 0] = [p8 0 0 0 p4 p3 0 0 0] */ + + c = (uint128_t)a0 * b[0]; + VERIFY_BITS(c, 112); + /* [d t4+(tx<<48) t3 0 0 c] = [p8 0 0 0 p4 p3 0 0 p0] */ + d += (uint128_t)a1 * b[4] + + (uint128_t)a2 * b[3] + + (uint128_t)a3 * b[2] + + (uint128_t)a4 * b[1]; + VERIFY_BITS(d, 115); + /* [d t4+(tx<<48) t3 0 0 c] = [p8 0 0 p5 p4 p3 0 0 p0] */ + u0 = d & M; d >>= 52; + VERIFY_BITS(u0, 52); + VERIFY_BITS(d, 63); + /* [d u0 t4+(tx<<48) t3 0 0 c] = [p8 0 0 p5 p4 p3 0 0 p0] */ + /* [d 0 t4+(tx<<48)+(u0<<52) t3 0 0 c] = [p8 0 0 p5 p4 p3 0 0 p0] */ + u0 = (u0 << 4) | tx; + VERIFY_BITS(u0, 56); + /* [d 0 t4+(u0<<48) t3 0 0 c] = [p8 0 0 p5 p4 p3 0 0 p0] */ + c += (uint128_t)u0 * (R >> 4); + VERIFY_BITS(c, 115); + /* [d 0 t4 t3 0 0 c] = [p8 0 0 p5 p4 p3 0 0 p0] */ + r[0] = c & M; c >>= 52; + VERIFY_BITS(r[0], 52); + VERIFY_BITS(c, 61); + /* [d 0 t4 t3 0 c r0] = [p8 0 0 p5 p4 p3 0 0 p0] */ + + c += (uint128_t)a0 * b[1] + + (uint128_t)a1 * b[0]; + VERIFY_BITS(c, 114); + /* [d 0 t4 t3 0 c r0] = [p8 0 0 p5 p4 p3 0 p1 p0] */ + d += (uint128_t)a2 * b[4] + + (uint128_t)a3 * b[3] + + (uint128_t)a4 * b[2]; + VERIFY_BITS(d, 114); + /* [d 0 t4 t3 0 c r0] = [p8 0 p6 p5 p4 p3 0 p1 p0] */ + c += (d & M) * R; d >>= 52; + VERIFY_BITS(c, 115); + VERIFY_BITS(d, 62); + /* [d 0 0 t4 t3 0 c r0] = [p8 0 p6 p5 p4 p3 0 p1 p0] */ + r[1] = c & M; c >>= 52; + VERIFY_BITS(r[1], 52); + VERIFY_BITS(c, 63); + /* [d 0 0 t4 t3 c r1 r0] = [p8 0 p6 p5 p4 p3 0 p1 p0] */ + + c += (uint128_t)a0 * b[2] + + (uint128_t)a1 * b[1] + + (uint128_t)a2 * b[0]; + VERIFY_BITS(c, 114); + /* [d 0 0 t4 t3 c r1 r0] = [p8 0 p6 p5 p4 p3 p2 p1 p0] */ + d += (uint128_t)a3 * b[4] + + (uint128_t)a4 * b[3]; + VERIFY_BITS(d, 114); + /* [d 0 0 t4 t3 c t1 r0] = [p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + c += (d & M) * R; d >>= 52; + VERIFY_BITS(c, 115); + VERIFY_BITS(d, 62); + /* [d 0 0 0 t4 t3 c r1 r0] = [p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + + /* [d 0 0 0 t4 t3 c r1 r0] = [p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + r[2] = c & M; c >>= 52; + VERIFY_BITS(r[2], 52); + VERIFY_BITS(c, 63); + /* [d 0 0 0 t4 t3+c r2 r1 r0] = [p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + c += d * R + t3; + VERIFY_BITS(c, 100); + /* [t4 c r2 r1 r0] = [p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + r[3] = c & M; c >>= 52; + VERIFY_BITS(r[3], 52); + VERIFY_BITS(c, 48); + /* [t4+c r3 r2 r1 r0] = [p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + c += t4; + VERIFY_BITS(c, 49); + /* [c r3 r2 r1 r0] = [p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + r[4] = c; + VERIFY_BITS(r[4], 49); + /* [r4 r3 r2 r1 r0] = [p8 p7 p6 p5 p4 p3 p2 p1 p0] */ +} + +SECP256K1_INLINE static void secp256k1_fe_sqr_inner(uint64_t *r, const uint64_t *a) { + uint128_t c, d; + uint64_t a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4]; + int64_t t3, t4, tx, u0; + const uint64_t M = 0xFFFFFFFFFFFFFULL, R = 0x1000003D10ULL; + + VERIFY_BITS(a[0], 56); + VERIFY_BITS(a[1], 56); + VERIFY_BITS(a[2], 56); + VERIFY_BITS(a[3], 56); + VERIFY_BITS(a[4], 52); + + /** [... a b c] is a shorthand for ... + a<<104 + b<<52 + c<<0 mod n. + * px is a shorthand for sum(a[i]*a[x-i], i=0..x). + * Note that [x 0 0 0 0 0] = [x*R]. + */ + + d = (uint128_t)(a0*2) * a3 + + (uint128_t)(a1*2) * a2; + VERIFY_BITS(d, 114); + /* [d 0 0 0] = [p3 0 0 0] */ + c = (uint128_t)a4 * a4; + VERIFY_BITS(c, 112); + /* [c 0 0 0 0 d 0 0 0] = [p8 0 0 0 0 p3 0 0 0] */ + d += (c & M) * R; c >>= 52; + VERIFY_BITS(d, 115); + VERIFY_BITS(c, 60); + /* [c 0 0 0 0 0 d 0 0 0] = [p8 0 0 0 0 p3 0 0 0] */ + t3 = d & M; d >>= 52; + VERIFY_BITS(t3, 52); + VERIFY_BITS(d, 63); + /* [c 0 0 0 0 d t3 0 0 0] = [p8 0 0 0 0 p3 0 0 0] */ + + a4 *= 2; + d += (uint128_t)a0 * a4 + + (uint128_t)(a1*2) * a3 + + (uint128_t)a2 * a2; + VERIFY_BITS(d, 115); + /* [c 0 0 0 0 d t3 0 0 0] = [p8 0 0 0 p4 p3 0 0 0] */ + d += c * R; + VERIFY_BITS(d, 116); + /* [d t3 0 0 0] = [p8 0 0 0 p4 p3 0 0 0] */ + t4 = d & M; d >>= 52; + VERIFY_BITS(t4, 52); + VERIFY_BITS(d, 64); + /* [d t4 t3 0 0 0] = [p8 0 0 0 p4 p3 0 0 0] */ + tx = (t4 >> 48); t4 &= (M >> 4); + VERIFY_BITS(tx, 4); + VERIFY_BITS(t4, 48); + /* [d t4+(tx<<48) t3 0 0 0] = [p8 0 0 0 p4 p3 0 0 0] */ + + c = (uint128_t)a0 * a0; + VERIFY_BITS(c, 112); + /* [d t4+(tx<<48) t3 0 0 c] = [p8 0 0 0 p4 p3 0 0 p0] */ + d += (uint128_t)a1 * a4 + + (uint128_t)(a2*2) * a3; + VERIFY_BITS(d, 114); + /* [d t4+(tx<<48) t3 0 0 c] = [p8 0 0 p5 p4 p3 0 0 p0] */ + u0 = d & M; d >>= 52; + VERIFY_BITS(u0, 52); + VERIFY_BITS(d, 62); + /* [d u0 t4+(tx<<48) t3 0 0 c] = [p8 0 0 p5 p4 p3 0 0 p0] */ + /* [d 0 t4+(tx<<48)+(u0<<52) t3 0 0 c] = [p8 0 0 p5 p4 p3 0 0 p0] */ + u0 = (u0 << 4) | tx; + VERIFY_BITS(u0, 56); + /* [d 0 t4+(u0<<48) t3 0 0 c] = [p8 0 0 p5 p4 p3 0 0 p0] */ + c += (uint128_t)u0 * (R >> 4); + VERIFY_BITS(c, 113); + /* [d 0 t4 t3 0 0 c] = [p8 0 0 p5 p4 p3 0 0 p0] */ + r[0] = c & M; c >>= 52; + VERIFY_BITS(r[0], 52); + VERIFY_BITS(c, 61); + /* [d 0 t4 t3 0 c r0] = [p8 0 0 p5 p4 p3 0 0 p0] */ + + a0 *= 2; + c += (uint128_t)a0 * a1; + VERIFY_BITS(c, 114); + /* [d 0 t4 t3 0 c r0] = [p8 0 0 p5 p4 p3 0 p1 p0] */ + d += (uint128_t)a2 * a4 + + (uint128_t)a3 * a3; + VERIFY_BITS(d, 114); + /* [d 0 t4 t3 0 c r0] = [p8 0 p6 p5 p4 p3 0 p1 p0] */ + c += (d & M) * R; d >>= 52; + VERIFY_BITS(c, 115); + VERIFY_BITS(d, 62); + /* [d 0 0 t4 t3 0 c r0] = [p8 0 p6 p5 p4 p3 0 p1 p0] */ + r[1] = c & M; c >>= 52; + VERIFY_BITS(r[1], 52); + VERIFY_BITS(c, 63); + /* [d 0 0 t4 t3 c r1 r0] = [p8 0 p6 p5 p4 p3 0 p1 p0] */ + + c += (uint128_t)a0 * a2 + + (uint128_t)a1 * a1; + VERIFY_BITS(c, 114); + /* [d 0 0 t4 t3 c r1 r0] = [p8 0 p6 p5 p4 p3 p2 p1 p0] */ + d += (uint128_t)a3 * a4; + VERIFY_BITS(d, 114); + /* [d 0 0 t4 t3 c r1 r0] = [p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + c += (d & M) * R; d >>= 52; + VERIFY_BITS(c, 115); + VERIFY_BITS(d, 62); + /* [d 0 0 0 t4 t3 c r1 r0] = [p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + r[2] = c & M; c >>= 52; + VERIFY_BITS(r[2], 52); + VERIFY_BITS(c, 63); + /* [d 0 0 0 t4 t3+c r2 r1 r0] = [p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + + c += d * R + t3; + VERIFY_BITS(c, 100); + /* [t4 c r2 r1 r0] = [p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + r[3] = c & M; c >>= 52; + VERIFY_BITS(r[3], 52); + VERIFY_BITS(c, 48); + /* [t4+c r3 r2 r1 r0] = [p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + c += t4; + VERIFY_BITS(c, 49); + /* [c r3 r2 r1 r0] = [p8 p7 p6 p5 p4 p3 p2 p1 p0] */ + r[4] = c; + VERIFY_BITS(r[4], 49); + /* [r4 r3 r2 r1 r0] = [p8 p7 p6 p5 p4 p3 p2 p1 p0] */ +} + +#endif /* SECP256K1_FIELD_INNER5X52_IMPL_H */ diff --git a/Pods/secp256k1_ios/secp256k1_ios/src/field_impl.h b/Pods/secp256k1_ios/secp256k1_ios/src/field_impl.h new file mode 100644 index 00000000..20428648 --- /dev/null +++ b/Pods/secp256k1_ios/secp256k1_ios/src/field_impl.h @@ -0,0 +1,315 @@ +/********************************************************************** + * Copyright (c) 2013, 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef SECP256K1_FIELD_IMPL_H +#define SECP256K1_FIELD_IMPL_H + +#if defined HAVE_CONFIG_H +#include "libsecp256k1-config.h" +#endif + +#include "util.h" + +#if defined(USE_FIELD_10X26) +#include "field_10x26_impl.h" +#elif defined(USE_FIELD_5X52) +#include "field_5x52_impl.h" +#else +#error "Please select field implementation" +#endif + +SECP256K1_INLINE static int secp256k1_fe_equal(const secp256k1_fe *a, const secp256k1_fe *b) { + secp256k1_fe na; + secp256k1_fe_negate(&na, a, 1); + secp256k1_fe_add(&na, b); + return secp256k1_fe_normalizes_to_zero(&na); +} + +SECP256K1_INLINE static int secp256k1_fe_equal_var(const secp256k1_fe *a, const secp256k1_fe *b) { + secp256k1_fe na; + secp256k1_fe_negate(&na, a, 1); + secp256k1_fe_add(&na, b); + return secp256k1_fe_normalizes_to_zero_var(&na); +} + +static int secp256k1_fe_sqrt(secp256k1_fe *r, const secp256k1_fe *a) { + /** Given that p is congruent to 3 mod 4, we can compute the square root of + * a mod p as the (p+1)/4'th power of a. + * + * As (p+1)/4 is an even number, it will have the same result for a and for + * (-a). Only one of these two numbers actually has a square root however, + * so we test at the end by squaring and comparing to the input. + * Also because (p+1)/4 is an even number, the computed square root is + * itself always a square (a ** ((p+1)/4) is the square of a ** ((p+1)/8)). + */ + secp256k1_fe x2, x3, x6, x9, x11, x22, x44, x88, x176, x220, x223, t1; + int j; + + /** The binary representation of (p + 1)/4 has 3 blocks of 1s, with lengths in + * { 2, 22, 223 }. Use an addition chain to calculate 2^n - 1 for each block: + * 1, [2], 3, 6, 9, 11, [22], 44, 88, 176, 220, [223] + */ + + secp256k1_fe_sqr(&x2, a); + secp256k1_fe_mul(&x2, &x2, a); + + secp256k1_fe_sqr(&x3, &x2); + secp256k1_fe_mul(&x3, &x3, a); + + x6 = x3; + for (j=0; j<3; j++) { + secp256k1_fe_sqr(&x6, &x6); + } + secp256k1_fe_mul(&x6, &x6, &x3); + + x9 = x6; + for (j=0; j<3; j++) { + secp256k1_fe_sqr(&x9, &x9); + } + secp256k1_fe_mul(&x9, &x9, &x3); + + x11 = x9; + for (j=0; j<2; j++) { + secp256k1_fe_sqr(&x11, &x11); + } + secp256k1_fe_mul(&x11, &x11, &x2); + + x22 = x11; + for (j=0; j<11; j++) { + secp256k1_fe_sqr(&x22, &x22); + } + secp256k1_fe_mul(&x22, &x22, &x11); + + x44 = x22; + for (j=0; j<22; j++) { + secp256k1_fe_sqr(&x44, &x44); + } + secp256k1_fe_mul(&x44, &x44, &x22); + + x88 = x44; + for (j=0; j<44; j++) { + secp256k1_fe_sqr(&x88, &x88); + } + secp256k1_fe_mul(&x88, &x88, &x44); + + x176 = x88; + for (j=0; j<88; j++) { + secp256k1_fe_sqr(&x176, &x176); + } + secp256k1_fe_mul(&x176, &x176, &x88); + + x220 = x176; + for (j=0; j<44; j++) { + secp256k1_fe_sqr(&x220, &x220); + } + secp256k1_fe_mul(&x220, &x220, &x44); + + x223 = x220; + for (j=0; j<3; j++) { + secp256k1_fe_sqr(&x223, &x223); + } + secp256k1_fe_mul(&x223, &x223, &x3); + + /* The final result is then assembled using a sliding window over the blocks. */ + + t1 = x223; + for (j=0; j<23; j++) { + secp256k1_fe_sqr(&t1, &t1); + } + secp256k1_fe_mul(&t1, &t1, &x22); + for (j=0; j<6; j++) { + secp256k1_fe_sqr(&t1, &t1); + } + secp256k1_fe_mul(&t1, &t1, &x2); + secp256k1_fe_sqr(&t1, &t1); + secp256k1_fe_sqr(r, &t1); + + /* Check that a square root was actually calculated */ + + secp256k1_fe_sqr(&t1, r); + return secp256k1_fe_equal(&t1, a); +} + +static void secp256k1_fe_inv(secp256k1_fe *r, const secp256k1_fe *a) { + secp256k1_fe x2, x3, x6, x9, x11, x22, x44, x88, x176, x220, x223, t1; + int j; + + /** The binary representation of (p - 2) has 5 blocks of 1s, with lengths in + * { 1, 2, 22, 223 }. Use an addition chain to calculate 2^n - 1 for each block: + * [1], [2], 3, 6, 9, 11, [22], 44, 88, 176, 220, [223] + */ + + secp256k1_fe_sqr(&x2, a); + secp256k1_fe_mul(&x2, &x2, a); + + secp256k1_fe_sqr(&x3, &x2); + secp256k1_fe_mul(&x3, &x3, a); + + x6 = x3; + for (j=0; j<3; j++) { + secp256k1_fe_sqr(&x6, &x6); + } + secp256k1_fe_mul(&x6, &x6, &x3); + + x9 = x6; + for (j=0; j<3; j++) { + secp256k1_fe_sqr(&x9, &x9); + } + secp256k1_fe_mul(&x9, &x9, &x3); + + x11 = x9; + for (j=0; j<2; j++) { + secp256k1_fe_sqr(&x11, &x11); + } + secp256k1_fe_mul(&x11, &x11, &x2); + + x22 = x11; + for (j=0; j<11; j++) { + secp256k1_fe_sqr(&x22, &x22); + } + secp256k1_fe_mul(&x22, &x22, &x11); + + x44 = x22; + for (j=0; j<22; j++) { + secp256k1_fe_sqr(&x44, &x44); + } + secp256k1_fe_mul(&x44, &x44, &x22); + + x88 = x44; + for (j=0; j<44; j++) { + secp256k1_fe_sqr(&x88, &x88); + } + secp256k1_fe_mul(&x88, &x88, &x44); + + x176 = x88; + for (j=0; j<88; j++) { + secp256k1_fe_sqr(&x176, &x176); + } + secp256k1_fe_mul(&x176, &x176, &x88); + + x220 = x176; + for (j=0; j<44; j++) { + secp256k1_fe_sqr(&x220, &x220); + } + secp256k1_fe_mul(&x220, &x220, &x44); + + x223 = x220; + for (j=0; j<3; j++) { + secp256k1_fe_sqr(&x223, &x223); + } + secp256k1_fe_mul(&x223, &x223, &x3); + + /* The final result is then assembled using a sliding window over the blocks. */ + + t1 = x223; + for (j=0; j<23; j++) { + secp256k1_fe_sqr(&t1, &t1); + } + secp256k1_fe_mul(&t1, &t1, &x22); + for (j=0; j<5; j++) { + secp256k1_fe_sqr(&t1, &t1); + } + secp256k1_fe_mul(&t1, &t1, a); + for (j=0; j<3; j++) { + secp256k1_fe_sqr(&t1, &t1); + } + secp256k1_fe_mul(&t1, &t1, &x2); + for (j=0; j<2; j++) { + secp256k1_fe_sqr(&t1, &t1); + } + secp256k1_fe_mul(r, a, &t1); +} + +static void secp256k1_fe_inv_var(secp256k1_fe *r, const secp256k1_fe *a) { +#if defined(USE_FIELD_INV_BUILTIN) + secp256k1_fe_inv(r, a); +#elif defined(USE_FIELD_INV_NUM) + secp256k1_num n, m; + static const secp256k1_fe negone = SECP256K1_FE_CONST( + 0xFFFFFFFFUL, 0xFFFFFFFFUL, 0xFFFFFFFFUL, 0xFFFFFFFFUL, + 0xFFFFFFFFUL, 0xFFFFFFFFUL, 0xFFFFFFFEUL, 0xFFFFFC2EUL + ); + /* secp256k1 field prime, value p defined in "Standards for Efficient Cryptography" (SEC2) 2.7.1. */ + static const unsigned char prime[32] = { + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFC,0x2F + }; + unsigned char b[32]; + int res; + secp256k1_fe c = *a; + secp256k1_fe_normalize_var(&c); + secp256k1_fe_get_b32(b, &c); + secp256k1_num_set_bin(&n, b, 32); + secp256k1_num_set_bin(&m, prime, 32); + secp256k1_num_mod_inverse(&n, &n, &m); + secp256k1_num_get_bin(b, 32, &n); + res = secp256k1_fe_set_b32(r, b); + (void)res; + VERIFY_CHECK(res); + /* Verify the result is the (unique) valid inverse using non-GMP code. */ + secp256k1_fe_mul(&c, &c, r); + secp256k1_fe_add(&c, &negone); + CHECK(secp256k1_fe_normalizes_to_zero_var(&c)); +#else +#error "Please select field inverse implementation" +#endif +} + +static void secp256k1_fe_inv_all_var(secp256k1_fe *r, const secp256k1_fe *a, size_t len) { + secp256k1_fe u; + size_t i; + if (len < 1) { + return; + } + + VERIFY_CHECK((r + len <= a) || (a + len <= r)); + + r[0] = a[0]; + + i = 0; + while (++i < len) { + secp256k1_fe_mul(&r[i], &r[i - 1], &a[i]); + } + + secp256k1_fe_inv_var(&u, &r[--i]); + + while (i > 0) { + size_t j = i--; + secp256k1_fe_mul(&r[j], &r[i], &u); + secp256k1_fe_mul(&u, &u, &a[j]); + } + + r[0] = u; +} + +static int secp256k1_fe_is_quad_var(const secp256k1_fe *a) { +#ifndef USE_NUM_NONE + unsigned char b[32]; + secp256k1_num n; + secp256k1_num m; + /* secp256k1 field prime, value p defined in "Standards for Efficient Cryptography" (SEC2) 2.7.1. */ + static const unsigned char prime[32] = { + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFC,0x2F + }; + + secp256k1_fe c = *a; + secp256k1_fe_normalize_var(&c); + secp256k1_fe_get_b32(b, &c); + secp256k1_num_set_bin(&n, b, 32); + secp256k1_num_set_bin(&m, prime, 32); + return secp256k1_num_jacobi(&n, &m) >= 0; +#else + secp256k1_fe r; + return secp256k1_fe_sqrt(&r, a); +#endif +} + +#endif /* SECP256K1_FIELD_IMPL_H */ diff --git a/Pods/secp256k1_ios/secp256k1_ios/src/group.h b/Pods/secp256k1_ios/secp256k1_ios/src/group.h new file mode 100644 index 00000000..ea1302de --- /dev/null +++ b/Pods/secp256k1_ios/secp256k1_ios/src/group.h @@ -0,0 +1,144 @@ +/********************************************************************** + * Copyright (c) 2013, 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef SECP256K1_GROUP_H +#define SECP256K1_GROUP_H + +#include "num.h" +#include "field.h" + +/** A group element of the secp256k1 curve, in affine coordinates. */ +typedef struct { + secp256k1_fe x; + secp256k1_fe y; + int infinity; /* whether this represents the point at infinity */ +} secp256k1_ge; + +#define SECP256K1_GE_CONST(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {SECP256K1_FE_CONST((a),(b),(c),(d),(e),(f),(g),(h)), SECP256K1_FE_CONST((i),(j),(k),(l),(m),(n),(o),(p)), 0} +#define SECP256K1_GE_CONST_INFINITY {SECP256K1_FE_CONST(0, 0, 0, 0, 0, 0, 0, 0), SECP256K1_FE_CONST(0, 0, 0, 0, 0, 0, 0, 0), 1} + +/** A group element of the secp256k1 curve, in jacobian coordinates. */ +typedef struct { + secp256k1_fe x; /* actual X: x/z^2 */ + secp256k1_fe y; /* actual Y: y/z^3 */ + secp256k1_fe z; + int infinity; /* whether this represents the point at infinity */ +} secp256k1_gej; + +#define SECP256K1_GEJ_CONST(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {SECP256K1_FE_CONST((a),(b),(c),(d),(e),(f),(g),(h)), SECP256K1_FE_CONST((i),(j),(k),(l),(m),(n),(o),(p)), SECP256K1_FE_CONST(0, 0, 0, 0, 0, 0, 0, 1), 0} +#define SECP256K1_GEJ_CONST_INFINITY {SECP256K1_FE_CONST(0, 0, 0, 0, 0, 0, 0, 0), SECP256K1_FE_CONST(0, 0, 0, 0, 0, 0, 0, 0), SECP256K1_FE_CONST(0, 0, 0, 0, 0, 0, 0, 0), 1} + +typedef struct { + secp256k1_fe_storage x; + secp256k1_fe_storage y; +} secp256k1_ge_storage; + +#define SECP256K1_GE_STORAGE_CONST(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {SECP256K1_FE_STORAGE_CONST((a),(b),(c),(d),(e),(f),(g),(h)), SECP256K1_FE_STORAGE_CONST((i),(j),(k),(l),(m),(n),(o),(p))} + +#define SECP256K1_GE_STORAGE_CONST_GET(t) SECP256K1_FE_STORAGE_CONST_GET(t.x), SECP256K1_FE_STORAGE_CONST_GET(t.y) + +/** Set a group element equal to the point with given X and Y coordinates */ +static void secp256k1_ge_set_xy(secp256k1_ge *r, const secp256k1_fe *x, const secp256k1_fe *y); + +/** Set a group element (affine) equal to the point with the given X coordinate + * and a Y coordinate that is a quadratic residue modulo p. The return value + * is true iff a coordinate with the given X coordinate exists. + */ +static int secp256k1_ge_set_xquad(secp256k1_ge *r, const secp256k1_fe *x); + +/** Set a group element (affine) equal to the point with the given X coordinate, and given oddness + * for Y. Return value indicates whether the result is valid. */ +static int secp256k1_ge_set_xo_var(secp256k1_ge *r, const secp256k1_fe *x, int odd); + +/** Check whether a group element is the point at infinity. */ +static int secp256k1_ge_is_infinity(const secp256k1_ge *a); + +/** Check whether a group element is valid (i.e., on the curve). */ +static int secp256k1_ge_is_valid_var(const secp256k1_ge *a); + +static void secp256k1_ge_neg(secp256k1_ge *r, const secp256k1_ge *a); + +/** Set a group element equal to another which is given in jacobian coordinates */ +static void secp256k1_ge_set_gej(secp256k1_ge *r, secp256k1_gej *a); + +/** Set a batch of group elements equal to the inputs given in jacobian coordinates */ +static void secp256k1_ge_set_all_gej_var(secp256k1_ge *r, const secp256k1_gej *a, size_t len, const secp256k1_callback *cb); + +/** Set a batch of group elements equal to the inputs given in jacobian + * coordinates (with known z-ratios). zr must contain the known z-ratios such + * that mul(a[i].z, zr[i+1]) == a[i+1].z. zr[0] is ignored. */ +static void secp256k1_ge_set_table_gej_var(secp256k1_ge *r, const secp256k1_gej *a, const secp256k1_fe *zr, size_t len); + +/** Bring a batch inputs given in jacobian coordinates (with known z-ratios) to + * the same global z "denominator". zr must contain the known z-ratios such + * that mul(a[i].z, zr[i+1]) == a[i+1].z. zr[0] is ignored. The x and y + * coordinates of the result are stored in r, the common z coordinate is + * stored in globalz. */ +static void secp256k1_ge_globalz_set_table_gej(size_t len, secp256k1_ge *r, secp256k1_fe *globalz, const secp256k1_gej *a, const secp256k1_fe *zr); + +/** Set a group element (jacobian) equal to the point at infinity. */ +static void secp256k1_gej_set_infinity(secp256k1_gej *r); + +/** Set a group element (jacobian) equal to another which is given in affine coordinates. */ +static void secp256k1_gej_set_ge(secp256k1_gej *r, const secp256k1_ge *a); + +/** Compare the X coordinate of a group element (jacobian). */ +static int secp256k1_gej_eq_x_var(const secp256k1_fe *x, const secp256k1_gej *a); + +/** Set r equal to the inverse of a (i.e., mirrored around the X axis) */ +static void secp256k1_gej_neg(secp256k1_gej *r, const secp256k1_gej *a); + +/** Check whether a group element is the point at infinity. */ +static int secp256k1_gej_is_infinity(const secp256k1_gej *a); + +/** Check whether a group element's y coordinate is a quadratic residue. */ +static int secp256k1_gej_has_quad_y_var(const secp256k1_gej *a); + +/** Set r equal to the double of a. If rzr is not-NULL, r->z = a->z * *rzr (where infinity means an implicit z = 0). + * a may not be zero. Constant time. */ +static void secp256k1_gej_double_nonzero(secp256k1_gej *r, const secp256k1_gej *a, secp256k1_fe *rzr); + +/** Set r equal to the double of a. If rzr is not-NULL, r->z = a->z * *rzr (where infinity means an implicit z = 0). */ +static void secp256k1_gej_double_var(secp256k1_gej *r, const secp256k1_gej *a, secp256k1_fe *rzr); + +/** Set r equal to the sum of a and b. If rzr is non-NULL, r->z = a->z * *rzr (a cannot be infinity in that case). */ +static void secp256k1_gej_add_var(secp256k1_gej *r, const secp256k1_gej *a, const secp256k1_gej *b, secp256k1_fe *rzr); + +/** Set r equal to the sum of a and b (with b given in affine coordinates, and not infinity). */ +static void secp256k1_gej_add_ge(secp256k1_gej *r, const secp256k1_gej *a, const secp256k1_ge *b); + +/** Set r equal to the sum of a and b (with b given in affine coordinates). This is more efficient + than secp256k1_gej_add_var. It is identical to secp256k1_gej_add_ge but without constant-time + guarantee, and b is allowed to be infinity. If rzr is non-NULL, r->z = a->z * *rzr (a cannot be infinity in that case). */ +static void secp256k1_gej_add_ge_var(secp256k1_gej *r, const secp256k1_gej *a, const secp256k1_ge *b, secp256k1_fe *rzr); + +/** Set r equal to the sum of a and b (with the inverse of b's Z coordinate passed as bzinv). */ +static void secp256k1_gej_add_zinv_var(secp256k1_gej *r, const secp256k1_gej *a, const secp256k1_ge *b, const secp256k1_fe *bzinv); + +#ifdef USE_ENDOMORPHISM +/** Set r to be equal to lambda times a, where lambda is chosen in a way such that this is very fast. */ +static void secp256k1_ge_mul_lambda(secp256k1_ge *r, const secp256k1_ge *a); +#endif + +/** Clear a secp256k1_gej to prevent leaking sensitive information. */ +static void secp256k1_gej_clear(secp256k1_gej *r); + +/** Clear a secp256k1_ge to prevent leaking sensitive information. */ +static void secp256k1_ge_clear(secp256k1_ge *r); + +/** Convert a group element to the storage type. */ +static void secp256k1_ge_to_storage(secp256k1_ge_storage *r, const secp256k1_ge *a); + +/** Convert a group element back from the storage type. */ +static void secp256k1_ge_from_storage(secp256k1_ge *r, const secp256k1_ge_storage *a); + +/** If flag is true, set *r equal to *a; otherwise leave it. Constant-time. */ +static void secp256k1_ge_storage_cmov(secp256k1_ge_storage *r, const secp256k1_ge_storage *a, int flag); + +/** Rescale a jacobian point by b which must be non-zero. Constant-time. */ +static void secp256k1_gej_rescale(secp256k1_gej *r, const secp256k1_fe *b); + +#endif /* SECP256K1_GROUP_H */ diff --git a/Pods/secp256k1_ios/secp256k1_ios/src/group_impl.h b/Pods/secp256k1_ios/secp256k1_ios/src/group_impl.h new file mode 100644 index 00000000..b31b6c12 --- /dev/null +++ b/Pods/secp256k1_ios/secp256k1_ios/src/group_impl.h @@ -0,0 +1,700 @@ +/********************************************************************** + * Copyright (c) 2013, 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef SECP256K1_GROUP_IMPL_H +#define SECP256K1_GROUP_IMPL_H + +#include "num.h" +#include "field.h" +#include "group.h" + +/* These points can be generated in sage as follows: + * + * 0. Setup a worksheet with the following parameters. + * b = 4 # whatever CURVE_B will be set to + * F = FiniteField (0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F) + * C = EllipticCurve ([F (0), F (b)]) + * + * 1. Determine all the small orders available to you. (If there are + * no satisfactory ones, go back and change b.) + * print C.order().factor(limit=1000) + * + * 2. Choose an order as one of the prime factors listed in the above step. + * (You can also multiply some to get a composite order, though the + * tests will crash trying to invert scalars during signing.) We take a + * random point and scale it to drop its order to the desired value. + * There is some probability this won't work; just try again. + * order = 199 + * P = C.random_point() + * P = (int(P.order()) / int(order)) * P + * assert(P.order() == order) + * + * 3. Print the values. You'll need to use a vim macro or something to + * split the hex output into 4-byte chunks. + * print "%x %x" % P.xy() + */ +#if defined(EXHAUSTIVE_TEST_ORDER) +# if EXHAUSTIVE_TEST_ORDER == 199 +const secp256k1_ge secp256k1_ge_const_g = SECP256K1_GE_CONST( + 0xFA7CC9A7, 0x0737F2DB, 0xA749DD39, 0x2B4FB069, + 0x3B017A7D, 0xA808C2F1, 0xFB12940C, 0x9EA66C18, + 0x78AC123A, 0x5ED8AEF3, 0x8732BC91, 0x1F3A2868, + 0x48DF246C, 0x808DAE72, 0xCFE52572, 0x7F0501ED +); + +const int CURVE_B = 4; +# elif EXHAUSTIVE_TEST_ORDER == 13 +const secp256k1_ge secp256k1_ge_const_g = SECP256K1_GE_CONST( + 0xedc60018, 0xa51a786b, 0x2ea91f4d, 0x4c9416c0, + 0x9de54c3b, 0xa1316554, 0x6cf4345c, 0x7277ef15, + 0x54cb1b6b, 0xdc8c1273, 0x087844ea, 0x43f4603e, + 0x0eaf9a43, 0xf6effe55, 0x939f806d, 0x37adf8ac +); +const int CURVE_B = 2; +# else +# error No known generator for the specified exhaustive test group order. +# endif +#else +/** Generator for secp256k1, value 'g' defined in + * "Standards for Efficient Cryptography" (SEC2) 2.7.1. + */ +static const secp256k1_ge secp256k1_ge_const_g = SECP256K1_GE_CONST( + 0x79BE667EUL, 0xF9DCBBACUL, 0x55A06295UL, 0xCE870B07UL, + 0x029BFCDBUL, 0x2DCE28D9UL, 0x59F2815BUL, 0x16F81798UL, + 0x483ADA77UL, 0x26A3C465UL, 0x5DA4FBFCUL, 0x0E1108A8UL, + 0xFD17B448UL, 0xA6855419UL, 0x9C47D08FUL, 0xFB10D4B8UL +); + +const int CURVE_B = 7; +#endif + +static void secp256k1_ge_set_gej_zinv(secp256k1_ge *r, const secp256k1_gej *a, const secp256k1_fe *zi) { + secp256k1_fe zi2; + secp256k1_fe zi3; + secp256k1_fe_sqr(&zi2, zi); + secp256k1_fe_mul(&zi3, &zi2, zi); + secp256k1_fe_mul(&r->x, &a->x, &zi2); + secp256k1_fe_mul(&r->y, &a->y, &zi3); + r->infinity = a->infinity; +} + +static void secp256k1_ge_set_xy(secp256k1_ge *r, const secp256k1_fe *x, const secp256k1_fe *y) { + r->infinity = 0; + r->x = *x; + r->y = *y; +} + +static int secp256k1_ge_is_infinity(const secp256k1_ge *a) { + return a->infinity; +} + +static void secp256k1_ge_neg(secp256k1_ge *r, const secp256k1_ge *a) { + *r = *a; + secp256k1_fe_normalize_weak(&r->y); + secp256k1_fe_negate(&r->y, &r->y, 1); +} + +static void secp256k1_ge_set_gej(secp256k1_ge *r, secp256k1_gej *a) { + secp256k1_fe z2, z3; + r->infinity = a->infinity; + secp256k1_fe_inv(&a->z, &a->z); + secp256k1_fe_sqr(&z2, &a->z); + secp256k1_fe_mul(&z3, &a->z, &z2); + secp256k1_fe_mul(&a->x, &a->x, &z2); + secp256k1_fe_mul(&a->y, &a->y, &z3); + secp256k1_fe_set_int(&a->z, 1); + r->x = a->x; + r->y = a->y; +} + +static void secp256k1_ge_set_gej_var(secp256k1_ge *r, secp256k1_gej *a) { + secp256k1_fe z2, z3; + r->infinity = a->infinity; + if (a->infinity) { + return; + } + secp256k1_fe_inv_var(&a->z, &a->z); + secp256k1_fe_sqr(&z2, &a->z); + secp256k1_fe_mul(&z3, &a->z, &z2); + secp256k1_fe_mul(&a->x, &a->x, &z2); + secp256k1_fe_mul(&a->y, &a->y, &z3); + secp256k1_fe_set_int(&a->z, 1); + r->x = a->x; + r->y = a->y; +} + +static void secp256k1_ge_set_all_gej_var(secp256k1_ge *r, const secp256k1_gej *a, size_t len, const secp256k1_callback *cb) { + secp256k1_fe *az; + secp256k1_fe *azi; + size_t i; + size_t count = 0; + az = (secp256k1_fe *)checked_malloc(cb, sizeof(secp256k1_fe) * len); + for (i = 0; i < len; i++) { + if (!a[i].infinity) { + az[count++] = a[i].z; + } + } + + azi = (secp256k1_fe *)checked_malloc(cb, sizeof(secp256k1_fe) * count); + secp256k1_fe_inv_all_var(azi, az, count); + free(az); + + count = 0; + for (i = 0; i < len; i++) { + r[i].infinity = a[i].infinity; + if (!a[i].infinity) { + secp256k1_ge_set_gej_zinv(&r[i], &a[i], &azi[count++]); + } + } + free(azi); +} + +static void secp256k1_ge_set_table_gej_var(secp256k1_ge *r, const secp256k1_gej *a, const secp256k1_fe *zr, size_t len) { + size_t i = len - 1; + secp256k1_fe zi; + + if (len > 0) { + /* Compute the inverse of the last z coordinate, and use it to compute the last affine output. */ + secp256k1_fe_inv(&zi, &a[i].z); + secp256k1_ge_set_gej_zinv(&r[i], &a[i], &zi); + + /* Work out way backwards, using the z-ratios to scale the x/y values. */ + while (i > 0) { + secp256k1_fe_mul(&zi, &zi, &zr[i]); + i--; + secp256k1_ge_set_gej_zinv(&r[i], &a[i], &zi); + } + } +} + +static void secp256k1_ge_globalz_set_table_gej(size_t len, secp256k1_ge *r, secp256k1_fe *globalz, const secp256k1_gej *a, const secp256k1_fe *zr) { + size_t i = len - 1; + secp256k1_fe zs; + + if (len > 0) { + /* The z of the final point gives us the "global Z" for the table. */ + r[i].x = a[i].x; + r[i].y = a[i].y; + *globalz = a[i].z; + r[i].infinity = 0; + zs = zr[i]; + + /* Work our way backwards, using the z-ratios to scale the x/y values. */ + while (i > 0) { + if (i != len - 1) { + secp256k1_fe_mul(&zs, &zs, &zr[i]); + } + i--; + secp256k1_ge_set_gej_zinv(&r[i], &a[i], &zs); + } + } +} + +static void secp256k1_gej_set_infinity(secp256k1_gej *r) { + r->infinity = 1; + secp256k1_fe_clear(&r->x); + secp256k1_fe_clear(&r->y); + secp256k1_fe_clear(&r->z); +} + +static void secp256k1_gej_clear(secp256k1_gej *r) { + r->infinity = 0; + secp256k1_fe_clear(&r->x); + secp256k1_fe_clear(&r->y); + secp256k1_fe_clear(&r->z); +} + +static void secp256k1_ge_clear(secp256k1_ge *r) { + r->infinity = 0; + secp256k1_fe_clear(&r->x); + secp256k1_fe_clear(&r->y); +} + +static int secp256k1_ge_set_xquad(secp256k1_ge *r, const secp256k1_fe *x) { + secp256k1_fe x2, x3, c; + r->x = *x; + secp256k1_fe_sqr(&x2, x); + secp256k1_fe_mul(&x3, x, &x2); + r->infinity = 0; + secp256k1_fe_set_int(&c, CURVE_B); + secp256k1_fe_add(&c, &x3); + return secp256k1_fe_sqrt(&r->y, &c); +} + +static int secp256k1_ge_set_xo_var(secp256k1_ge *r, const secp256k1_fe *x, int odd) { + if (!secp256k1_ge_set_xquad(r, x)) { + return 0; + } + secp256k1_fe_normalize_var(&r->y); + if (secp256k1_fe_is_odd(&r->y) != odd) { + secp256k1_fe_negate(&r->y, &r->y, 1); + } + return 1; + +} + +static void secp256k1_gej_set_ge(secp256k1_gej *r, const secp256k1_ge *a) { + r->infinity = a->infinity; + r->x = a->x; + r->y = a->y; + secp256k1_fe_set_int(&r->z, 1); +} + +static int secp256k1_gej_eq_x_var(const secp256k1_fe *x, const secp256k1_gej *a) { + secp256k1_fe r, r2; + VERIFY_CHECK(!a->infinity); + secp256k1_fe_sqr(&r, &a->z); secp256k1_fe_mul(&r, &r, x); + r2 = a->x; secp256k1_fe_normalize_weak(&r2); + return secp256k1_fe_equal_var(&r, &r2); +} + +static void secp256k1_gej_neg(secp256k1_gej *r, const secp256k1_gej *a) { + r->infinity = a->infinity; + r->x = a->x; + r->y = a->y; + r->z = a->z; + secp256k1_fe_normalize_weak(&r->y); + secp256k1_fe_negate(&r->y, &r->y, 1); +} + +static int secp256k1_gej_is_infinity(const secp256k1_gej *a) { + return a->infinity; +} + +static int secp256k1_gej_is_valid_var(const secp256k1_gej *a) { + secp256k1_fe y2, x3, z2, z6; + if (a->infinity) { + return 0; + } + /** y^2 = x^3 + 7 + * (Y/Z^3)^2 = (X/Z^2)^3 + 7 + * Y^2 / Z^6 = X^3 / Z^6 + 7 + * Y^2 = X^3 + 7*Z^6 + */ + secp256k1_fe_sqr(&y2, &a->y); + secp256k1_fe_sqr(&x3, &a->x); secp256k1_fe_mul(&x3, &x3, &a->x); + secp256k1_fe_sqr(&z2, &a->z); + secp256k1_fe_sqr(&z6, &z2); secp256k1_fe_mul(&z6, &z6, &z2); + secp256k1_fe_mul_int(&z6, CURVE_B); + secp256k1_fe_add(&x3, &z6); + secp256k1_fe_normalize_weak(&x3); + return secp256k1_fe_equal_var(&y2, &x3); +} + +static int secp256k1_ge_is_valid_var(const secp256k1_ge *a) { + secp256k1_fe y2, x3, c; + if (a->infinity) { + return 0; + } + /* y^2 = x^3 + 7 */ + secp256k1_fe_sqr(&y2, &a->y); + secp256k1_fe_sqr(&x3, &a->x); secp256k1_fe_mul(&x3, &x3, &a->x); + secp256k1_fe_set_int(&c, CURVE_B); + secp256k1_fe_add(&x3, &c); + secp256k1_fe_normalize_weak(&x3); + return secp256k1_fe_equal_var(&y2, &x3); +} + +static void secp256k1_gej_double_var(secp256k1_gej *r, const secp256k1_gej *a, secp256k1_fe *rzr) { + /* Operations: 3 mul, 4 sqr, 0 normalize, 12 mul_int/add/negate. + * + * Note that there is an implementation described at + * https://hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#doubling-dbl-2009-l + * which trades a multiply for a square, but in practice this is actually slower, + * mainly because it requires more normalizations. + */ + secp256k1_fe t1,t2,t3,t4; + /** For secp256k1, 2Q is infinity if and only if Q is infinity. This is because if 2Q = infinity, + * Q must equal -Q, or that Q.y == -(Q.y), or Q.y is 0. For a point on y^2 = x^3 + 7 to have + * y=0, x^3 must be -7 mod p. However, -7 has no cube root mod p. + * + * Having said this, if this function receives a point on a sextic twist, e.g. by + * a fault attack, it is possible for y to be 0. This happens for y^2 = x^3 + 6, + * since -6 does have a cube root mod p. For this point, this function will not set + * the infinity flag even though the point doubles to infinity, and the result + * point will be gibberish (z = 0 but infinity = 0). + */ + r->infinity = a->infinity; + if (r->infinity) { + if (rzr != NULL) { + secp256k1_fe_set_int(rzr, 1); + } + return; + } + + if (rzr != NULL) { + *rzr = a->y; + secp256k1_fe_normalize_weak(rzr); + secp256k1_fe_mul_int(rzr, 2); + } + + secp256k1_fe_mul(&r->z, &a->z, &a->y); + secp256k1_fe_mul_int(&r->z, 2); /* Z' = 2*Y*Z (2) */ + secp256k1_fe_sqr(&t1, &a->x); + secp256k1_fe_mul_int(&t1, 3); /* T1 = 3*X^2 (3) */ + secp256k1_fe_sqr(&t2, &t1); /* T2 = 9*X^4 (1) */ + secp256k1_fe_sqr(&t3, &a->y); + secp256k1_fe_mul_int(&t3, 2); /* T3 = 2*Y^2 (2) */ + secp256k1_fe_sqr(&t4, &t3); + secp256k1_fe_mul_int(&t4, 2); /* T4 = 8*Y^4 (2) */ + secp256k1_fe_mul(&t3, &t3, &a->x); /* T3 = 2*X*Y^2 (1) */ + r->x = t3; + secp256k1_fe_mul_int(&r->x, 4); /* X' = 8*X*Y^2 (4) */ + secp256k1_fe_negate(&r->x, &r->x, 4); /* X' = -8*X*Y^2 (5) */ + secp256k1_fe_add(&r->x, &t2); /* X' = 9*X^4 - 8*X*Y^2 (6) */ + secp256k1_fe_negate(&t2, &t2, 1); /* T2 = -9*X^4 (2) */ + secp256k1_fe_mul_int(&t3, 6); /* T3 = 12*X*Y^2 (6) */ + secp256k1_fe_add(&t3, &t2); /* T3 = 12*X*Y^2 - 9*X^4 (8) */ + secp256k1_fe_mul(&r->y, &t1, &t3); /* Y' = 36*X^3*Y^2 - 27*X^6 (1) */ + secp256k1_fe_negate(&t2, &t4, 2); /* T2 = -8*Y^4 (3) */ + secp256k1_fe_add(&r->y, &t2); /* Y' = 36*X^3*Y^2 - 27*X^6 - 8*Y^4 (4) */ +} + +static SECP256K1_INLINE void secp256k1_gej_double_nonzero(secp256k1_gej *r, const secp256k1_gej *a, secp256k1_fe *rzr) { + VERIFY_CHECK(!secp256k1_gej_is_infinity(a)); + secp256k1_gej_double_var(r, a, rzr); +} + +static void secp256k1_gej_add_var(secp256k1_gej *r, const secp256k1_gej *a, const secp256k1_gej *b, secp256k1_fe *rzr) { + /* Operations: 12 mul, 4 sqr, 2 normalize, 12 mul_int/add/negate */ + secp256k1_fe z22, z12, u1, u2, s1, s2, h, i, i2, h2, h3, t; + + if (a->infinity) { + VERIFY_CHECK(rzr == NULL); + *r = *b; + return; + } + + if (b->infinity) { + if (rzr != NULL) { + secp256k1_fe_set_int(rzr, 1); + } + *r = *a; + return; + } + + r->infinity = 0; + secp256k1_fe_sqr(&z22, &b->z); + secp256k1_fe_sqr(&z12, &a->z); + secp256k1_fe_mul(&u1, &a->x, &z22); + secp256k1_fe_mul(&u2, &b->x, &z12); + secp256k1_fe_mul(&s1, &a->y, &z22); secp256k1_fe_mul(&s1, &s1, &b->z); + secp256k1_fe_mul(&s2, &b->y, &z12); secp256k1_fe_mul(&s2, &s2, &a->z); + secp256k1_fe_negate(&h, &u1, 1); secp256k1_fe_add(&h, &u2); + secp256k1_fe_negate(&i, &s1, 1); secp256k1_fe_add(&i, &s2); + if (secp256k1_fe_normalizes_to_zero_var(&h)) { + if (secp256k1_fe_normalizes_to_zero_var(&i)) { + secp256k1_gej_double_var(r, a, rzr); + } else { + if (rzr != NULL) { + secp256k1_fe_set_int(rzr, 0); + } + r->infinity = 1; + } + return; + } + secp256k1_fe_sqr(&i2, &i); + secp256k1_fe_sqr(&h2, &h); + secp256k1_fe_mul(&h3, &h, &h2); + secp256k1_fe_mul(&h, &h, &b->z); + if (rzr != NULL) { + *rzr = h; + } + secp256k1_fe_mul(&r->z, &a->z, &h); + secp256k1_fe_mul(&t, &u1, &h2); + r->x = t; secp256k1_fe_mul_int(&r->x, 2); secp256k1_fe_add(&r->x, &h3); secp256k1_fe_negate(&r->x, &r->x, 3); secp256k1_fe_add(&r->x, &i2); + secp256k1_fe_negate(&r->y, &r->x, 5); secp256k1_fe_add(&r->y, &t); secp256k1_fe_mul(&r->y, &r->y, &i); + secp256k1_fe_mul(&h3, &h3, &s1); secp256k1_fe_negate(&h3, &h3, 1); + secp256k1_fe_add(&r->y, &h3); +} + +static void secp256k1_gej_add_ge_var(secp256k1_gej *r, const secp256k1_gej *a, const secp256k1_ge *b, secp256k1_fe *rzr) { + /* 8 mul, 3 sqr, 4 normalize, 12 mul_int/add/negate */ + secp256k1_fe z12, u1, u2, s1, s2, h, i, i2, h2, h3, t; + if (a->infinity) { + VERIFY_CHECK(rzr == NULL); + secp256k1_gej_set_ge(r, b); + return; + } + if (b->infinity) { + if (rzr != NULL) { + secp256k1_fe_set_int(rzr, 1); + } + *r = *a; + return; + } + r->infinity = 0; + + secp256k1_fe_sqr(&z12, &a->z); + u1 = a->x; secp256k1_fe_normalize_weak(&u1); + secp256k1_fe_mul(&u2, &b->x, &z12); + s1 = a->y; secp256k1_fe_normalize_weak(&s1); + secp256k1_fe_mul(&s2, &b->y, &z12); secp256k1_fe_mul(&s2, &s2, &a->z); + secp256k1_fe_negate(&h, &u1, 1); secp256k1_fe_add(&h, &u2); + secp256k1_fe_negate(&i, &s1, 1); secp256k1_fe_add(&i, &s2); + if (secp256k1_fe_normalizes_to_zero_var(&h)) { + if (secp256k1_fe_normalizes_to_zero_var(&i)) { + secp256k1_gej_double_var(r, a, rzr); + } else { + if (rzr != NULL) { + secp256k1_fe_set_int(rzr, 0); + } + r->infinity = 1; + } + return; + } + secp256k1_fe_sqr(&i2, &i); + secp256k1_fe_sqr(&h2, &h); + secp256k1_fe_mul(&h3, &h, &h2); + if (rzr != NULL) { + *rzr = h; + } + secp256k1_fe_mul(&r->z, &a->z, &h); + secp256k1_fe_mul(&t, &u1, &h2); + r->x = t; secp256k1_fe_mul_int(&r->x, 2); secp256k1_fe_add(&r->x, &h3); secp256k1_fe_negate(&r->x, &r->x, 3); secp256k1_fe_add(&r->x, &i2); + secp256k1_fe_negate(&r->y, &r->x, 5); secp256k1_fe_add(&r->y, &t); secp256k1_fe_mul(&r->y, &r->y, &i); + secp256k1_fe_mul(&h3, &h3, &s1); secp256k1_fe_negate(&h3, &h3, 1); + secp256k1_fe_add(&r->y, &h3); +} + +static void secp256k1_gej_add_zinv_var(secp256k1_gej *r, const secp256k1_gej *a, const secp256k1_ge *b, const secp256k1_fe *bzinv) { + /* 9 mul, 3 sqr, 4 normalize, 12 mul_int/add/negate */ + secp256k1_fe az, z12, u1, u2, s1, s2, h, i, i2, h2, h3, t; + + if (b->infinity) { + *r = *a; + return; + } + if (a->infinity) { + secp256k1_fe bzinv2, bzinv3; + r->infinity = b->infinity; + secp256k1_fe_sqr(&bzinv2, bzinv); + secp256k1_fe_mul(&bzinv3, &bzinv2, bzinv); + secp256k1_fe_mul(&r->x, &b->x, &bzinv2); + secp256k1_fe_mul(&r->y, &b->y, &bzinv3); + secp256k1_fe_set_int(&r->z, 1); + return; + } + r->infinity = 0; + + /** We need to calculate (rx,ry,rz) = (ax,ay,az) + (bx,by,1/bzinv). Due to + * secp256k1's isomorphism we can multiply the Z coordinates on both sides + * by bzinv, and get: (rx,ry,rz*bzinv) = (ax,ay,az*bzinv) + (bx,by,1). + * This means that (rx,ry,rz) can be calculated as + * (ax,ay,az*bzinv) + (bx,by,1), when not applying the bzinv factor to rz. + * The variable az below holds the modified Z coordinate for a, which is used + * for the computation of rx and ry, but not for rz. + */ + secp256k1_fe_mul(&az, &a->z, bzinv); + + secp256k1_fe_sqr(&z12, &az); + u1 = a->x; secp256k1_fe_normalize_weak(&u1); + secp256k1_fe_mul(&u2, &b->x, &z12); + s1 = a->y; secp256k1_fe_normalize_weak(&s1); + secp256k1_fe_mul(&s2, &b->y, &z12); secp256k1_fe_mul(&s2, &s2, &az); + secp256k1_fe_negate(&h, &u1, 1); secp256k1_fe_add(&h, &u2); + secp256k1_fe_negate(&i, &s1, 1); secp256k1_fe_add(&i, &s2); + if (secp256k1_fe_normalizes_to_zero_var(&h)) { + if (secp256k1_fe_normalizes_to_zero_var(&i)) { + secp256k1_gej_double_var(r, a, NULL); + } else { + r->infinity = 1; + } + return; + } + secp256k1_fe_sqr(&i2, &i); + secp256k1_fe_sqr(&h2, &h); + secp256k1_fe_mul(&h3, &h, &h2); + r->z = a->z; secp256k1_fe_mul(&r->z, &r->z, &h); + secp256k1_fe_mul(&t, &u1, &h2); + r->x = t; secp256k1_fe_mul_int(&r->x, 2); secp256k1_fe_add(&r->x, &h3); secp256k1_fe_negate(&r->x, &r->x, 3); secp256k1_fe_add(&r->x, &i2); + secp256k1_fe_negate(&r->y, &r->x, 5); secp256k1_fe_add(&r->y, &t); secp256k1_fe_mul(&r->y, &r->y, &i); + secp256k1_fe_mul(&h3, &h3, &s1); secp256k1_fe_negate(&h3, &h3, 1); + secp256k1_fe_add(&r->y, &h3); +} + + +static void secp256k1_gej_add_ge(secp256k1_gej *r, const secp256k1_gej *a, const secp256k1_ge *b) { + /* Operations: 7 mul, 5 sqr, 4 normalize, 21 mul_int/add/negate/cmov */ + static const secp256k1_fe fe_1 = SECP256K1_FE_CONST(0, 0, 0, 0, 0, 0, 0, 1); + secp256k1_fe zz, u1, u2, s1, s2, t, tt, m, n, q, rr; + secp256k1_fe m_alt, rr_alt; + int infinity, degenerate; + VERIFY_CHECK(!b->infinity); + VERIFY_CHECK(a->infinity == 0 || a->infinity == 1); + + /** In: + * Eric Brier and Marc Joye, Weierstrass Elliptic Curves and Side-Channel Attacks. + * In D. Naccache and P. Paillier, Eds., Public Key Cryptography, vol. 2274 of Lecture Notes in Computer Science, pages 335-345. Springer-Verlag, 2002. + * we find as solution for a unified addition/doubling formula: + * lambda = ((x1 + x2)^2 - x1 * x2 + a) / (y1 + y2), with a = 0 for secp256k1's curve equation. + * x3 = lambda^2 - (x1 + x2) + * 2*y3 = lambda * (x1 + x2 - 2 * x3) - (y1 + y2). + * + * Substituting x_i = Xi / Zi^2 and yi = Yi / Zi^3, for i=1,2,3, gives: + * U1 = X1*Z2^2, U2 = X2*Z1^2 + * S1 = Y1*Z2^3, S2 = Y2*Z1^3 + * Z = Z1*Z2 + * T = U1+U2 + * M = S1+S2 + * Q = T*M^2 + * R = T^2-U1*U2 + * X3 = 4*(R^2-Q) + * Y3 = 4*(R*(3*Q-2*R^2)-M^4) + * Z3 = 2*M*Z + * (Note that the paper uses xi = Xi / Zi and yi = Yi / Zi instead.) + * + * This formula has the benefit of being the same for both addition + * of distinct points and doubling. However, it breaks down in the + * case that either point is infinity, or that y1 = -y2. We handle + * these cases in the following ways: + * + * - If b is infinity we simply bail by means of a VERIFY_CHECK. + * + * - If a is infinity, we detect this, and at the end of the + * computation replace the result (which will be meaningless, + * but we compute to be constant-time) with b.x : b.y : 1. + * + * - If a = -b, we have y1 = -y2, which is a degenerate case. + * But here the answer is infinity, so we simply set the + * infinity flag of the result, overriding the computed values + * without even needing to cmov. + * + * - If y1 = -y2 but x1 != x2, which does occur thanks to certain + * properties of our curve (specifically, 1 has nontrivial cube + * roots in our field, and the curve equation has no x coefficient) + * then the answer is not infinity but also not given by the above + * equation. In this case, we cmov in place an alternate expression + * for lambda. Specifically (y1 - y2)/(x1 - x2). Where both these + * expressions for lambda are defined, they are equal, and can be + * obtained from each other by multiplication by (y1 + y2)/(y1 + y2) + * then substitution of x^3 + 7 for y^2 (using the curve equation). + * For all pairs of nonzero points (a, b) at least one is defined, + * so this covers everything. + */ + + secp256k1_fe_sqr(&zz, &a->z); /* z = Z1^2 */ + u1 = a->x; secp256k1_fe_normalize_weak(&u1); /* u1 = U1 = X1*Z2^2 (1) */ + secp256k1_fe_mul(&u2, &b->x, &zz); /* u2 = U2 = X2*Z1^2 (1) */ + s1 = a->y; secp256k1_fe_normalize_weak(&s1); /* s1 = S1 = Y1*Z2^3 (1) */ + secp256k1_fe_mul(&s2, &b->y, &zz); /* s2 = Y2*Z1^2 (1) */ + secp256k1_fe_mul(&s2, &s2, &a->z); /* s2 = S2 = Y2*Z1^3 (1) */ + t = u1; secp256k1_fe_add(&t, &u2); /* t = T = U1+U2 (2) */ + m = s1; secp256k1_fe_add(&m, &s2); /* m = M = S1+S2 (2) */ + secp256k1_fe_sqr(&rr, &t); /* rr = T^2 (1) */ + secp256k1_fe_negate(&m_alt, &u2, 1); /* Malt = -X2*Z1^2 */ + secp256k1_fe_mul(&tt, &u1, &m_alt); /* tt = -U1*U2 (2) */ + secp256k1_fe_add(&rr, &tt); /* rr = R = T^2-U1*U2 (3) */ + /** If lambda = R/M = 0/0 we have a problem (except in the "trivial" + * case that Z = z1z2 = 0, and this is special-cased later on). */ + degenerate = secp256k1_fe_normalizes_to_zero(&m) & + secp256k1_fe_normalizes_to_zero(&rr); + /* This only occurs when y1 == -y2 and x1^3 == x2^3, but x1 != x2. + * This means either x1 == beta*x2 or beta*x1 == x2, where beta is + * a nontrivial cube root of one. In either case, an alternate + * non-indeterminate expression for lambda is (y1 - y2)/(x1 - x2), + * so we set R/M equal to this. */ + rr_alt = s1; + secp256k1_fe_mul_int(&rr_alt, 2); /* rr = Y1*Z2^3 - Y2*Z1^3 (2) */ + secp256k1_fe_add(&m_alt, &u1); /* Malt = X1*Z2^2 - X2*Z1^2 */ + + secp256k1_fe_cmov(&rr_alt, &rr, !degenerate); + secp256k1_fe_cmov(&m_alt, &m, !degenerate); + /* Now Ralt / Malt = lambda and is guaranteed not to be 0/0. + * From here on out Ralt and Malt represent the numerator + * and denominator of lambda; R and M represent the explicit + * expressions x1^2 + x2^2 + x1x2 and y1 + y2. */ + secp256k1_fe_sqr(&n, &m_alt); /* n = Malt^2 (1) */ + secp256k1_fe_mul(&q, &n, &t); /* q = Q = T*Malt^2 (1) */ + /* These two lines use the observation that either M == Malt or M == 0, + * so M^3 * Malt is either Malt^4 (which is computed by squaring), or + * zero (which is "computed" by cmov). So the cost is one squaring + * versus two multiplications. */ + secp256k1_fe_sqr(&n, &n); + secp256k1_fe_cmov(&n, &m, degenerate); /* n = M^3 * Malt (2) */ + secp256k1_fe_sqr(&t, &rr_alt); /* t = Ralt^2 (1) */ + secp256k1_fe_mul(&r->z, &a->z, &m_alt); /* r->z = Malt*Z (1) */ + infinity = secp256k1_fe_normalizes_to_zero(&r->z) * (1 - a->infinity); + secp256k1_fe_mul_int(&r->z, 2); /* r->z = Z3 = 2*Malt*Z (2) */ + secp256k1_fe_negate(&q, &q, 1); /* q = -Q (2) */ + secp256k1_fe_add(&t, &q); /* t = Ralt^2-Q (3) */ + secp256k1_fe_normalize_weak(&t); + r->x = t; /* r->x = Ralt^2-Q (1) */ + secp256k1_fe_mul_int(&t, 2); /* t = 2*x3 (2) */ + secp256k1_fe_add(&t, &q); /* t = 2*x3 - Q: (4) */ + secp256k1_fe_mul(&t, &t, &rr_alt); /* t = Ralt*(2*x3 - Q) (1) */ + secp256k1_fe_add(&t, &n); /* t = Ralt*(2*x3 - Q) + M^3*Malt (3) */ + secp256k1_fe_negate(&r->y, &t, 3); /* r->y = Ralt*(Q - 2x3) - M^3*Malt (4) */ + secp256k1_fe_normalize_weak(&r->y); + secp256k1_fe_mul_int(&r->x, 4); /* r->x = X3 = 4*(Ralt^2-Q) */ + secp256k1_fe_mul_int(&r->y, 4); /* r->y = Y3 = 4*Ralt*(Q - 2x3) - 4*M^3*Malt (4) */ + + /** In case a->infinity == 1, replace r with (b->x, b->y, 1). */ + secp256k1_fe_cmov(&r->x, &b->x, a->infinity); + secp256k1_fe_cmov(&r->y, &b->y, a->infinity); + secp256k1_fe_cmov(&r->z, &fe_1, a->infinity); + r->infinity = infinity; +} + +static void secp256k1_gej_rescale(secp256k1_gej *r, const secp256k1_fe *s) { + /* Operations: 4 mul, 1 sqr */ + secp256k1_fe zz; + VERIFY_CHECK(!secp256k1_fe_is_zero(s)); + secp256k1_fe_sqr(&zz, s); + secp256k1_fe_mul(&r->x, &r->x, &zz); /* r->x *= s^2 */ + secp256k1_fe_mul(&r->y, &r->y, &zz); + secp256k1_fe_mul(&r->y, &r->y, s); /* r->y *= s^3 */ + secp256k1_fe_mul(&r->z, &r->z, s); /* r->z *= s */ +} + +static void secp256k1_ge_to_storage(secp256k1_ge_storage *r, const secp256k1_ge *a) { + secp256k1_fe x, y; + VERIFY_CHECK(!a->infinity); + x = a->x; + secp256k1_fe_normalize(&x); + y = a->y; + secp256k1_fe_normalize(&y); + secp256k1_fe_to_storage(&r->x, &x); + secp256k1_fe_to_storage(&r->y, &y); +} + +static void secp256k1_ge_from_storage(secp256k1_ge *r, const secp256k1_ge_storage *a) { + secp256k1_fe_from_storage(&r->x, &a->x); + secp256k1_fe_from_storage(&r->y, &a->y); + r->infinity = 0; +} + +static SECP256K1_INLINE void secp256k1_ge_storage_cmov(secp256k1_ge_storage *r, const secp256k1_ge_storage *a, int flag) { + secp256k1_fe_storage_cmov(&r->x, &a->x, flag); + secp256k1_fe_storage_cmov(&r->y, &a->y, flag); +} + +#ifdef USE_ENDOMORPHISM +static void secp256k1_ge_mul_lambda(secp256k1_ge *r, const secp256k1_ge *a) { + static const secp256k1_fe beta = SECP256K1_FE_CONST( + 0x7ae96a2bul, 0x657c0710ul, 0x6e64479eul, 0xac3434e9ul, + 0x9cf04975ul, 0x12f58995ul, 0xc1396c28ul, 0x719501eeul + ); + *r = *a; + secp256k1_fe_mul(&r->x, &r->x, &beta); +} +#endif + +static int secp256k1_gej_has_quad_y_var(const secp256k1_gej *a) { + secp256k1_fe yz; + + if (a->infinity) { + return 0; + } + + /* We rely on the fact that the Jacobi symbol of 1 / a->z^3 is the same as + * that of a->z. Thus a->y / a->z^3 is a quadratic residue iff a->y * a->z + is */ + secp256k1_fe_mul(&yz, &a->y, &a->z); + return secp256k1_fe_is_quad_var(&yz); +} + +#endif /* SECP256K1_GROUP_IMPL_H */ diff --git a/Pods/secp256k1_ios/secp256k1_ios/src/hash.h b/Pods/secp256k1_ios/secp256k1_ios/src/hash.h new file mode 100644 index 00000000..de26e4b8 --- /dev/null +++ b/Pods/secp256k1_ios/secp256k1_ios/src/hash.h @@ -0,0 +1,41 @@ +/********************************************************************** + * Copyright (c) 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef SECP256K1_HASH_H +#define SECP256K1_HASH_H + +#include +#include + +typedef struct { + uint32_t s[8]; + uint32_t buf[16]; /* In big endian */ + size_t bytes; +} secp256k1_sha256; + +static void secp256k1_sha256_initialize(secp256k1_sha256 *hash); +static void secp256k1_sha256_write(secp256k1_sha256 *hash, const unsigned char *data, size_t size); +static void secp256k1_sha256_finalize(secp256k1_sha256 *hash, unsigned char *out32); + +typedef struct { + secp256k1_sha256 inner, outer; +} secp256k1_hmac_sha256; + +static void secp256k1_hmac_sha256_initialize(secp256k1_hmac_sha256 *hash, const unsigned char *key, size_t size); +static void secp256k1_hmac_sha256_write(secp256k1_hmac_sha256 *hash, const unsigned char *data, size_t size); +static void secp256k1_hmac_sha256_finalize(secp256k1_hmac_sha256 *hash, unsigned char *out32); + +typedef struct { + unsigned char v[32]; + unsigned char k[32]; + int retry; +} secp256k1_rfc6979_hmac_sha256; + +static void secp256k1_rfc6979_hmac_sha256_initialize(secp256k1_rfc6979_hmac_sha256 *rng, const unsigned char *key, size_t keylen); +static void secp256k1_rfc6979_hmac_sha256_generate(secp256k1_rfc6979_hmac_sha256 *rng, unsigned char *out, size_t outlen); +static void secp256k1_rfc6979_hmac_sha256_finalize(secp256k1_rfc6979_hmac_sha256 *rng); + +#endif /* SECP256K1_HASH_H */ diff --git a/Pods/secp256k1_ios/secp256k1_ios/src/hash_impl.h b/Pods/secp256k1_ios/secp256k1_ios/src/hash_impl.h new file mode 100644 index 00000000..c06db9e3 --- /dev/null +++ b/Pods/secp256k1_ios/secp256k1_ios/src/hash_impl.h @@ -0,0 +1,281 @@ +/********************************************************************** + * Copyright (c) 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef SECP256K1_HASH_IMPL_H +#define SECP256K1_HASH_IMPL_H + +#include "hash.h" + +#include +#include +#include + +#define Ch(x,y,z) ((z) ^ ((x) & ((y) ^ (z)))) +#define Maj(x,y,z) (((x) & (y)) | ((z) & ((x) | (y)))) +#define Sigma0(x) (((x) >> 2 | (x) << 30) ^ ((x) >> 13 | (x) << 19) ^ ((x) >> 22 | (x) << 10)) +#define Sigma1(x) (((x) >> 6 | (x) << 26) ^ ((x) >> 11 | (x) << 21) ^ ((x) >> 25 | (x) << 7)) +#define sigma0(x) (((x) >> 7 | (x) << 25) ^ ((x) >> 18 | (x) << 14) ^ ((x) >> 3)) +#define sigma1(x) (((x) >> 17 | (x) << 15) ^ ((x) >> 19 | (x) << 13) ^ ((x) >> 10)) + +#define Round(a,b,c,d,e,f,g,h,k,w) do { \ + uint32_t t1 = (h) + Sigma1(e) + Ch((e), (f), (g)) + (k) + (w); \ + uint32_t t2 = Sigma0(a) + Maj((a), (b), (c)); \ + (d) += t1; \ + (h) = t1 + t2; \ +} while(0) + +#ifdef WORDS_BIGENDIAN +#define BE32(x) (x) +#else +#define BE32(p) ((((p) & 0xFF) << 24) | (((p) & 0xFF00) << 8) | (((p) & 0xFF0000) >> 8) | (((p) & 0xFF000000) >> 24)) +#endif + +static void secp256k1_sha256_initialize(secp256k1_sha256 *hash) { + hash->s[0] = 0x6a09e667ul; + hash->s[1] = 0xbb67ae85ul; + hash->s[2] = 0x3c6ef372ul; + hash->s[3] = 0xa54ff53aul; + hash->s[4] = 0x510e527ful; + hash->s[5] = 0x9b05688cul; + hash->s[6] = 0x1f83d9abul; + hash->s[7] = 0x5be0cd19ul; + hash->bytes = 0; +} + +/** Perform one SHA-256 transformation, processing 16 big endian 32-bit words. */ +static void secp256k1_sha256_transform(uint32_t* s, const uint32_t* chunk) { + uint32_t a = s[0], b = s[1], c = s[2], d = s[3], e = s[4], f = s[5], g = s[6], h = s[7]; + uint32_t w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15; + + Round(a, b, c, d, e, f, g, h, 0x428a2f98, w0 = BE32(chunk[0])); + Round(h, a, b, c, d, e, f, g, 0x71374491, w1 = BE32(chunk[1])); + Round(g, h, a, b, c, d, e, f, 0xb5c0fbcf, w2 = BE32(chunk[2])); + Round(f, g, h, a, b, c, d, e, 0xe9b5dba5, w3 = BE32(chunk[3])); + Round(e, f, g, h, a, b, c, d, 0x3956c25b, w4 = BE32(chunk[4])); + Round(d, e, f, g, h, a, b, c, 0x59f111f1, w5 = BE32(chunk[5])); + Round(c, d, e, f, g, h, a, b, 0x923f82a4, w6 = BE32(chunk[6])); + Round(b, c, d, e, f, g, h, a, 0xab1c5ed5, w7 = BE32(chunk[7])); + Round(a, b, c, d, e, f, g, h, 0xd807aa98, w8 = BE32(chunk[8])); + Round(h, a, b, c, d, e, f, g, 0x12835b01, w9 = BE32(chunk[9])); + Round(g, h, a, b, c, d, e, f, 0x243185be, w10 = BE32(chunk[10])); + Round(f, g, h, a, b, c, d, e, 0x550c7dc3, w11 = BE32(chunk[11])); + Round(e, f, g, h, a, b, c, d, 0x72be5d74, w12 = BE32(chunk[12])); + Round(d, e, f, g, h, a, b, c, 0x80deb1fe, w13 = BE32(chunk[13])); + Round(c, d, e, f, g, h, a, b, 0x9bdc06a7, w14 = BE32(chunk[14])); + Round(b, c, d, e, f, g, h, a, 0xc19bf174, w15 = BE32(chunk[15])); + + Round(a, b, c, d, e, f, g, h, 0xe49b69c1, w0 += sigma1(w14) + w9 + sigma0(w1)); + Round(h, a, b, c, d, e, f, g, 0xefbe4786, w1 += sigma1(w15) + w10 + sigma0(w2)); + Round(g, h, a, b, c, d, e, f, 0x0fc19dc6, w2 += sigma1(w0) + w11 + sigma0(w3)); + Round(f, g, h, a, b, c, d, e, 0x240ca1cc, w3 += sigma1(w1) + w12 + sigma0(w4)); + Round(e, f, g, h, a, b, c, d, 0x2de92c6f, w4 += sigma1(w2) + w13 + sigma0(w5)); + Round(d, e, f, g, h, a, b, c, 0x4a7484aa, w5 += sigma1(w3) + w14 + sigma0(w6)); + Round(c, d, e, f, g, h, a, b, 0x5cb0a9dc, w6 += sigma1(w4) + w15 + sigma0(w7)); + Round(b, c, d, e, f, g, h, a, 0x76f988da, w7 += sigma1(w5) + w0 + sigma0(w8)); + Round(a, b, c, d, e, f, g, h, 0x983e5152, w8 += sigma1(w6) + w1 + sigma0(w9)); + Round(h, a, b, c, d, e, f, g, 0xa831c66d, w9 += sigma1(w7) + w2 + sigma0(w10)); + Round(g, h, a, b, c, d, e, f, 0xb00327c8, w10 += sigma1(w8) + w3 + sigma0(w11)); + Round(f, g, h, a, b, c, d, e, 0xbf597fc7, w11 += sigma1(w9) + w4 + sigma0(w12)); + Round(e, f, g, h, a, b, c, d, 0xc6e00bf3, w12 += sigma1(w10) + w5 + sigma0(w13)); + Round(d, e, f, g, h, a, b, c, 0xd5a79147, w13 += sigma1(w11) + w6 + sigma0(w14)); + Round(c, d, e, f, g, h, a, b, 0x06ca6351, w14 += sigma1(w12) + w7 + sigma0(w15)); + Round(b, c, d, e, f, g, h, a, 0x14292967, w15 += sigma1(w13) + w8 + sigma0(w0)); + + Round(a, b, c, d, e, f, g, h, 0x27b70a85, w0 += sigma1(w14) + w9 + sigma0(w1)); + Round(h, a, b, c, d, e, f, g, 0x2e1b2138, w1 += sigma1(w15) + w10 + sigma0(w2)); + Round(g, h, a, b, c, d, e, f, 0x4d2c6dfc, w2 += sigma1(w0) + w11 + sigma0(w3)); + Round(f, g, h, a, b, c, d, e, 0x53380d13, w3 += sigma1(w1) + w12 + sigma0(w4)); + Round(e, f, g, h, a, b, c, d, 0x650a7354, w4 += sigma1(w2) + w13 + sigma0(w5)); + Round(d, e, f, g, h, a, b, c, 0x766a0abb, w5 += sigma1(w3) + w14 + sigma0(w6)); + Round(c, d, e, f, g, h, a, b, 0x81c2c92e, w6 += sigma1(w4) + w15 + sigma0(w7)); + Round(b, c, d, e, f, g, h, a, 0x92722c85, w7 += sigma1(w5) + w0 + sigma0(w8)); + Round(a, b, c, d, e, f, g, h, 0xa2bfe8a1, w8 += sigma1(w6) + w1 + sigma0(w9)); + Round(h, a, b, c, d, e, f, g, 0xa81a664b, w9 += sigma1(w7) + w2 + sigma0(w10)); + Round(g, h, a, b, c, d, e, f, 0xc24b8b70, w10 += sigma1(w8) + w3 + sigma0(w11)); + Round(f, g, h, a, b, c, d, e, 0xc76c51a3, w11 += sigma1(w9) + w4 + sigma0(w12)); + Round(e, f, g, h, a, b, c, d, 0xd192e819, w12 += sigma1(w10) + w5 + sigma0(w13)); + Round(d, e, f, g, h, a, b, c, 0xd6990624, w13 += sigma1(w11) + w6 + sigma0(w14)); + Round(c, d, e, f, g, h, a, b, 0xf40e3585, w14 += sigma1(w12) + w7 + sigma0(w15)); + Round(b, c, d, e, f, g, h, a, 0x106aa070, w15 += sigma1(w13) + w8 + sigma0(w0)); + + Round(a, b, c, d, e, f, g, h, 0x19a4c116, w0 += sigma1(w14) + w9 + sigma0(w1)); + Round(h, a, b, c, d, e, f, g, 0x1e376c08, w1 += sigma1(w15) + w10 + sigma0(w2)); + Round(g, h, a, b, c, d, e, f, 0x2748774c, w2 += sigma1(w0) + w11 + sigma0(w3)); + Round(f, g, h, a, b, c, d, e, 0x34b0bcb5, w3 += sigma1(w1) + w12 + sigma0(w4)); + Round(e, f, g, h, a, b, c, d, 0x391c0cb3, w4 += sigma1(w2) + w13 + sigma0(w5)); + Round(d, e, f, g, h, a, b, c, 0x4ed8aa4a, w5 += sigma1(w3) + w14 + sigma0(w6)); + Round(c, d, e, f, g, h, a, b, 0x5b9cca4f, w6 += sigma1(w4) + w15 + sigma0(w7)); + Round(b, c, d, e, f, g, h, a, 0x682e6ff3, w7 += sigma1(w5) + w0 + sigma0(w8)); + Round(a, b, c, d, e, f, g, h, 0x748f82ee, w8 += sigma1(w6) + w1 + sigma0(w9)); + Round(h, a, b, c, d, e, f, g, 0x78a5636f, w9 += sigma1(w7) + w2 + sigma0(w10)); + Round(g, h, a, b, c, d, e, f, 0x84c87814, w10 += sigma1(w8) + w3 + sigma0(w11)); + Round(f, g, h, a, b, c, d, e, 0x8cc70208, w11 += sigma1(w9) + w4 + sigma0(w12)); + Round(e, f, g, h, a, b, c, d, 0x90befffa, w12 += sigma1(w10) + w5 + sigma0(w13)); + Round(d, e, f, g, h, a, b, c, 0xa4506ceb, w13 += sigma1(w11) + w6 + sigma0(w14)); + Round(c, d, e, f, g, h, a, b, 0xbef9a3f7, w14 + sigma1(w12) + w7 + sigma0(w15)); + Round(b, c, d, e, f, g, h, a, 0xc67178f2, w15 + sigma1(w13) + w8 + sigma0(w0)); + + s[0] += a; + s[1] += b; + s[2] += c; + s[3] += d; + s[4] += e; + s[5] += f; + s[6] += g; + s[7] += h; +} + +static void secp256k1_sha256_write(secp256k1_sha256 *hash, const unsigned char *data, size_t len) { + size_t bufsize = hash->bytes & 0x3F; + hash->bytes += len; + while (bufsize + len >= 64) { + /* Fill the buffer, and process it. */ + memcpy(((unsigned char*)hash->buf) + bufsize, data, 64 - bufsize); + data += 64 - bufsize; + len -= 64 - bufsize; + secp256k1_sha256_transform(hash->s, hash->buf); + bufsize = 0; + } + if (len) { + /* Fill the buffer with what remains. */ + memcpy(((unsigned char*)hash->buf) + bufsize, data, len); + } +} + +static void secp256k1_sha256_finalize(secp256k1_sha256 *hash, unsigned char *out32) { + static const unsigned char pad[64] = {0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + uint32_t sizedesc[2]; + uint32_t out[8]; + int i = 0; + sizedesc[0] = BE32(hash->bytes >> 29); + sizedesc[1] = BE32(hash->bytes << 3); + secp256k1_sha256_write(hash, pad, 1 + ((119 - (hash->bytes % 64)) % 64)); + secp256k1_sha256_write(hash, (const unsigned char*)sizedesc, 8); + for (i = 0; i < 8; i++) { + out[i] = BE32(hash->s[i]); + hash->s[i] = 0; + } + memcpy(out32, (const unsigned char*)out, 32); +} + +static void secp256k1_hmac_sha256_initialize(secp256k1_hmac_sha256 *hash, const unsigned char *key, size_t keylen) { + int n; + unsigned char rkey[64]; + if (keylen <= 64) { + memcpy(rkey, key, keylen); + memset(rkey + keylen, 0, 64 - keylen); + } else { + secp256k1_sha256 sha256; + secp256k1_sha256_initialize(&sha256); + secp256k1_sha256_write(&sha256, key, keylen); + secp256k1_sha256_finalize(&sha256, rkey); + memset(rkey + 32, 0, 32); + } + + secp256k1_sha256_initialize(&hash->outer); + for (n = 0; n < 64; n++) { + rkey[n] ^= 0x5c; + } + secp256k1_sha256_write(&hash->outer, rkey, 64); + + secp256k1_sha256_initialize(&hash->inner); + for (n = 0; n < 64; n++) { + rkey[n] ^= 0x5c ^ 0x36; + } + secp256k1_sha256_write(&hash->inner, rkey, 64); + memset(rkey, 0, 64); +} + +static void secp256k1_hmac_sha256_write(secp256k1_hmac_sha256 *hash, const unsigned char *data, size_t size) { + secp256k1_sha256_write(&hash->inner, data, size); +} + +static void secp256k1_hmac_sha256_finalize(secp256k1_hmac_sha256 *hash, unsigned char *out32) { + unsigned char temp[32]; + secp256k1_sha256_finalize(&hash->inner, temp); + secp256k1_sha256_write(&hash->outer, temp, 32); + memset(temp, 0, 32); + secp256k1_sha256_finalize(&hash->outer, out32); +} + + +static void secp256k1_rfc6979_hmac_sha256_initialize(secp256k1_rfc6979_hmac_sha256 *rng, const unsigned char *key, size_t keylen) { + secp256k1_hmac_sha256 hmac; + static const unsigned char zero[1] = {0x00}; + static const unsigned char one[1] = {0x01}; + + memset(rng->v, 0x01, 32); /* RFC6979 3.2.b. */ + memset(rng->k, 0x00, 32); /* RFC6979 3.2.c. */ + + /* RFC6979 3.2.d. */ + secp256k1_hmac_sha256_initialize(&hmac, rng->k, 32); + secp256k1_hmac_sha256_write(&hmac, rng->v, 32); + secp256k1_hmac_sha256_write(&hmac, zero, 1); + secp256k1_hmac_sha256_write(&hmac, key, keylen); + secp256k1_hmac_sha256_finalize(&hmac, rng->k); + secp256k1_hmac_sha256_initialize(&hmac, rng->k, 32); + secp256k1_hmac_sha256_write(&hmac, rng->v, 32); + secp256k1_hmac_sha256_finalize(&hmac, rng->v); + + /* RFC6979 3.2.f. */ + secp256k1_hmac_sha256_initialize(&hmac, rng->k, 32); + secp256k1_hmac_sha256_write(&hmac, rng->v, 32); + secp256k1_hmac_sha256_write(&hmac, one, 1); + secp256k1_hmac_sha256_write(&hmac, key, keylen); + secp256k1_hmac_sha256_finalize(&hmac, rng->k); + secp256k1_hmac_sha256_initialize(&hmac, rng->k, 32); + secp256k1_hmac_sha256_write(&hmac, rng->v, 32); + secp256k1_hmac_sha256_finalize(&hmac, rng->v); + rng->retry = 0; +} + +static void secp256k1_rfc6979_hmac_sha256_generate(secp256k1_rfc6979_hmac_sha256 *rng, unsigned char *out, size_t outlen) { + /* RFC6979 3.2.h. */ + static const unsigned char zero[1] = {0x00}; + if (rng->retry) { + secp256k1_hmac_sha256 hmac; + secp256k1_hmac_sha256_initialize(&hmac, rng->k, 32); + secp256k1_hmac_sha256_write(&hmac, rng->v, 32); + secp256k1_hmac_sha256_write(&hmac, zero, 1); + secp256k1_hmac_sha256_finalize(&hmac, rng->k); + secp256k1_hmac_sha256_initialize(&hmac, rng->k, 32); + secp256k1_hmac_sha256_write(&hmac, rng->v, 32); + secp256k1_hmac_sha256_finalize(&hmac, rng->v); + } + + while (outlen > 0) { + secp256k1_hmac_sha256 hmac; + int now = outlen; + secp256k1_hmac_sha256_initialize(&hmac, rng->k, 32); + secp256k1_hmac_sha256_write(&hmac, rng->v, 32); + secp256k1_hmac_sha256_finalize(&hmac, rng->v); + if (now > 32) { + now = 32; + } + memcpy(out, rng->v, now); + out += now; + outlen -= now; + } + + rng->retry = 1; +} + +static void secp256k1_rfc6979_hmac_sha256_finalize(secp256k1_rfc6979_hmac_sha256 *rng) { + memset(rng->k, 0, 32); + memset(rng->v, 0, 32); + rng->retry = 0; +} + +#undef BE32 +#undef Round +#undef sigma1 +#undef sigma0 +#undef Sigma1 +#undef Sigma0 +#undef Maj +#undef Ch + +#endif /* SECP256K1_HASH_IMPL_H */ diff --git a/Pods/secp256k1_ios/secp256k1_ios/src/modules/ecdh/main_impl.h b/Pods/secp256k1_ios/secp256k1_ios/src/modules/ecdh/main_impl.h new file mode 100644 index 00000000..71d61b7e --- /dev/null +++ b/Pods/secp256k1_ios/secp256k1_ios/src/modules/ecdh/main_impl.h @@ -0,0 +1,54 @@ +/********************************************************************** + * Copyright (c) 2015 Andrew Poelstra * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef SECP256K1_MODULE_ECDH_MAIN_H +#define SECP256K1_MODULE_ECDH_MAIN_H + +#include "secp256k1_ecdh.h" +#include "ecmult_const_impl.h" + +int secp256k1_ecdh(const secp256k1_context* ctx, unsigned char *result, const secp256k1_pubkey *point, const unsigned char *scalar) { + int ret = 0; + int overflow = 0; + secp256k1_gej res; + secp256k1_ge pt; + secp256k1_scalar s; + VERIFY_CHECK(ctx != NULL); + ARG_CHECK(result != NULL); + ARG_CHECK(point != NULL); + ARG_CHECK(scalar != NULL); + + secp256k1_pubkey_load(ctx, &pt, point); + secp256k1_scalar_set_b32(&s, scalar, &overflow); + if (overflow || secp256k1_scalar_is_zero(&s)) { + ret = 0; + } else { + unsigned char x[32]; + unsigned char y[1]; + secp256k1_sha256 sha; + + secp256k1_ecmult_const(&res, &pt, &s); + secp256k1_ge_set_gej(&pt, &res); + /* Compute a hash of the point in compressed form + * Note we cannot use secp256k1_eckey_pubkey_serialize here since it does not + * expect its output to be secret and has a timing sidechannel. */ + secp256k1_fe_normalize(&pt.x); + secp256k1_fe_normalize(&pt.y); + secp256k1_fe_get_b32(x, &pt.x); + y[0] = 0x02 | secp256k1_fe_is_odd(&pt.y); + + secp256k1_sha256_initialize(&sha); + secp256k1_sha256_write(&sha, y, sizeof(y)); + secp256k1_sha256_write(&sha, x, sizeof(x)); + secp256k1_sha256_finalize(&sha, result); + ret = 1; + } + + secp256k1_scalar_clear(&s); + return ret; +} + +#endif /* SECP256K1_MODULE_ECDH_MAIN_H */ diff --git a/Pods/secp256k1_ios/secp256k1_ios/src/modules/recovery/main_impl.h b/Pods/secp256k1_ios/secp256k1_ios/src/modules/recovery/main_impl.h new file mode 100755 index 00000000..1abe509f --- /dev/null +++ b/Pods/secp256k1_ios/secp256k1_ios/src/modules/recovery/main_impl.h @@ -0,0 +1,193 @@ +/********************************************************************** + * Copyright (c) 2013-2015 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef SECP256K1_MODULE_RECOVERY_MAIN_H +#define SECP256K1_MODULE_RECOVERY_MAIN_H + +#include "secp256k1_recovery.h" + +static void secp256k1_ecdsa_recoverable_signature_load(const secp256k1_context* ctx, secp256k1_scalar* r, secp256k1_scalar* s, int* recid, const secp256k1_ecdsa_recoverable_signature* sig) { + (void)ctx; + if (sizeof(secp256k1_scalar) == 32) { + /* When the secp256k1_scalar type is exactly 32 byte, use its + * representation inside secp256k1_ecdsa_signature, as conversion is very fast. + * Note that secp256k1_ecdsa_signature_save must use the same representation. */ + memcpy(r, &sig->data[0], 32); + memcpy(s, &sig->data[32], 32); + } else { + secp256k1_scalar_set_b32(r, &sig->data[0], NULL); + secp256k1_scalar_set_b32(s, &sig->data[32], NULL); + } + *recid = sig->data[64]; +} + +static void secp256k1_ecdsa_recoverable_signature_save(secp256k1_ecdsa_recoverable_signature* sig, const secp256k1_scalar* r, const secp256k1_scalar* s, int recid) { + if (sizeof(secp256k1_scalar) == 32) { + memcpy(&sig->data[0], r, 32); + memcpy(&sig->data[32], s, 32); + } else { + secp256k1_scalar_get_b32(&sig->data[0], r); + secp256k1_scalar_get_b32(&sig->data[32], s); + } + sig->data[64] = recid; +} + +int secp256k1_ecdsa_recoverable_signature_parse_compact(const secp256k1_context* ctx, secp256k1_ecdsa_recoverable_signature* sig, const unsigned char *input64, int recid) { + secp256k1_scalar r, s; + int ret = 1; + int overflow = 0; + + (void)ctx; + ARG_CHECK(sig != NULL); + ARG_CHECK(input64 != NULL); + ARG_CHECK(recid >= 0 && recid <= 3); + + secp256k1_scalar_set_b32(&r, &input64[0], &overflow); + ret &= !overflow; + secp256k1_scalar_set_b32(&s, &input64[32], &overflow); + ret &= !overflow; + if (ret) { + secp256k1_ecdsa_recoverable_signature_save(sig, &r, &s, recid); + } else { + memset(sig, 0, sizeof(*sig)); + } + return ret; +} + +int secp256k1_ecdsa_recoverable_signature_serialize_compact(const secp256k1_context* ctx, unsigned char *output64, int *recid, const secp256k1_ecdsa_recoverable_signature* sig) { + secp256k1_scalar r, s; + + (void)ctx; + ARG_CHECK(output64 != NULL); + ARG_CHECK(sig != NULL); + ARG_CHECK(recid != NULL); + + secp256k1_ecdsa_recoverable_signature_load(ctx, &r, &s, recid, sig); + secp256k1_scalar_get_b32(&output64[0], &r); + secp256k1_scalar_get_b32(&output64[32], &s); + return 1; +} + +int secp256k1_ecdsa_recoverable_signature_convert(const secp256k1_context* ctx, secp256k1_ecdsa_signature* sig, const secp256k1_ecdsa_recoverable_signature* sigin) { + secp256k1_scalar r, s; + int recid; + + (void)ctx; + ARG_CHECK(sig != NULL); + ARG_CHECK(sigin != NULL); + + secp256k1_ecdsa_recoverable_signature_load(ctx, &r, &s, &recid, sigin); + secp256k1_ecdsa_signature_save(sig, &r, &s); + return 1; +} + +static int secp256k1_ecdsa_sig_recover(const secp256k1_ecmult_context *ctx, const secp256k1_scalar *sigr, const secp256k1_scalar* sigs, secp256k1_ge *pubkey, const secp256k1_scalar *message, int recid) { + unsigned char brx[32]; + secp256k1_fe fx; + secp256k1_ge x; + secp256k1_gej xj; + secp256k1_scalar rn, u1, u2; + secp256k1_gej qj; + int r; + + if (secp256k1_scalar_is_zero(sigr) || secp256k1_scalar_is_zero(sigs)) { + return 0; + } + + secp256k1_scalar_get_b32(brx, sigr); + r = secp256k1_fe_set_b32(&fx, brx); + (void)r; + VERIFY_CHECK(r); /* brx comes from a scalar, so is less than the order; certainly less than p */ + if (recid & 2) { + if (secp256k1_fe_cmp_var(&fx, &secp256k1_ecdsa_const_p_minus_order) >= 0) { + return 0; + } + secp256k1_fe_add(&fx, &secp256k1_ecdsa_const_order_as_fe); + } + if (!secp256k1_ge_set_xo_var(&x, &fx, recid & 1)) { + return 0; + } + secp256k1_gej_set_ge(&xj, &x); + secp256k1_scalar_inverse_var(&rn, sigr); + secp256k1_scalar_mul(&u1, &rn, message); + secp256k1_scalar_negate(&u1, &u1); + secp256k1_scalar_mul(&u2, &rn, sigs); + secp256k1_ecmult(ctx, &qj, &xj, &u2, &u1); + secp256k1_ge_set_gej_var(pubkey, &qj); + return !secp256k1_gej_is_infinity(&qj); +} + +int secp256k1_ecdsa_sign_recoverable(const secp256k1_context* ctx, secp256k1_ecdsa_recoverable_signature *signature, const unsigned char *msg32, const unsigned char *seckey, secp256k1_nonce_function noncefp, const void* noncedata) { + secp256k1_scalar r, s; + secp256k1_scalar sec, non, msg; + int recid; + int ret = 0; + int overflow = 0; + VERIFY_CHECK(ctx != NULL); + ARG_CHECK(secp256k1_ecmult_gen_context_is_built(&ctx->ecmult_gen_ctx)); + ARG_CHECK(msg32 != NULL); + ARG_CHECK(signature != NULL); + ARG_CHECK(seckey != NULL); + if (noncefp == NULL) { + noncefp = secp256k1_nonce_function_default; + } + + secp256k1_scalar_set_b32(&sec, seckey, &overflow); + /* Fail if the secret key is invalid. */ + if (!overflow && !secp256k1_scalar_is_zero(&sec)) { + unsigned char nonce32[32]; + unsigned int count = 0; + secp256k1_scalar_set_b32(&msg, msg32, NULL); + while (1) { + ret = noncefp(nonce32, msg32, seckey, NULL, (void*)noncedata, count); + if (!ret) { + break; + } + secp256k1_scalar_set_b32(&non, nonce32, &overflow); + if (!secp256k1_scalar_is_zero(&non) && !overflow) { + if (secp256k1_ecdsa_sig_sign(&ctx->ecmult_gen_ctx, &r, &s, &sec, &msg, &non, &recid)) { + break; + } + } + count++; + } + memset(nonce32, 0, 32); + secp256k1_scalar_clear(&msg); + secp256k1_scalar_clear(&non); + secp256k1_scalar_clear(&sec); + } + if (ret) { + secp256k1_ecdsa_recoverable_signature_save(signature, &r, &s, recid); + } else { + memset(signature, 0, sizeof(*signature)); + } + return ret; +} + +int secp256k1_ecdsa_recover(const secp256k1_context* ctx, secp256k1_pubkey *pubkey, const secp256k1_ecdsa_recoverable_signature *signature, const unsigned char *msg32) { + secp256k1_ge q; + secp256k1_scalar r, s; + secp256k1_scalar m; + int recid; + VERIFY_CHECK(ctx != NULL); + ARG_CHECK(secp256k1_ecmult_context_is_built(&ctx->ecmult_ctx)); + ARG_CHECK(msg32 != NULL); + ARG_CHECK(signature != NULL); + ARG_CHECK(pubkey != NULL); + + secp256k1_ecdsa_recoverable_signature_load(ctx, &r, &s, &recid, signature); + VERIFY_CHECK(recid >= 0 && recid < 4); /* should have been caught in parse_compact */ + secp256k1_scalar_set_b32(&m, msg32, NULL); + if (secp256k1_ecdsa_sig_recover(&ctx->ecmult_ctx, &r, &s, &q, &m, recid)) { + secp256k1_pubkey_save(pubkey, &q); + return 1; + } else { + memset(pubkey, 0, sizeof(*pubkey)); + return 0; + } +} + +#endif /* SECP256K1_MODULE_RECOVERY_MAIN_H */ diff --git a/Pods/secp256k1_ios/secp256k1_ios/src/num.h b/Pods/secp256k1_ios/secp256k1_ios/src/num.h new file mode 100644 index 00000000..49f2dd79 --- /dev/null +++ b/Pods/secp256k1_ios/secp256k1_ios/src/num.h @@ -0,0 +1,74 @@ +/********************************************************************** + * Copyright (c) 2013, 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef SECP256K1_NUM_H +#define SECP256K1_NUM_H + +#ifndef USE_NUM_NONE + +#if defined HAVE_CONFIG_H +#include "libsecp256k1-config.h" +#endif + +#if defined(USE_NUM_GMP) +#include "num_gmp.h" +#else +#error "Please select num implementation" +#endif + +/** Copy a number. */ +static void secp256k1_num_copy(secp256k1_num *r, const secp256k1_num *a); + +/** Convert a number's absolute value to a binary big-endian string. + * There must be enough place. */ +static void secp256k1_num_get_bin(unsigned char *r, unsigned int rlen, const secp256k1_num *a); + +/** Set a number to the value of a binary big-endian string. */ +static void secp256k1_num_set_bin(secp256k1_num *r, const unsigned char *a, unsigned int alen); + +/** Compute a modular inverse. The input must be less than the modulus. */ +static void secp256k1_num_mod_inverse(secp256k1_num *r, const secp256k1_num *a, const secp256k1_num *m); + +/** Compute the jacobi symbol (a|b). b must be positive and odd. */ +static int secp256k1_num_jacobi(const secp256k1_num *a, const secp256k1_num *b); + +/** Compare the absolute value of two numbers. */ +static int secp256k1_num_cmp(const secp256k1_num *a, const secp256k1_num *b); + +/** Test whether two number are equal (including sign). */ +static int secp256k1_num_eq(const secp256k1_num *a, const secp256k1_num *b); + +/** Add two (signed) numbers. */ +static void secp256k1_num_add(secp256k1_num *r, const secp256k1_num *a, const secp256k1_num *b); + +/** Subtract two (signed) numbers. */ +static void secp256k1_num_sub(secp256k1_num *r, const secp256k1_num *a, const secp256k1_num *b); + +/** Multiply two (signed) numbers. */ +static void secp256k1_num_mul(secp256k1_num *r, const secp256k1_num *a, const secp256k1_num *b); + +/** Replace a number by its remainder modulo m. M's sign is ignored. The result is a number between 0 and m-1, + even if r was negative. */ +static void secp256k1_num_mod(secp256k1_num *r, const secp256k1_num *m); + +/** Right-shift the passed number by bits bits. */ +static void secp256k1_num_shift(secp256k1_num *r, int bits); + +/** Check whether a number is zero. */ +static int secp256k1_num_is_zero(const secp256k1_num *a); + +/** Check whether a number is one. */ +static int secp256k1_num_is_one(const secp256k1_num *a); + +/** Check whether a number is strictly negative. */ +static int secp256k1_num_is_neg(const secp256k1_num *a); + +/** Change a number's sign. */ +static void secp256k1_num_negate(secp256k1_num *r); + +#endif + +#endif /* SECP256K1_NUM_H */ diff --git a/Pods/secp256k1_ios/secp256k1_ios/src/num_gmp.h b/Pods/secp256k1_ios/secp256k1_ios/src/num_gmp.h new file mode 100644 index 00000000..3619844b --- /dev/null +++ b/Pods/secp256k1_ios/secp256k1_ios/src/num_gmp.h @@ -0,0 +1,20 @@ +/********************************************************************** + * Copyright (c) 2013, 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef SECP256K1_NUM_REPR_H +#define SECP256K1_NUM_REPR_H + +#include + +#define NUM_LIMBS ((256+GMP_NUMB_BITS-1)/GMP_NUMB_BITS) + +typedef struct { + mp_limb_t data[2*NUM_LIMBS]; + int neg; + int limbs; +} secp256k1_num; + +#endif /* SECP256K1_NUM_REPR_H */ diff --git a/Pods/secp256k1_ios/secp256k1_ios/src/num_gmp_impl.h b/Pods/secp256k1_ios/secp256k1_ios/src/num_gmp_impl.h new file mode 100644 index 00000000..0ae2a8ba --- /dev/null +++ b/Pods/secp256k1_ios/secp256k1_ios/src/num_gmp_impl.h @@ -0,0 +1,288 @@ +/********************************************************************** + * Copyright (c) 2013, 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef SECP256K1_NUM_REPR_IMPL_H +#define SECP256K1_NUM_REPR_IMPL_H + +#include +#include +#include + +#include "util.h" +#include "num.h" + +#ifdef VERIFY +static void secp256k1_num_sanity(const secp256k1_num *a) { + VERIFY_CHECK(a->limbs == 1 || (a->limbs > 1 && a->data[a->limbs-1] != 0)); +} +#else +#define secp256k1_num_sanity(a) do { } while(0) +#endif + +static void secp256k1_num_copy(secp256k1_num *r, const secp256k1_num *a) { + *r = *a; +} + +static void secp256k1_num_get_bin(unsigned char *r, unsigned int rlen, const secp256k1_num *a) { + unsigned char tmp[65]; + int len = 0; + int shift = 0; + if (a->limbs>1 || a->data[0] != 0) { + len = mpn_get_str(tmp, 256, (mp_limb_t*)a->data, a->limbs); + } + while (shift < len && tmp[shift] == 0) shift++; + VERIFY_CHECK(len-shift <= (int)rlen); + memset(r, 0, rlen - len + shift); + if (len > shift) { + memcpy(r + rlen - len + shift, tmp + shift, len - shift); + } + memset(tmp, 0, sizeof(tmp)); +} + +static void secp256k1_num_set_bin(secp256k1_num *r, const unsigned char *a, unsigned int alen) { + int len; + VERIFY_CHECK(alen > 0); + VERIFY_CHECK(alen <= 64); + len = mpn_set_str(r->data, a, alen, 256); + if (len == 0) { + r->data[0] = 0; + len = 1; + } + VERIFY_CHECK(len <= NUM_LIMBS*2); + r->limbs = len; + r->neg = 0; + while (r->limbs > 1 && r->data[r->limbs-1]==0) { + r->limbs--; + } +} + +static void secp256k1_num_add_abs(secp256k1_num *r, const secp256k1_num *a, const secp256k1_num *b) { + mp_limb_t c = mpn_add(r->data, a->data, a->limbs, b->data, b->limbs); + r->limbs = a->limbs; + if (c != 0) { + VERIFY_CHECK(r->limbs < 2*NUM_LIMBS); + r->data[r->limbs++] = c; + } +} + +static void secp256k1_num_sub_abs(secp256k1_num *r, const secp256k1_num *a, const secp256k1_num *b) { + mp_limb_t c = mpn_sub(r->data, a->data, a->limbs, b->data, b->limbs); + (void)c; + VERIFY_CHECK(c == 0); + r->limbs = a->limbs; + while (r->limbs > 1 && r->data[r->limbs-1]==0) { + r->limbs--; + } +} + +static void secp256k1_num_mod(secp256k1_num *r, const secp256k1_num *m) { + secp256k1_num_sanity(r); + secp256k1_num_sanity(m); + + if (r->limbs >= m->limbs) { + mp_limb_t t[2*NUM_LIMBS]; + mpn_tdiv_qr(t, r->data, 0, r->data, r->limbs, m->data, m->limbs); + memset(t, 0, sizeof(t)); + r->limbs = m->limbs; + while (r->limbs > 1 && r->data[r->limbs-1]==0) { + r->limbs--; + } + } + + if (r->neg && (r->limbs > 1 || r->data[0] != 0)) { + secp256k1_num_sub_abs(r, m, r); + r->neg = 0; + } +} + +static void secp256k1_num_mod_inverse(secp256k1_num *r, const secp256k1_num *a, const secp256k1_num *m) { + int i; + mp_limb_t g[NUM_LIMBS+1]; + mp_limb_t u[NUM_LIMBS+1]; + mp_limb_t v[NUM_LIMBS+1]; + mp_size_t sn; + mp_size_t gn; + secp256k1_num_sanity(a); + secp256k1_num_sanity(m); + + /** mpn_gcdext computes: (G,S) = gcdext(U,V), where + * * G = gcd(U,V) + * * G = U*S + V*T + * * U has equal or more limbs than V, and V has no padding + * If we set U to be (a padded version of) a, and V = m: + * G = a*S + m*T + * G = a*S mod m + * Assuming G=1: + * S = 1/a mod m + */ + VERIFY_CHECK(m->limbs <= NUM_LIMBS); + VERIFY_CHECK(m->data[m->limbs-1] != 0); + for (i = 0; i < m->limbs; i++) { + u[i] = (i < a->limbs) ? a->data[i] : 0; + v[i] = m->data[i]; + } + sn = NUM_LIMBS+1; + gn = mpn_gcdext(g, r->data, &sn, u, m->limbs, v, m->limbs); + (void)gn; + VERIFY_CHECK(gn == 1); + VERIFY_CHECK(g[0] == 1); + r->neg = a->neg ^ m->neg; + if (sn < 0) { + mpn_sub(r->data, m->data, m->limbs, r->data, -sn); + r->limbs = m->limbs; + while (r->limbs > 1 && r->data[r->limbs-1]==0) { + r->limbs--; + } + } else { + r->limbs = sn; + } + memset(g, 0, sizeof(g)); + memset(u, 0, sizeof(u)); + memset(v, 0, sizeof(v)); +} + +static int secp256k1_num_jacobi(const secp256k1_num *a, const secp256k1_num *b) { + int ret; + mpz_t ga, gb; + secp256k1_num_sanity(a); + secp256k1_num_sanity(b); + VERIFY_CHECK(!b->neg && (b->limbs > 0) && (b->data[0] & 1)); + + mpz_inits(ga, gb, NULL); + + mpz_import(gb, b->limbs, -1, sizeof(mp_limb_t), 0, 0, b->data); + mpz_import(ga, a->limbs, -1, sizeof(mp_limb_t), 0, 0, a->data); + if (a->neg) { + mpz_neg(ga, ga); + } + + ret = mpz_jacobi(ga, gb); + + mpz_clears(ga, gb, NULL); + + return ret; +} + +static int secp256k1_num_is_one(const secp256k1_num *a) { + return (a->limbs == 1 && a->data[0] == 1); +} + +static int secp256k1_num_is_zero(const secp256k1_num *a) { + return (a->limbs == 1 && a->data[0] == 0); +} + +static int secp256k1_num_is_neg(const secp256k1_num *a) { + return (a->limbs > 1 || a->data[0] != 0) && a->neg; +} + +static int secp256k1_num_cmp(const secp256k1_num *a, const secp256k1_num *b) { + if (a->limbs > b->limbs) { + return 1; + } + if (a->limbs < b->limbs) { + return -1; + } + return mpn_cmp(a->data, b->data, a->limbs); +} + +static int secp256k1_num_eq(const secp256k1_num *a, const secp256k1_num *b) { + if (a->limbs > b->limbs) { + return 0; + } + if (a->limbs < b->limbs) { + return 0; + } + if ((a->neg && !secp256k1_num_is_zero(a)) != (b->neg && !secp256k1_num_is_zero(b))) { + return 0; + } + return mpn_cmp(a->data, b->data, a->limbs) == 0; +} + +static void secp256k1_num_subadd(secp256k1_num *r, const secp256k1_num *a, const secp256k1_num *b, int bneg) { + if (!(b->neg ^ bneg ^ a->neg)) { /* a and b have the same sign */ + r->neg = a->neg; + if (a->limbs >= b->limbs) { + secp256k1_num_add_abs(r, a, b); + } else { + secp256k1_num_add_abs(r, b, a); + } + } else { + if (secp256k1_num_cmp(a, b) > 0) { + r->neg = a->neg; + secp256k1_num_sub_abs(r, a, b); + } else { + r->neg = b->neg ^ bneg; + secp256k1_num_sub_abs(r, b, a); + } + } +} + +static void secp256k1_num_add(secp256k1_num *r, const secp256k1_num *a, const secp256k1_num *b) { + secp256k1_num_sanity(a); + secp256k1_num_sanity(b); + secp256k1_num_subadd(r, a, b, 0); +} + +static void secp256k1_num_sub(secp256k1_num *r, const secp256k1_num *a, const secp256k1_num *b) { + secp256k1_num_sanity(a); + secp256k1_num_sanity(b); + secp256k1_num_subadd(r, a, b, 1); +} + +static void secp256k1_num_mul(secp256k1_num *r, const secp256k1_num *a, const secp256k1_num *b) { + mp_limb_t tmp[2*NUM_LIMBS+1]; + secp256k1_num_sanity(a); + secp256k1_num_sanity(b); + + VERIFY_CHECK(a->limbs + b->limbs <= 2*NUM_LIMBS+1); + if ((a->limbs==1 && a->data[0]==0) || (b->limbs==1 && b->data[0]==0)) { + r->limbs = 1; + r->neg = 0; + r->data[0] = 0; + return; + } + if (a->limbs >= b->limbs) { + mpn_mul(tmp, a->data, a->limbs, b->data, b->limbs); + } else { + mpn_mul(tmp, b->data, b->limbs, a->data, a->limbs); + } + r->limbs = a->limbs + b->limbs; + if (r->limbs > 1 && tmp[r->limbs - 1]==0) { + r->limbs--; + } + VERIFY_CHECK(r->limbs <= 2*NUM_LIMBS); + mpn_copyi(r->data, tmp, r->limbs); + r->neg = a->neg ^ b->neg; + memset(tmp, 0, sizeof(tmp)); +} + +static void secp256k1_num_shift(secp256k1_num *r, int bits) { + if (bits % GMP_NUMB_BITS) { + /* Shift within limbs. */ + mpn_rshift(r->data, r->data, r->limbs, bits % GMP_NUMB_BITS); + } + if (bits >= GMP_NUMB_BITS) { + int i; + /* Shift full limbs. */ + for (i = 0; i < r->limbs; i++) { + int index = i + (bits / GMP_NUMB_BITS); + if (index < r->limbs && index < 2*NUM_LIMBS) { + r->data[i] = r->data[index]; + } else { + r->data[i] = 0; + } + } + } + while (r->limbs>1 && r->data[r->limbs-1]==0) { + r->limbs--; + } +} + +static void secp256k1_num_negate(secp256k1_num *r) { + r->neg ^= 1; +} + +#endif /* SECP256K1_NUM_REPR_IMPL_H */ diff --git a/Pods/secp256k1_ios/secp256k1_ios/src/num_impl.h b/Pods/secp256k1_ios/secp256k1_ios/src/num_impl.h new file mode 100644 index 00000000..c45193b0 --- /dev/null +++ b/Pods/secp256k1_ios/secp256k1_ios/src/num_impl.h @@ -0,0 +1,24 @@ +/********************************************************************** + * Copyright (c) 2013, 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef SECP256K1_NUM_IMPL_H +#define SECP256K1_NUM_IMPL_H + +#if defined HAVE_CONFIG_H +#include "libsecp256k1-config.h" +#endif + +#include "num.h" + +#if defined(USE_NUM_GMP) +#include "num_gmp_impl.h" +#elif defined(USE_NUM_NONE) +/* Nothing. */ +#else +#error "Please select num implementation" +#endif + +#endif /* SECP256K1_NUM_IMPL_H */ diff --git a/Pods/secp256k1_ios/secp256k1_ios/src/scalar.h b/Pods/secp256k1_ios/secp256k1_ios/src/scalar.h new file mode 100644 index 00000000..59304cb6 --- /dev/null +++ b/Pods/secp256k1_ios/secp256k1_ios/src/scalar.h @@ -0,0 +1,106 @@ +/********************************************************************** + * Copyright (c) 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef SECP256K1_SCALAR_H +#define SECP256K1_SCALAR_H + +#include "num.h" + +#if defined HAVE_CONFIG_H +#include "libsecp256k1-config.h" +#endif + +#if defined(EXHAUSTIVE_TEST_ORDER) +#include "scalar_low.h" +#elif defined(USE_SCALAR_4X64) +#include "scalar_4x64.h" +#elif defined(USE_SCALAR_8X32) +#include "scalar_8x32.h" +#else +#error "Please select scalar implementation" +#endif + +/** Clear a scalar to prevent the leak of sensitive data. */ +static void secp256k1_scalar_clear(secp256k1_scalar *r); + +/** Access bits from a scalar. All requested bits must belong to the same 32-bit limb. */ +static unsigned int secp256k1_scalar_get_bits(const secp256k1_scalar *a, unsigned int offset, unsigned int count); + +/** Access bits from a scalar. Not constant time. */ +static unsigned int secp256k1_scalar_get_bits_var(const secp256k1_scalar *a, unsigned int offset, unsigned int count); + +/** Set a scalar from a big endian byte array. */ +static void secp256k1_scalar_set_b32(secp256k1_scalar *r, const unsigned char *bin, int *overflow); + +/** Set a scalar to an unsigned integer. */ +static void secp256k1_scalar_set_int(secp256k1_scalar *r, unsigned int v); + +/** Convert a scalar to a byte array. */ +static void secp256k1_scalar_get_b32(unsigned char *bin, const secp256k1_scalar* a); + +/** Add two scalars together (modulo the group order). Returns whether it overflowed. */ +static int secp256k1_scalar_add(secp256k1_scalar *r, const secp256k1_scalar *a, const secp256k1_scalar *b); + +/** Conditionally add a power of two to a scalar. The result is not allowed to overflow. */ +static void secp256k1_scalar_cadd_bit(secp256k1_scalar *r, unsigned int bit, int flag); + +/** Multiply two scalars (modulo the group order). */ +static void secp256k1_scalar_mul(secp256k1_scalar *r, const secp256k1_scalar *a, const secp256k1_scalar *b); + +/** Shift a scalar right by some amount strictly between 0 and 16, returning + * the low bits that were shifted off */ +static int secp256k1_scalar_shr_int(secp256k1_scalar *r, int n); + +/** Compute the square of a scalar (modulo the group order). */ +static void secp256k1_scalar_sqr(secp256k1_scalar *r, const secp256k1_scalar *a); + +/** Compute the inverse of a scalar (modulo the group order). */ +static void secp256k1_scalar_inverse(secp256k1_scalar *r, const secp256k1_scalar *a); + +/** Compute the inverse of a scalar (modulo the group order), without constant-time guarantee. */ +static void secp256k1_scalar_inverse_var(secp256k1_scalar *r, const secp256k1_scalar *a); + +/** Compute the complement of a scalar (modulo the group order). */ +static void secp256k1_scalar_negate(secp256k1_scalar *r, const secp256k1_scalar *a); + +/** Check whether a scalar equals zero. */ +static int secp256k1_scalar_is_zero(const secp256k1_scalar *a); + +/** Check whether a scalar equals one. */ +static int secp256k1_scalar_is_one(const secp256k1_scalar *a); + +/** Check whether a scalar, considered as an nonnegative integer, is even. */ +static int secp256k1_scalar_is_even(const secp256k1_scalar *a); + +/** Check whether a scalar is higher than the group order divided by 2. */ +static int secp256k1_scalar_is_high(const secp256k1_scalar *a); + +/** Conditionally negate a number, in constant time. + * Returns -1 if the number was negated, 1 otherwise */ +static int secp256k1_scalar_cond_negate(secp256k1_scalar *a, int flag); + +#ifndef USE_NUM_NONE +/** Convert a scalar to a number. */ +static void secp256k1_scalar_get_num(secp256k1_num *r, const secp256k1_scalar *a); + +/** Get the order of the group as a number. */ +static void secp256k1_scalar_order_get_num(secp256k1_num *r); +#endif + +/** Compare two scalars. */ +static int secp256k1_scalar_eq(const secp256k1_scalar *a, const secp256k1_scalar *b); + +#ifdef USE_ENDOMORPHISM +/** Find r1 and r2 such that r1+r2*2^128 = a. */ +static void secp256k1_scalar_split_128(secp256k1_scalar *r1, secp256k1_scalar *r2, const secp256k1_scalar *a); +/** Find r1 and r2 such that r1+r2*lambda = a, and r1 and r2 are maximum 128 bits long (see secp256k1_gej_mul_lambda). */ +static void secp256k1_scalar_split_lambda(secp256k1_scalar *r1, secp256k1_scalar *r2, const secp256k1_scalar *a); +#endif + +/** Multiply a and b (without taking the modulus!), divide by 2**shift, and round to the nearest integer. Shift must be at least 256. */ +static void secp256k1_scalar_mul_shift_var(secp256k1_scalar *r, const secp256k1_scalar *a, const secp256k1_scalar *b, unsigned int shift); + +#endif /* SECP256K1_SCALAR_H */ diff --git a/Pods/secp256k1_ios/secp256k1_ios/src/scalar_4x64.h b/Pods/secp256k1_ios/secp256k1_ios/src/scalar_4x64.h new file mode 100644 index 00000000..19c7495d --- /dev/null +++ b/Pods/secp256k1_ios/secp256k1_ios/src/scalar_4x64.h @@ -0,0 +1,19 @@ +/********************************************************************** + * Copyright (c) 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef SECP256K1_SCALAR_REPR_H +#define SECP256K1_SCALAR_REPR_H + +#include + +/** A scalar modulo the group order of the secp256k1 curve. */ +typedef struct { + uint64_t d[4]; +} secp256k1_scalar; + +#define SECP256K1_SCALAR_CONST(d7, d6, d5, d4, d3, d2, d1, d0) {{((uint64_t)(d1)) << 32 | (d0), ((uint64_t)(d3)) << 32 | (d2), ((uint64_t)(d5)) << 32 | (d4), ((uint64_t)(d7)) << 32 | (d6)}} + +#endif /* SECP256K1_SCALAR_REPR_H */ diff --git a/Pods/secp256k1_ios/secp256k1_ios/src/scalar_4x64_impl.h b/Pods/secp256k1_ios/secp256k1_ios/src/scalar_4x64_impl.h new file mode 100644 index 00000000..db1ebf94 --- /dev/null +++ b/Pods/secp256k1_ios/secp256k1_ios/src/scalar_4x64_impl.h @@ -0,0 +1,949 @@ +/********************************************************************** + * Copyright (c) 2013, 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef SECP256K1_SCALAR_REPR_IMPL_H +#define SECP256K1_SCALAR_REPR_IMPL_H + +/* Limbs of the secp256k1 order. */ +#define SECP256K1_N_0 ((uint64_t)0xBFD25E8CD0364141ULL) +#define SECP256K1_N_1 ((uint64_t)0xBAAEDCE6AF48A03BULL) +#define SECP256K1_N_2 ((uint64_t)0xFFFFFFFFFFFFFFFEULL) +#define SECP256K1_N_3 ((uint64_t)0xFFFFFFFFFFFFFFFFULL) + +/* Limbs of 2^256 minus the secp256k1 order. */ +#define SECP256K1_N_C_0 (~SECP256K1_N_0 + 1) +#define SECP256K1_N_C_1 (~SECP256K1_N_1) +#define SECP256K1_N_C_2 (1) + +/* Limbs of half the secp256k1 order. */ +#define SECP256K1_N_H_0 ((uint64_t)0xDFE92F46681B20A0ULL) +#define SECP256K1_N_H_1 ((uint64_t)0x5D576E7357A4501DULL) +#define SECP256K1_N_H_2 ((uint64_t)0xFFFFFFFFFFFFFFFFULL) +#define SECP256K1_N_H_3 ((uint64_t)0x7FFFFFFFFFFFFFFFULL) + +SECP256K1_INLINE static void secp256k1_scalar_clear(secp256k1_scalar *r) { + r->d[0] = 0; + r->d[1] = 0; + r->d[2] = 0; + r->d[3] = 0; +} + +SECP256K1_INLINE static void secp256k1_scalar_set_int(secp256k1_scalar *r, unsigned int v) { + r->d[0] = v; + r->d[1] = 0; + r->d[2] = 0; + r->d[3] = 0; +} + +SECP256K1_INLINE static unsigned int secp256k1_scalar_get_bits(const secp256k1_scalar *a, unsigned int offset, unsigned int count) { + VERIFY_CHECK((offset + count - 1) >> 6 == offset >> 6); + return (a->d[offset >> 6] >> (offset & 0x3F)) & ((((uint64_t)1) << count) - 1); +} + +SECP256K1_INLINE static unsigned int secp256k1_scalar_get_bits_var(const secp256k1_scalar *a, unsigned int offset, unsigned int count) { + VERIFY_CHECK(count < 32); + VERIFY_CHECK(offset + count <= 256); + if ((offset + count - 1) >> 6 == offset >> 6) { + return secp256k1_scalar_get_bits(a, offset, count); + } else { + VERIFY_CHECK((offset >> 6) + 1 < 4); + return ((a->d[offset >> 6] >> (offset & 0x3F)) | (a->d[(offset >> 6) + 1] << (64 - (offset & 0x3F)))) & ((((uint64_t)1) << count) - 1); + } +} + +SECP256K1_INLINE static int secp256k1_scalar_check_overflow(const secp256k1_scalar *a) { + int yes = 0; + int no = 0; + no |= (a->d[3] < SECP256K1_N_3); /* No need for a > check. */ + no |= (a->d[2] < SECP256K1_N_2); + yes |= (a->d[2] > SECP256K1_N_2) & ~no; + no |= (a->d[1] < SECP256K1_N_1); + yes |= (a->d[1] > SECP256K1_N_1) & ~no; + yes |= (a->d[0] >= SECP256K1_N_0) & ~no; + return yes; +} + +SECP256K1_INLINE static int secp256k1_scalar_reduce(secp256k1_scalar *r, unsigned int overflow) { + uint128_t t; + VERIFY_CHECK(overflow <= 1); + t = (uint128_t)r->d[0] + overflow * SECP256K1_N_C_0; + r->d[0] = t & 0xFFFFFFFFFFFFFFFFULL; t >>= 64; + t += (uint128_t)r->d[1] + overflow * SECP256K1_N_C_1; + r->d[1] = t & 0xFFFFFFFFFFFFFFFFULL; t >>= 64; + t += (uint128_t)r->d[2] + overflow * SECP256K1_N_C_2; + r->d[2] = t & 0xFFFFFFFFFFFFFFFFULL; t >>= 64; + t += (uint64_t)r->d[3]; + r->d[3] = t & 0xFFFFFFFFFFFFFFFFULL; + return overflow; +} + +static int secp256k1_scalar_add(secp256k1_scalar *r, const secp256k1_scalar *a, const secp256k1_scalar *b) { + int overflow; + uint128_t t = (uint128_t)a->d[0] + b->d[0]; + r->d[0] = t & 0xFFFFFFFFFFFFFFFFULL; t >>= 64; + t += (uint128_t)a->d[1] + b->d[1]; + r->d[1] = t & 0xFFFFFFFFFFFFFFFFULL; t >>= 64; + t += (uint128_t)a->d[2] + b->d[2]; + r->d[2] = t & 0xFFFFFFFFFFFFFFFFULL; t >>= 64; + t += (uint128_t)a->d[3] + b->d[3]; + r->d[3] = t & 0xFFFFFFFFFFFFFFFFULL; t >>= 64; + overflow = t + secp256k1_scalar_check_overflow(r); + VERIFY_CHECK(overflow == 0 || overflow == 1); + secp256k1_scalar_reduce(r, overflow); + return overflow; +} + +static void secp256k1_scalar_cadd_bit(secp256k1_scalar *r, unsigned int bit, int flag) { + uint128_t t; + VERIFY_CHECK(bit < 256); + bit += ((uint32_t) flag - 1) & 0x100; /* forcing (bit >> 6) > 3 makes this a noop */ + t = (uint128_t)r->d[0] + (((uint64_t)((bit >> 6) == 0)) << (bit & 0x3F)); + r->d[0] = t & 0xFFFFFFFFFFFFFFFFULL; t >>= 64; + t += (uint128_t)r->d[1] + (((uint64_t)((bit >> 6) == 1)) << (bit & 0x3F)); + r->d[1] = t & 0xFFFFFFFFFFFFFFFFULL; t >>= 64; + t += (uint128_t)r->d[2] + (((uint64_t)((bit >> 6) == 2)) << (bit & 0x3F)); + r->d[2] = t & 0xFFFFFFFFFFFFFFFFULL; t >>= 64; + t += (uint128_t)r->d[3] + (((uint64_t)((bit >> 6) == 3)) << (bit & 0x3F)); + r->d[3] = t & 0xFFFFFFFFFFFFFFFFULL; +#ifdef VERIFY + VERIFY_CHECK((t >> 64) == 0); + VERIFY_CHECK(secp256k1_scalar_check_overflow(r) == 0); +#endif +} + +static void secp256k1_scalar_set_b32(secp256k1_scalar *r, const unsigned char *b32, int *overflow) { + int over; + r->d[0] = (uint64_t)b32[31] | (uint64_t)b32[30] << 8 | (uint64_t)b32[29] << 16 | (uint64_t)b32[28] << 24 | (uint64_t)b32[27] << 32 | (uint64_t)b32[26] << 40 | (uint64_t)b32[25] << 48 | (uint64_t)b32[24] << 56; + r->d[1] = (uint64_t)b32[23] | (uint64_t)b32[22] << 8 | (uint64_t)b32[21] << 16 | (uint64_t)b32[20] << 24 | (uint64_t)b32[19] << 32 | (uint64_t)b32[18] << 40 | (uint64_t)b32[17] << 48 | (uint64_t)b32[16] << 56; + r->d[2] = (uint64_t)b32[15] | (uint64_t)b32[14] << 8 | (uint64_t)b32[13] << 16 | (uint64_t)b32[12] << 24 | (uint64_t)b32[11] << 32 | (uint64_t)b32[10] << 40 | (uint64_t)b32[9] << 48 | (uint64_t)b32[8] << 56; + r->d[3] = (uint64_t)b32[7] | (uint64_t)b32[6] << 8 | (uint64_t)b32[5] << 16 | (uint64_t)b32[4] << 24 | (uint64_t)b32[3] << 32 | (uint64_t)b32[2] << 40 | (uint64_t)b32[1] << 48 | (uint64_t)b32[0] << 56; + over = secp256k1_scalar_reduce(r, secp256k1_scalar_check_overflow(r)); + if (overflow) { + *overflow = over; + } +} + +static void secp256k1_scalar_get_b32(unsigned char *bin, const secp256k1_scalar* a) { + bin[0] = a->d[3] >> 56; bin[1] = a->d[3] >> 48; bin[2] = a->d[3] >> 40; bin[3] = a->d[3] >> 32; bin[4] = a->d[3] >> 24; bin[5] = a->d[3] >> 16; bin[6] = a->d[3] >> 8; bin[7] = a->d[3]; + bin[8] = a->d[2] >> 56; bin[9] = a->d[2] >> 48; bin[10] = a->d[2] >> 40; bin[11] = a->d[2] >> 32; bin[12] = a->d[2] >> 24; bin[13] = a->d[2] >> 16; bin[14] = a->d[2] >> 8; bin[15] = a->d[2]; + bin[16] = a->d[1] >> 56; bin[17] = a->d[1] >> 48; bin[18] = a->d[1] >> 40; bin[19] = a->d[1] >> 32; bin[20] = a->d[1] >> 24; bin[21] = a->d[1] >> 16; bin[22] = a->d[1] >> 8; bin[23] = a->d[1]; + bin[24] = a->d[0] >> 56; bin[25] = a->d[0] >> 48; bin[26] = a->d[0] >> 40; bin[27] = a->d[0] >> 32; bin[28] = a->d[0] >> 24; bin[29] = a->d[0] >> 16; bin[30] = a->d[0] >> 8; bin[31] = a->d[0]; +} + +SECP256K1_INLINE static int secp256k1_scalar_is_zero(const secp256k1_scalar *a) { + return (a->d[0] | a->d[1] | a->d[2] | a->d[3]) == 0; +} + +static void secp256k1_scalar_negate(secp256k1_scalar *r, const secp256k1_scalar *a) { + uint64_t nonzero = 0xFFFFFFFFFFFFFFFFULL * (secp256k1_scalar_is_zero(a) == 0); + uint128_t t = (uint128_t)(~a->d[0]) + SECP256K1_N_0 + 1; + r->d[0] = t & nonzero; t >>= 64; + t += (uint128_t)(~a->d[1]) + SECP256K1_N_1; + r->d[1] = t & nonzero; t >>= 64; + t += (uint128_t)(~a->d[2]) + SECP256K1_N_2; + r->d[2] = t & nonzero; t >>= 64; + t += (uint128_t)(~a->d[3]) + SECP256K1_N_3; + r->d[3] = t & nonzero; +} + +SECP256K1_INLINE static int secp256k1_scalar_is_one(const secp256k1_scalar *a) { + return ((a->d[0] ^ 1) | a->d[1] | a->d[2] | a->d[3]) == 0; +} + +static int secp256k1_scalar_is_high(const secp256k1_scalar *a) { + int yes = 0; + int no = 0; + no |= (a->d[3] < SECP256K1_N_H_3); + yes |= (a->d[3] > SECP256K1_N_H_3) & ~no; + no |= (a->d[2] < SECP256K1_N_H_2) & ~yes; /* No need for a > check. */ + no |= (a->d[1] < SECP256K1_N_H_1) & ~yes; + yes |= (a->d[1] > SECP256K1_N_H_1) & ~no; + yes |= (a->d[0] > SECP256K1_N_H_0) & ~no; + return yes; +} + +static int secp256k1_scalar_cond_negate(secp256k1_scalar *r, int flag) { + /* If we are flag = 0, mask = 00...00 and this is a no-op; + * if we are flag = 1, mask = 11...11 and this is identical to secp256k1_scalar_negate */ + uint64_t mask = !flag - 1; + uint64_t nonzero = (secp256k1_scalar_is_zero(r) != 0) - 1; + uint128_t t = (uint128_t)(r->d[0] ^ mask) + ((SECP256K1_N_0 + 1) & mask); + r->d[0] = t & nonzero; t >>= 64; + t += (uint128_t)(r->d[1] ^ mask) + (SECP256K1_N_1 & mask); + r->d[1] = t & nonzero; t >>= 64; + t += (uint128_t)(r->d[2] ^ mask) + (SECP256K1_N_2 & mask); + r->d[2] = t & nonzero; t >>= 64; + t += (uint128_t)(r->d[3] ^ mask) + (SECP256K1_N_3 & mask); + r->d[3] = t & nonzero; + return 2 * (mask == 0) - 1; +} + +/* Inspired by the macros in OpenSSL's crypto/bn/asm/x86_64-gcc.c. */ + +/** Add a*b to the number defined by (c0,c1,c2). c2 must never overflow. */ +#define muladd(a,b) { \ + uint64_t tl, th; \ + { \ + uint128_t t = (uint128_t)a * b; \ + th = t >> 64; /* at most 0xFFFFFFFFFFFFFFFE */ \ + tl = t; \ + } \ + c0 += tl; /* overflow is handled on the next line */ \ + th += (c0 < tl) ? 1 : 0; /* at most 0xFFFFFFFFFFFFFFFF */ \ + c1 += th; /* overflow is handled on the next line */ \ + c2 += (c1 < th) ? 1 : 0; /* never overflows by contract (verified in the next line) */ \ + VERIFY_CHECK((c1 >= th) || (c2 != 0)); \ +} + +/** Add a*b to the number defined by (c0,c1). c1 must never overflow. */ +#define muladd_fast(a,b) { \ + uint64_t tl, th; \ + { \ + uint128_t t = (uint128_t)a * b; \ + th = t >> 64; /* at most 0xFFFFFFFFFFFFFFFE */ \ + tl = t; \ + } \ + c0 += tl; /* overflow is handled on the next line */ \ + th += (c0 < tl) ? 1 : 0; /* at most 0xFFFFFFFFFFFFFFFF */ \ + c1 += th; /* never overflows by contract (verified in the next line) */ \ + VERIFY_CHECK(c1 >= th); \ +} + +/** Add 2*a*b to the number defined by (c0,c1,c2). c2 must never overflow. */ +#define muladd2(a,b) { \ + uint64_t tl, th, th2, tl2; \ + { \ + uint128_t t = (uint128_t)a * b; \ + th = t >> 64; /* at most 0xFFFFFFFFFFFFFFFE */ \ + tl = t; \ + } \ + th2 = th + th; /* at most 0xFFFFFFFFFFFFFFFE (in case th was 0x7FFFFFFFFFFFFFFF) */ \ + c2 += (th2 < th) ? 1 : 0; /* never overflows by contract (verified the next line) */ \ + VERIFY_CHECK((th2 >= th) || (c2 != 0)); \ + tl2 = tl + tl; /* at most 0xFFFFFFFFFFFFFFFE (in case the lowest 63 bits of tl were 0x7FFFFFFFFFFFFFFF) */ \ + th2 += (tl2 < tl) ? 1 : 0; /* at most 0xFFFFFFFFFFFFFFFF */ \ + c0 += tl2; /* overflow is handled on the next line */ \ + th2 += (c0 < tl2) ? 1 : 0; /* second overflow is handled on the next line */ \ + c2 += (c0 < tl2) & (th2 == 0); /* never overflows by contract (verified the next line) */ \ + VERIFY_CHECK((c0 >= tl2) || (th2 != 0) || (c2 != 0)); \ + c1 += th2; /* overflow is handled on the next line */ \ + c2 += (c1 < th2) ? 1 : 0; /* never overflows by contract (verified the next line) */ \ + VERIFY_CHECK((c1 >= th2) || (c2 != 0)); \ +} + +/** Add a to the number defined by (c0,c1,c2). c2 must never overflow. */ +#define sumadd(a) { \ + unsigned int over; \ + c0 += (a); /* overflow is handled on the next line */ \ + over = (c0 < (a)) ? 1 : 0; \ + c1 += over; /* overflow is handled on the next line */ \ + c2 += (c1 < over) ? 1 : 0; /* never overflows by contract */ \ +} + +/** Add a to the number defined by (c0,c1). c1 must never overflow, c2 must be zero. */ +#define sumadd_fast(a) { \ + c0 += (a); /* overflow is handled on the next line */ \ + c1 += (c0 < (a)) ? 1 : 0; /* never overflows by contract (verified the next line) */ \ + VERIFY_CHECK((c1 != 0) | (c0 >= (a))); \ + VERIFY_CHECK(c2 == 0); \ +} + +/** Extract the lowest 64 bits of (c0,c1,c2) into n, and left shift the number 64 bits. */ +#define extract(n) { \ + (n) = c0; \ + c0 = c1; \ + c1 = c2; \ + c2 = 0; \ +} + +/** Extract the lowest 64 bits of (c0,c1,c2) into n, and left shift the number 64 bits. c2 is required to be zero. */ +#define extract_fast(n) { \ + (n) = c0; \ + c0 = c1; \ + c1 = 0; \ + VERIFY_CHECK(c2 == 0); \ +} + +static void secp256k1_scalar_reduce_512(secp256k1_scalar *r, const uint64_t *l) { +#ifdef USE_ASM_X86_64 + /* Reduce 512 bits into 385. */ + uint64_t m0, m1, m2, m3, m4, m5, m6; + uint64_t p0, p1, p2, p3, p4; + uint64_t c; + + __asm__ __volatile__( + /* Preload. */ + "movq 32(%%rsi), %%r11\n" + "movq 40(%%rsi), %%r12\n" + "movq 48(%%rsi), %%r13\n" + "movq 56(%%rsi), %%r14\n" + /* Initialize r8,r9,r10 */ + "movq 0(%%rsi), %%r8\n" + "xorq %%r9, %%r9\n" + "xorq %%r10, %%r10\n" + /* (r8,r9) += n0 * c0 */ + "movq %8, %%rax\n" + "mulq %%r11\n" + "addq %%rax, %%r8\n" + "adcq %%rdx, %%r9\n" + /* extract m0 */ + "movq %%r8, %q0\n" + "xorq %%r8, %%r8\n" + /* (r9,r10) += l1 */ + "addq 8(%%rsi), %%r9\n" + "adcq $0, %%r10\n" + /* (r9,r10,r8) += n1 * c0 */ + "movq %8, %%rax\n" + "mulq %%r12\n" + "addq %%rax, %%r9\n" + "adcq %%rdx, %%r10\n" + "adcq $0, %%r8\n" + /* (r9,r10,r8) += n0 * c1 */ + "movq %9, %%rax\n" + "mulq %%r11\n" + "addq %%rax, %%r9\n" + "adcq %%rdx, %%r10\n" + "adcq $0, %%r8\n" + /* extract m1 */ + "movq %%r9, %q1\n" + "xorq %%r9, %%r9\n" + /* (r10,r8,r9) += l2 */ + "addq 16(%%rsi), %%r10\n" + "adcq $0, %%r8\n" + "adcq $0, %%r9\n" + /* (r10,r8,r9) += n2 * c0 */ + "movq %8, %%rax\n" + "mulq %%r13\n" + "addq %%rax, %%r10\n" + "adcq %%rdx, %%r8\n" + "adcq $0, %%r9\n" + /* (r10,r8,r9) += n1 * c1 */ + "movq %9, %%rax\n" + "mulq %%r12\n" + "addq %%rax, %%r10\n" + "adcq %%rdx, %%r8\n" + "adcq $0, %%r9\n" + /* (r10,r8,r9) += n0 */ + "addq %%r11, %%r10\n" + "adcq $0, %%r8\n" + "adcq $0, %%r9\n" + /* extract m2 */ + "movq %%r10, %q2\n" + "xorq %%r10, %%r10\n" + /* (r8,r9,r10) += l3 */ + "addq 24(%%rsi), %%r8\n" + "adcq $0, %%r9\n" + "adcq $0, %%r10\n" + /* (r8,r9,r10) += n3 * c0 */ + "movq %8, %%rax\n" + "mulq %%r14\n" + "addq %%rax, %%r8\n" + "adcq %%rdx, %%r9\n" + "adcq $0, %%r10\n" + /* (r8,r9,r10) += n2 * c1 */ + "movq %9, %%rax\n" + "mulq %%r13\n" + "addq %%rax, %%r8\n" + "adcq %%rdx, %%r9\n" + "adcq $0, %%r10\n" + /* (r8,r9,r10) += n1 */ + "addq %%r12, %%r8\n" + "adcq $0, %%r9\n" + "adcq $0, %%r10\n" + /* extract m3 */ + "movq %%r8, %q3\n" + "xorq %%r8, %%r8\n" + /* (r9,r10,r8) += n3 * c1 */ + "movq %9, %%rax\n" + "mulq %%r14\n" + "addq %%rax, %%r9\n" + "adcq %%rdx, %%r10\n" + "adcq $0, %%r8\n" + /* (r9,r10,r8) += n2 */ + "addq %%r13, %%r9\n" + "adcq $0, %%r10\n" + "adcq $0, %%r8\n" + /* extract m4 */ + "movq %%r9, %q4\n" + /* (r10,r8) += n3 */ + "addq %%r14, %%r10\n" + "adcq $0, %%r8\n" + /* extract m5 */ + "movq %%r10, %q5\n" + /* extract m6 */ + "movq %%r8, %q6\n" + : "=g"(m0), "=g"(m1), "=g"(m2), "=g"(m3), "=g"(m4), "=g"(m5), "=g"(m6) + : "S"(l), "n"(SECP256K1_N_C_0), "n"(SECP256K1_N_C_1) + : "rax", "rdx", "r8", "r9", "r10", "r11", "r12", "r13", "r14", "cc"); + + /* Reduce 385 bits into 258. */ + __asm__ __volatile__( + /* Preload */ + "movq %q9, %%r11\n" + "movq %q10, %%r12\n" + "movq %q11, %%r13\n" + /* Initialize (r8,r9,r10) */ + "movq %q5, %%r8\n" + "xorq %%r9, %%r9\n" + "xorq %%r10, %%r10\n" + /* (r8,r9) += m4 * c0 */ + "movq %12, %%rax\n" + "mulq %%r11\n" + "addq %%rax, %%r8\n" + "adcq %%rdx, %%r9\n" + /* extract p0 */ + "movq %%r8, %q0\n" + "xorq %%r8, %%r8\n" + /* (r9,r10) += m1 */ + "addq %q6, %%r9\n" + "adcq $0, %%r10\n" + /* (r9,r10,r8) += m5 * c0 */ + "movq %12, %%rax\n" + "mulq %%r12\n" + "addq %%rax, %%r9\n" + "adcq %%rdx, %%r10\n" + "adcq $0, %%r8\n" + /* (r9,r10,r8) += m4 * c1 */ + "movq %13, %%rax\n" + "mulq %%r11\n" + "addq %%rax, %%r9\n" + "adcq %%rdx, %%r10\n" + "adcq $0, %%r8\n" + /* extract p1 */ + "movq %%r9, %q1\n" + "xorq %%r9, %%r9\n" + /* (r10,r8,r9) += m2 */ + "addq %q7, %%r10\n" + "adcq $0, %%r8\n" + "adcq $0, %%r9\n" + /* (r10,r8,r9) += m6 * c0 */ + "movq %12, %%rax\n" + "mulq %%r13\n" + "addq %%rax, %%r10\n" + "adcq %%rdx, %%r8\n" + "adcq $0, %%r9\n" + /* (r10,r8,r9) += m5 * c1 */ + "movq %13, %%rax\n" + "mulq %%r12\n" + "addq %%rax, %%r10\n" + "adcq %%rdx, %%r8\n" + "adcq $0, %%r9\n" + /* (r10,r8,r9) += m4 */ + "addq %%r11, %%r10\n" + "adcq $0, %%r8\n" + "adcq $0, %%r9\n" + /* extract p2 */ + "movq %%r10, %q2\n" + /* (r8,r9) += m3 */ + "addq %q8, %%r8\n" + "adcq $0, %%r9\n" + /* (r8,r9) += m6 * c1 */ + "movq %13, %%rax\n" + "mulq %%r13\n" + "addq %%rax, %%r8\n" + "adcq %%rdx, %%r9\n" + /* (r8,r9) += m5 */ + "addq %%r12, %%r8\n" + "adcq $0, %%r9\n" + /* extract p3 */ + "movq %%r8, %q3\n" + /* (r9) += m6 */ + "addq %%r13, %%r9\n" + /* extract p4 */ + "movq %%r9, %q4\n" + : "=&g"(p0), "=&g"(p1), "=&g"(p2), "=g"(p3), "=g"(p4) + : "g"(m0), "g"(m1), "g"(m2), "g"(m3), "g"(m4), "g"(m5), "g"(m6), "n"(SECP256K1_N_C_0), "n"(SECP256K1_N_C_1) + : "rax", "rdx", "r8", "r9", "r10", "r11", "r12", "r13", "cc"); + + /* Reduce 258 bits into 256. */ + __asm__ __volatile__( + /* Preload */ + "movq %q5, %%r10\n" + /* (rax,rdx) = p4 * c0 */ + "movq %7, %%rax\n" + "mulq %%r10\n" + /* (rax,rdx) += p0 */ + "addq %q1, %%rax\n" + "adcq $0, %%rdx\n" + /* extract r0 */ + "movq %%rax, 0(%q6)\n" + /* Move to (r8,r9) */ + "movq %%rdx, %%r8\n" + "xorq %%r9, %%r9\n" + /* (r8,r9) += p1 */ + "addq %q2, %%r8\n" + "adcq $0, %%r9\n" + /* (r8,r9) += p4 * c1 */ + "movq %8, %%rax\n" + "mulq %%r10\n" + "addq %%rax, %%r8\n" + "adcq %%rdx, %%r9\n" + /* Extract r1 */ + "movq %%r8, 8(%q6)\n" + "xorq %%r8, %%r8\n" + /* (r9,r8) += p4 */ + "addq %%r10, %%r9\n" + "adcq $0, %%r8\n" + /* (r9,r8) += p2 */ + "addq %q3, %%r9\n" + "adcq $0, %%r8\n" + /* Extract r2 */ + "movq %%r9, 16(%q6)\n" + "xorq %%r9, %%r9\n" + /* (r8,r9) += p3 */ + "addq %q4, %%r8\n" + "adcq $0, %%r9\n" + /* Extract r3 */ + "movq %%r8, 24(%q6)\n" + /* Extract c */ + "movq %%r9, %q0\n" + : "=g"(c) + : "g"(p0), "g"(p1), "g"(p2), "g"(p3), "g"(p4), "D"(r), "n"(SECP256K1_N_C_0), "n"(SECP256K1_N_C_1) + : "rax", "rdx", "r8", "r9", "r10", "cc", "memory"); +#else + uint128_t c; + uint64_t c0, c1, c2; + uint64_t n0 = l[4], n1 = l[5], n2 = l[6], n3 = l[7]; + uint64_t m0, m1, m2, m3, m4, m5; + uint32_t m6; + uint64_t p0, p1, p2, p3; + uint32_t p4; + + /* Reduce 512 bits into 385. */ + /* m[0..6] = l[0..3] + n[0..3] * SECP256K1_N_C. */ + c0 = l[0]; c1 = 0; c2 = 0; + muladd_fast(n0, SECP256K1_N_C_0); + extract_fast(m0); + sumadd_fast(l[1]); + muladd(n1, SECP256K1_N_C_0); + muladd(n0, SECP256K1_N_C_1); + extract(m1); + sumadd(l[2]); + muladd(n2, SECP256K1_N_C_0); + muladd(n1, SECP256K1_N_C_1); + sumadd(n0); + extract(m2); + sumadd(l[3]); + muladd(n3, SECP256K1_N_C_0); + muladd(n2, SECP256K1_N_C_1); + sumadd(n1); + extract(m3); + muladd(n3, SECP256K1_N_C_1); + sumadd(n2); + extract(m4); + sumadd_fast(n3); + extract_fast(m5); + VERIFY_CHECK(c0 <= 1); + m6 = c0; + + /* Reduce 385 bits into 258. */ + /* p[0..4] = m[0..3] + m[4..6] * SECP256K1_N_C. */ + c0 = m0; c1 = 0; c2 = 0; + muladd_fast(m4, SECP256K1_N_C_0); + extract_fast(p0); + sumadd_fast(m1); + muladd(m5, SECP256K1_N_C_0); + muladd(m4, SECP256K1_N_C_1); + extract(p1); + sumadd(m2); + muladd(m6, SECP256K1_N_C_0); + muladd(m5, SECP256K1_N_C_1); + sumadd(m4); + extract(p2); + sumadd_fast(m3); + muladd_fast(m6, SECP256K1_N_C_1); + sumadd_fast(m5); + extract_fast(p3); + p4 = c0 + m6; + VERIFY_CHECK(p4 <= 2); + + /* Reduce 258 bits into 256. */ + /* r[0..3] = p[0..3] + p[4] * SECP256K1_N_C. */ + c = p0 + (uint128_t)SECP256K1_N_C_0 * p4; + r->d[0] = c & 0xFFFFFFFFFFFFFFFFULL; c >>= 64; + c += p1 + (uint128_t)SECP256K1_N_C_1 * p4; + r->d[1] = c & 0xFFFFFFFFFFFFFFFFULL; c >>= 64; + c += p2 + (uint128_t)p4; + r->d[2] = c & 0xFFFFFFFFFFFFFFFFULL; c >>= 64; + c += p3; + r->d[3] = c & 0xFFFFFFFFFFFFFFFFULL; c >>= 64; +#endif + + /* Final reduction of r. */ + secp256k1_scalar_reduce(r, c + secp256k1_scalar_check_overflow(r)); +} + +static void secp256k1_scalar_mul_512(uint64_t l[8], const secp256k1_scalar *a, const secp256k1_scalar *b) { +#ifdef USE_ASM_X86_64 + const uint64_t *pb = b->d; + __asm__ __volatile__( + /* Preload */ + "movq 0(%%rdi), %%r15\n" + "movq 8(%%rdi), %%rbx\n" + "movq 16(%%rdi), %%rcx\n" + "movq 0(%%rdx), %%r11\n" + "movq 8(%%rdx), %%r12\n" + "movq 16(%%rdx), %%r13\n" + "movq 24(%%rdx), %%r14\n" + /* (rax,rdx) = a0 * b0 */ + "movq %%r15, %%rax\n" + "mulq %%r11\n" + /* Extract l0 */ + "movq %%rax, 0(%%rsi)\n" + /* (r8,r9,r10) = (rdx) */ + "movq %%rdx, %%r8\n" + "xorq %%r9, %%r9\n" + "xorq %%r10, %%r10\n" + /* (r8,r9,r10) += a0 * b1 */ + "movq %%r15, %%rax\n" + "mulq %%r12\n" + "addq %%rax, %%r8\n" + "adcq %%rdx, %%r9\n" + "adcq $0, %%r10\n" + /* (r8,r9,r10) += a1 * b0 */ + "movq %%rbx, %%rax\n" + "mulq %%r11\n" + "addq %%rax, %%r8\n" + "adcq %%rdx, %%r9\n" + "adcq $0, %%r10\n" + /* Extract l1 */ + "movq %%r8, 8(%%rsi)\n" + "xorq %%r8, %%r8\n" + /* (r9,r10,r8) += a0 * b2 */ + "movq %%r15, %%rax\n" + "mulq %%r13\n" + "addq %%rax, %%r9\n" + "adcq %%rdx, %%r10\n" + "adcq $0, %%r8\n" + /* (r9,r10,r8) += a1 * b1 */ + "movq %%rbx, %%rax\n" + "mulq %%r12\n" + "addq %%rax, %%r9\n" + "adcq %%rdx, %%r10\n" + "adcq $0, %%r8\n" + /* (r9,r10,r8) += a2 * b0 */ + "movq %%rcx, %%rax\n" + "mulq %%r11\n" + "addq %%rax, %%r9\n" + "adcq %%rdx, %%r10\n" + "adcq $0, %%r8\n" + /* Extract l2 */ + "movq %%r9, 16(%%rsi)\n" + "xorq %%r9, %%r9\n" + /* (r10,r8,r9) += a0 * b3 */ + "movq %%r15, %%rax\n" + "mulq %%r14\n" + "addq %%rax, %%r10\n" + "adcq %%rdx, %%r8\n" + "adcq $0, %%r9\n" + /* Preload a3 */ + "movq 24(%%rdi), %%r15\n" + /* (r10,r8,r9) += a1 * b2 */ + "movq %%rbx, %%rax\n" + "mulq %%r13\n" + "addq %%rax, %%r10\n" + "adcq %%rdx, %%r8\n" + "adcq $0, %%r9\n" + /* (r10,r8,r9) += a2 * b1 */ + "movq %%rcx, %%rax\n" + "mulq %%r12\n" + "addq %%rax, %%r10\n" + "adcq %%rdx, %%r8\n" + "adcq $0, %%r9\n" + /* (r10,r8,r9) += a3 * b0 */ + "movq %%r15, %%rax\n" + "mulq %%r11\n" + "addq %%rax, %%r10\n" + "adcq %%rdx, %%r8\n" + "adcq $0, %%r9\n" + /* Extract l3 */ + "movq %%r10, 24(%%rsi)\n" + "xorq %%r10, %%r10\n" + /* (r8,r9,r10) += a1 * b3 */ + "movq %%rbx, %%rax\n" + "mulq %%r14\n" + "addq %%rax, %%r8\n" + "adcq %%rdx, %%r9\n" + "adcq $0, %%r10\n" + /* (r8,r9,r10) += a2 * b2 */ + "movq %%rcx, %%rax\n" + "mulq %%r13\n" + "addq %%rax, %%r8\n" + "adcq %%rdx, %%r9\n" + "adcq $0, %%r10\n" + /* (r8,r9,r10) += a3 * b1 */ + "movq %%r15, %%rax\n" + "mulq %%r12\n" + "addq %%rax, %%r8\n" + "adcq %%rdx, %%r9\n" + "adcq $0, %%r10\n" + /* Extract l4 */ + "movq %%r8, 32(%%rsi)\n" + "xorq %%r8, %%r8\n" + /* (r9,r10,r8) += a2 * b3 */ + "movq %%rcx, %%rax\n" + "mulq %%r14\n" + "addq %%rax, %%r9\n" + "adcq %%rdx, %%r10\n" + "adcq $0, %%r8\n" + /* (r9,r10,r8) += a3 * b2 */ + "movq %%r15, %%rax\n" + "mulq %%r13\n" + "addq %%rax, %%r9\n" + "adcq %%rdx, %%r10\n" + "adcq $0, %%r8\n" + /* Extract l5 */ + "movq %%r9, 40(%%rsi)\n" + /* (r10,r8) += a3 * b3 */ + "movq %%r15, %%rax\n" + "mulq %%r14\n" + "addq %%rax, %%r10\n" + "adcq %%rdx, %%r8\n" + /* Extract l6 */ + "movq %%r10, 48(%%rsi)\n" + /* Extract l7 */ + "movq %%r8, 56(%%rsi)\n" + : "+d"(pb) + : "S"(l), "D"(a->d) + : "rax", "rbx", "rcx", "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15", "cc", "memory"); +#else + /* 160 bit accumulator. */ + uint64_t c0 = 0, c1 = 0; + uint32_t c2 = 0; + + /* l[0..7] = a[0..3] * b[0..3]. */ + muladd_fast(a->d[0], b->d[0]); + extract_fast(l[0]); + muladd(a->d[0], b->d[1]); + muladd(a->d[1], b->d[0]); + extract(l[1]); + muladd(a->d[0], b->d[2]); + muladd(a->d[1], b->d[1]); + muladd(a->d[2], b->d[0]); + extract(l[2]); + muladd(a->d[0], b->d[3]); + muladd(a->d[1], b->d[2]); + muladd(a->d[2], b->d[1]); + muladd(a->d[3], b->d[0]); + extract(l[3]); + muladd(a->d[1], b->d[3]); + muladd(a->d[2], b->d[2]); + muladd(a->d[3], b->d[1]); + extract(l[4]); + muladd(a->d[2], b->d[3]); + muladd(a->d[3], b->d[2]); + extract(l[5]); + muladd_fast(a->d[3], b->d[3]); + extract_fast(l[6]); + VERIFY_CHECK(c1 == 0); + l[7] = c0; +#endif +} + +static void secp256k1_scalar_sqr_512(uint64_t l[8], const secp256k1_scalar *a) { +#ifdef USE_ASM_X86_64 + __asm__ __volatile__( + /* Preload */ + "movq 0(%%rdi), %%r11\n" + "movq 8(%%rdi), %%r12\n" + "movq 16(%%rdi), %%r13\n" + "movq 24(%%rdi), %%r14\n" + /* (rax,rdx) = a0 * a0 */ + "movq %%r11, %%rax\n" + "mulq %%r11\n" + /* Extract l0 */ + "movq %%rax, 0(%%rsi)\n" + /* (r8,r9,r10) = (rdx,0) */ + "movq %%rdx, %%r8\n" + "xorq %%r9, %%r9\n" + "xorq %%r10, %%r10\n" + /* (r8,r9,r10) += 2 * a0 * a1 */ + "movq %%r11, %%rax\n" + "mulq %%r12\n" + "addq %%rax, %%r8\n" + "adcq %%rdx, %%r9\n" + "adcq $0, %%r10\n" + "addq %%rax, %%r8\n" + "adcq %%rdx, %%r9\n" + "adcq $0, %%r10\n" + /* Extract l1 */ + "movq %%r8, 8(%%rsi)\n" + "xorq %%r8, %%r8\n" + /* (r9,r10,r8) += 2 * a0 * a2 */ + "movq %%r11, %%rax\n" + "mulq %%r13\n" + "addq %%rax, %%r9\n" + "adcq %%rdx, %%r10\n" + "adcq $0, %%r8\n" + "addq %%rax, %%r9\n" + "adcq %%rdx, %%r10\n" + "adcq $0, %%r8\n" + /* (r9,r10,r8) += a1 * a1 */ + "movq %%r12, %%rax\n" + "mulq %%r12\n" + "addq %%rax, %%r9\n" + "adcq %%rdx, %%r10\n" + "adcq $0, %%r8\n" + /* Extract l2 */ + "movq %%r9, 16(%%rsi)\n" + "xorq %%r9, %%r9\n" + /* (r10,r8,r9) += 2 * a0 * a3 */ + "movq %%r11, %%rax\n" + "mulq %%r14\n" + "addq %%rax, %%r10\n" + "adcq %%rdx, %%r8\n" + "adcq $0, %%r9\n" + "addq %%rax, %%r10\n" + "adcq %%rdx, %%r8\n" + "adcq $0, %%r9\n" + /* (r10,r8,r9) += 2 * a1 * a2 */ + "movq %%r12, %%rax\n" + "mulq %%r13\n" + "addq %%rax, %%r10\n" + "adcq %%rdx, %%r8\n" + "adcq $0, %%r9\n" + "addq %%rax, %%r10\n" + "adcq %%rdx, %%r8\n" + "adcq $0, %%r9\n" + /* Extract l3 */ + "movq %%r10, 24(%%rsi)\n" + "xorq %%r10, %%r10\n" + /* (r8,r9,r10) += 2 * a1 * a3 */ + "movq %%r12, %%rax\n" + "mulq %%r14\n" + "addq %%rax, %%r8\n" + "adcq %%rdx, %%r9\n" + "adcq $0, %%r10\n" + "addq %%rax, %%r8\n" + "adcq %%rdx, %%r9\n" + "adcq $0, %%r10\n" + /* (r8,r9,r10) += a2 * a2 */ + "movq %%r13, %%rax\n" + "mulq %%r13\n" + "addq %%rax, %%r8\n" + "adcq %%rdx, %%r9\n" + "adcq $0, %%r10\n" + /* Extract l4 */ + "movq %%r8, 32(%%rsi)\n" + "xorq %%r8, %%r8\n" + /* (r9,r10,r8) += 2 * a2 * a3 */ + "movq %%r13, %%rax\n" + "mulq %%r14\n" + "addq %%rax, %%r9\n" + "adcq %%rdx, %%r10\n" + "adcq $0, %%r8\n" + "addq %%rax, %%r9\n" + "adcq %%rdx, %%r10\n" + "adcq $0, %%r8\n" + /* Extract l5 */ + "movq %%r9, 40(%%rsi)\n" + /* (r10,r8) += a3 * a3 */ + "movq %%r14, %%rax\n" + "mulq %%r14\n" + "addq %%rax, %%r10\n" + "adcq %%rdx, %%r8\n" + /* Extract l6 */ + "movq %%r10, 48(%%rsi)\n" + /* Extract l7 */ + "movq %%r8, 56(%%rsi)\n" + : + : "S"(l), "D"(a->d) + : "rax", "rdx", "r8", "r9", "r10", "r11", "r12", "r13", "r14", "cc", "memory"); +#else + /* 160 bit accumulator. */ + uint64_t c0 = 0, c1 = 0; + uint32_t c2 = 0; + + /* l[0..7] = a[0..3] * b[0..3]. */ + muladd_fast(a->d[0], a->d[0]); + extract_fast(l[0]); + muladd2(a->d[0], a->d[1]); + extract(l[1]); + muladd2(a->d[0], a->d[2]); + muladd(a->d[1], a->d[1]); + extract(l[2]); + muladd2(a->d[0], a->d[3]); + muladd2(a->d[1], a->d[2]); + extract(l[3]); + muladd2(a->d[1], a->d[3]); + muladd(a->d[2], a->d[2]); + extract(l[4]); + muladd2(a->d[2], a->d[3]); + extract(l[5]); + muladd_fast(a->d[3], a->d[3]); + extract_fast(l[6]); + VERIFY_CHECK(c1 == 0); + l[7] = c0; +#endif +} + +#undef sumadd +#undef sumadd_fast +#undef muladd +#undef muladd_fast +#undef muladd2 +#undef extract +#undef extract_fast + +static void secp256k1_scalar_mul(secp256k1_scalar *r, const secp256k1_scalar *a, const secp256k1_scalar *b) { + uint64_t l[8]; + secp256k1_scalar_mul_512(l, a, b); + secp256k1_scalar_reduce_512(r, l); +} + +static int secp256k1_scalar_shr_int(secp256k1_scalar *r, int n) { + int ret; + VERIFY_CHECK(n > 0); + VERIFY_CHECK(n < 16); + ret = r->d[0] & ((1 << n) - 1); + r->d[0] = (r->d[0] >> n) + (r->d[1] << (64 - n)); + r->d[1] = (r->d[1] >> n) + (r->d[2] << (64 - n)); + r->d[2] = (r->d[2] >> n) + (r->d[3] << (64 - n)); + r->d[3] = (r->d[3] >> n); + return ret; +} + +static void secp256k1_scalar_sqr(secp256k1_scalar *r, const secp256k1_scalar *a) { + uint64_t l[8]; + secp256k1_scalar_sqr_512(l, a); + secp256k1_scalar_reduce_512(r, l); +} + +#ifdef USE_ENDOMORPHISM +static void secp256k1_scalar_split_128(secp256k1_scalar *r1, secp256k1_scalar *r2, const secp256k1_scalar *a) { + r1->d[0] = a->d[0]; + r1->d[1] = a->d[1]; + r1->d[2] = 0; + r1->d[3] = 0; + r2->d[0] = a->d[2]; + r2->d[1] = a->d[3]; + r2->d[2] = 0; + r2->d[3] = 0; +} +#endif + +SECP256K1_INLINE static int secp256k1_scalar_eq(const secp256k1_scalar *a, const secp256k1_scalar *b) { + return ((a->d[0] ^ b->d[0]) | (a->d[1] ^ b->d[1]) | (a->d[2] ^ b->d[2]) | (a->d[3] ^ b->d[3])) == 0; +} + +SECP256K1_INLINE static void secp256k1_scalar_mul_shift_var(secp256k1_scalar *r, const secp256k1_scalar *a, const secp256k1_scalar *b, unsigned int shift) { + uint64_t l[8]; + unsigned int shiftlimbs; + unsigned int shiftlow; + unsigned int shifthigh; + VERIFY_CHECK(shift >= 256); + secp256k1_scalar_mul_512(l, a, b); + shiftlimbs = shift >> 6; + shiftlow = shift & 0x3F; + shifthigh = 64 - shiftlow; + r->d[0] = shift < 512 ? (l[0 + shiftlimbs] >> shiftlow | (shift < 448 && shiftlow ? (l[1 + shiftlimbs] << shifthigh) : 0)) : 0; + r->d[1] = shift < 448 ? (l[1 + shiftlimbs] >> shiftlow | (shift < 384 && shiftlow ? (l[2 + shiftlimbs] << shifthigh) : 0)) : 0; + r->d[2] = shift < 384 ? (l[2 + shiftlimbs] >> shiftlow | (shift < 320 && shiftlow ? (l[3 + shiftlimbs] << shifthigh) : 0)) : 0; + r->d[3] = shift < 320 ? (l[3 + shiftlimbs] >> shiftlow) : 0; + secp256k1_scalar_cadd_bit(r, 0, (l[(shift - 1) >> 6] >> ((shift - 1) & 0x3f)) & 1); +} + +#endif /* SECP256K1_SCALAR_REPR_IMPL_H */ diff --git a/Pods/secp256k1_ios/secp256k1_ios/src/scalar_8x32.h b/Pods/secp256k1_ios/secp256k1_ios/src/scalar_8x32.h new file mode 100644 index 00000000..2c9a348e --- /dev/null +++ b/Pods/secp256k1_ios/secp256k1_ios/src/scalar_8x32.h @@ -0,0 +1,19 @@ +/********************************************************************** + * Copyright (c) 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef SECP256K1_SCALAR_REPR_H +#define SECP256K1_SCALAR_REPR_H + +#include + +/** A scalar modulo the group order of the secp256k1 curve. */ +typedef struct { + uint32_t d[8]; +} secp256k1_scalar; + +#define SECP256K1_SCALAR_CONST(d7, d6, d5, d4, d3, d2, d1, d0) {{(d0), (d1), (d2), (d3), (d4), (d5), (d6), (d7)}} + +#endif /* SECP256K1_SCALAR_REPR_H */ diff --git a/Pods/secp256k1_ios/secp256k1_ios/src/scalar_8x32_impl.h b/Pods/secp256k1_ios/secp256k1_ios/src/scalar_8x32_impl.h new file mode 100644 index 00000000..4f9ed61f --- /dev/null +++ b/Pods/secp256k1_ios/secp256k1_ios/src/scalar_8x32_impl.h @@ -0,0 +1,721 @@ +/********************************************************************** + * Copyright (c) 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef SECP256K1_SCALAR_REPR_IMPL_H +#define SECP256K1_SCALAR_REPR_IMPL_H + +/* Limbs of the secp256k1 order. */ +#define SECP256K1_N_0 ((uint32_t)0xD0364141UL) +#define SECP256K1_N_1 ((uint32_t)0xBFD25E8CUL) +#define SECP256K1_N_2 ((uint32_t)0xAF48A03BUL) +#define SECP256K1_N_3 ((uint32_t)0xBAAEDCE6UL) +#define SECP256K1_N_4 ((uint32_t)0xFFFFFFFEUL) +#define SECP256K1_N_5 ((uint32_t)0xFFFFFFFFUL) +#define SECP256K1_N_6 ((uint32_t)0xFFFFFFFFUL) +#define SECP256K1_N_7 ((uint32_t)0xFFFFFFFFUL) + +/* Limbs of 2^256 minus the secp256k1 order. */ +#define SECP256K1_N_C_0 (~SECP256K1_N_0 + 1) +#define SECP256K1_N_C_1 (~SECP256K1_N_1) +#define SECP256K1_N_C_2 (~SECP256K1_N_2) +#define SECP256K1_N_C_3 (~SECP256K1_N_3) +#define SECP256K1_N_C_4 (1) + +/* Limbs of half the secp256k1 order. */ +#define SECP256K1_N_H_0 ((uint32_t)0x681B20A0UL) +#define SECP256K1_N_H_1 ((uint32_t)0xDFE92F46UL) +#define SECP256K1_N_H_2 ((uint32_t)0x57A4501DUL) +#define SECP256K1_N_H_3 ((uint32_t)0x5D576E73UL) +#define SECP256K1_N_H_4 ((uint32_t)0xFFFFFFFFUL) +#define SECP256K1_N_H_5 ((uint32_t)0xFFFFFFFFUL) +#define SECP256K1_N_H_6 ((uint32_t)0xFFFFFFFFUL) +#define SECP256K1_N_H_7 ((uint32_t)0x7FFFFFFFUL) + +SECP256K1_INLINE static void secp256k1_scalar_clear(secp256k1_scalar *r) { + r->d[0] = 0; + r->d[1] = 0; + r->d[2] = 0; + r->d[3] = 0; + r->d[4] = 0; + r->d[5] = 0; + r->d[6] = 0; + r->d[7] = 0; +} + +SECP256K1_INLINE static void secp256k1_scalar_set_int(secp256k1_scalar *r, unsigned int v) { + r->d[0] = v; + r->d[1] = 0; + r->d[2] = 0; + r->d[3] = 0; + r->d[4] = 0; + r->d[5] = 0; + r->d[6] = 0; + r->d[7] = 0; +} + +SECP256K1_INLINE static unsigned int secp256k1_scalar_get_bits(const secp256k1_scalar *a, unsigned int offset, unsigned int count) { + VERIFY_CHECK((offset + count - 1) >> 5 == offset >> 5); + return (a->d[offset >> 5] >> (offset & 0x1F)) & ((1 << count) - 1); +} + +SECP256K1_INLINE static unsigned int secp256k1_scalar_get_bits_var(const secp256k1_scalar *a, unsigned int offset, unsigned int count) { + VERIFY_CHECK(count < 32); + VERIFY_CHECK(offset + count <= 256); + if ((offset + count - 1) >> 5 == offset >> 5) { + return secp256k1_scalar_get_bits(a, offset, count); + } else { + VERIFY_CHECK((offset >> 5) + 1 < 8); + return ((a->d[offset >> 5] >> (offset & 0x1F)) | (a->d[(offset >> 5) + 1] << (32 - (offset & 0x1F)))) & ((((uint32_t)1) << count) - 1); + } +} + +SECP256K1_INLINE static int secp256k1_scalar_check_overflow(const secp256k1_scalar *a) { + int yes = 0; + int no = 0; + no |= (a->d[7] < SECP256K1_N_7); /* No need for a > check. */ + no |= (a->d[6] < SECP256K1_N_6); /* No need for a > check. */ + no |= (a->d[5] < SECP256K1_N_5); /* No need for a > check. */ + no |= (a->d[4] < SECP256K1_N_4); + yes |= (a->d[4] > SECP256K1_N_4) & ~no; + no |= (a->d[3] < SECP256K1_N_3) & ~yes; + yes |= (a->d[3] > SECP256K1_N_3) & ~no; + no |= (a->d[2] < SECP256K1_N_2) & ~yes; + yes |= (a->d[2] > SECP256K1_N_2) & ~no; + no |= (a->d[1] < SECP256K1_N_1) & ~yes; + yes |= (a->d[1] > SECP256K1_N_1) & ~no; + yes |= (a->d[0] >= SECP256K1_N_0) & ~no; + return yes; +} + +SECP256K1_INLINE static int secp256k1_scalar_reduce(secp256k1_scalar *r, uint32_t overflow) { + uint64_t t; + VERIFY_CHECK(overflow <= 1); + t = (uint64_t)r->d[0] + overflow * SECP256K1_N_C_0; + r->d[0] = t & 0xFFFFFFFFUL; t >>= 32; + t += (uint64_t)r->d[1] + overflow * SECP256K1_N_C_1; + r->d[1] = t & 0xFFFFFFFFUL; t >>= 32; + t += (uint64_t)r->d[2] + overflow * SECP256K1_N_C_2; + r->d[2] = t & 0xFFFFFFFFUL; t >>= 32; + t += (uint64_t)r->d[3] + overflow * SECP256K1_N_C_3; + r->d[3] = t & 0xFFFFFFFFUL; t >>= 32; + t += (uint64_t)r->d[4] + overflow * SECP256K1_N_C_4; + r->d[4] = t & 0xFFFFFFFFUL; t >>= 32; + t += (uint64_t)r->d[5]; + r->d[5] = t & 0xFFFFFFFFUL; t >>= 32; + t += (uint64_t)r->d[6]; + r->d[6] = t & 0xFFFFFFFFUL; t >>= 32; + t += (uint64_t)r->d[7]; + r->d[7] = t & 0xFFFFFFFFUL; + return overflow; +} + +static int secp256k1_scalar_add(secp256k1_scalar *r, const secp256k1_scalar *a, const secp256k1_scalar *b) { + int overflow; + uint64_t t = (uint64_t)a->d[0] + b->d[0]; + r->d[0] = t & 0xFFFFFFFFULL; t >>= 32; + t += (uint64_t)a->d[1] + b->d[1]; + r->d[1] = t & 0xFFFFFFFFULL; t >>= 32; + t += (uint64_t)a->d[2] + b->d[2]; + r->d[2] = t & 0xFFFFFFFFULL; t >>= 32; + t += (uint64_t)a->d[3] + b->d[3]; + r->d[3] = t & 0xFFFFFFFFULL; t >>= 32; + t += (uint64_t)a->d[4] + b->d[4]; + r->d[4] = t & 0xFFFFFFFFULL; t >>= 32; + t += (uint64_t)a->d[5] + b->d[5]; + r->d[5] = t & 0xFFFFFFFFULL; t >>= 32; + t += (uint64_t)a->d[6] + b->d[6]; + r->d[6] = t & 0xFFFFFFFFULL; t >>= 32; + t += (uint64_t)a->d[7] + b->d[7]; + r->d[7] = t & 0xFFFFFFFFULL; t >>= 32; + overflow = t + secp256k1_scalar_check_overflow(r); + VERIFY_CHECK(overflow == 0 || overflow == 1); + secp256k1_scalar_reduce(r, overflow); + return overflow; +} + +static void secp256k1_scalar_cadd_bit(secp256k1_scalar *r, unsigned int bit, int flag) { + uint64_t t; + VERIFY_CHECK(bit < 256); + bit += ((uint32_t) flag - 1) & 0x100; /* forcing (bit >> 5) > 7 makes this a noop */ + t = (uint64_t)r->d[0] + (((uint32_t)((bit >> 5) == 0)) << (bit & 0x1F)); + r->d[0] = t & 0xFFFFFFFFULL; t >>= 32; + t += (uint64_t)r->d[1] + (((uint32_t)((bit >> 5) == 1)) << (bit & 0x1F)); + r->d[1] = t & 0xFFFFFFFFULL; t >>= 32; + t += (uint64_t)r->d[2] + (((uint32_t)((bit >> 5) == 2)) << (bit & 0x1F)); + r->d[2] = t & 0xFFFFFFFFULL; t >>= 32; + t += (uint64_t)r->d[3] + (((uint32_t)((bit >> 5) == 3)) << (bit & 0x1F)); + r->d[3] = t & 0xFFFFFFFFULL; t >>= 32; + t += (uint64_t)r->d[4] + (((uint32_t)((bit >> 5) == 4)) << (bit & 0x1F)); + r->d[4] = t & 0xFFFFFFFFULL; t >>= 32; + t += (uint64_t)r->d[5] + (((uint32_t)((bit >> 5) == 5)) << (bit & 0x1F)); + r->d[5] = t & 0xFFFFFFFFULL; t >>= 32; + t += (uint64_t)r->d[6] + (((uint32_t)((bit >> 5) == 6)) << (bit & 0x1F)); + r->d[6] = t & 0xFFFFFFFFULL; t >>= 32; + t += (uint64_t)r->d[7] + (((uint32_t)((bit >> 5) == 7)) << (bit & 0x1F)); + r->d[7] = t & 0xFFFFFFFFULL; +#ifdef VERIFY + VERIFY_CHECK((t >> 32) == 0); + VERIFY_CHECK(secp256k1_scalar_check_overflow(r) == 0); +#endif +} + +static void secp256k1_scalar_set_b32(secp256k1_scalar *r, const unsigned char *b32, int *overflow) { + int over; + r->d[0] = (uint32_t)b32[31] | (uint32_t)b32[30] << 8 | (uint32_t)b32[29] << 16 | (uint32_t)b32[28] << 24; + r->d[1] = (uint32_t)b32[27] | (uint32_t)b32[26] << 8 | (uint32_t)b32[25] << 16 | (uint32_t)b32[24] << 24; + r->d[2] = (uint32_t)b32[23] | (uint32_t)b32[22] << 8 | (uint32_t)b32[21] << 16 | (uint32_t)b32[20] << 24; + r->d[3] = (uint32_t)b32[19] | (uint32_t)b32[18] << 8 | (uint32_t)b32[17] << 16 | (uint32_t)b32[16] << 24; + r->d[4] = (uint32_t)b32[15] | (uint32_t)b32[14] << 8 | (uint32_t)b32[13] << 16 | (uint32_t)b32[12] << 24; + r->d[5] = (uint32_t)b32[11] | (uint32_t)b32[10] << 8 | (uint32_t)b32[9] << 16 | (uint32_t)b32[8] << 24; + r->d[6] = (uint32_t)b32[7] | (uint32_t)b32[6] << 8 | (uint32_t)b32[5] << 16 | (uint32_t)b32[4] << 24; + r->d[7] = (uint32_t)b32[3] | (uint32_t)b32[2] << 8 | (uint32_t)b32[1] << 16 | (uint32_t)b32[0] << 24; + over = secp256k1_scalar_reduce(r, secp256k1_scalar_check_overflow(r)); + if (overflow) { + *overflow = over; + } +} + +static void secp256k1_scalar_get_b32(unsigned char *bin, const secp256k1_scalar* a) { + bin[0] = a->d[7] >> 24; bin[1] = a->d[7] >> 16; bin[2] = a->d[7] >> 8; bin[3] = a->d[7]; + bin[4] = a->d[6] >> 24; bin[5] = a->d[6] >> 16; bin[6] = a->d[6] >> 8; bin[7] = a->d[6]; + bin[8] = a->d[5] >> 24; bin[9] = a->d[5] >> 16; bin[10] = a->d[5] >> 8; bin[11] = a->d[5]; + bin[12] = a->d[4] >> 24; bin[13] = a->d[4] >> 16; bin[14] = a->d[4] >> 8; bin[15] = a->d[4]; + bin[16] = a->d[3] >> 24; bin[17] = a->d[3] >> 16; bin[18] = a->d[3] >> 8; bin[19] = a->d[3]; + bin[20] = a->d[2] >> 24; bin[21] = a->d[2] >> 16; bin[22] = a->d[2] >> 8; bin[23] = a->d[2]; + bin[24] = a->d[1] >> 24; bin[25] = a->d[1] >> 16; bin[26] = a->d[1] >> 8; bin[27] = a->d[1]; + bin[28] = a->d[0] >> 24; bin[29] = a->d[0] >> 16; bin[30] = a->d[0] >> 8; bin[31] = a->d[0]; +} + +SECP256K1_INLINE static int secp256k1_scalar_is_zero(const secp256k1_scalar *a) { + return (a->d[0] | a->d[1] | a->d[2] | a->d[3] | a->d[4] | a->d[5] | a->d[6] | a->d[7]) == 0; +} + +static void secp256k1_scalar_negate(secp256k1_scalar *r, const secp256k1_scalar *a) { + uint32_t nonzero = 0xFFFFFFFFUL * (secp256k1_scalar_is_zero(a) == 0); + uint64_t t = (uint64_t)(~a->d[0]) + SECP256K1_N_0 + 1; + r->d[0] = t & nonzero; t >>= 32; + t += (uint64_t)(~a->d[1]) + SECP256K1_N_1; + r->d[1] = t & nonzero; t >>= 32; + t += (uint64_t)(~a->d[2]) + SECP256K1_N_2; + r->d[2] = t & nonzero; t >>= 32; + t += (uint64_t)(~a->d[3]) + SECP256K1_N_3; + r->d[3] = t & nonzero; t >>= 32; + t += (uint64_t)(~a->d[4]) + SECP256K1_N_4; + r->d[4] = t & nonzero; t >>= 32; + t += (uint64_t)(~a->d[5]) + SECP256K1_N_5; + r->d[5] = t & nonzero; t >>= 32; + t += (uint64_t)(~a->d[6]) + SECP256K1_N_6; + r->d[6] = t & nonzero; t >>= 32; + t += (uint64_t)(~a->d[7]) + SECP256K1_N_7; + r->d[7] = t & nonzero; +} + +SECP256K1_INLINE static int secp256k1_scalar_is_one(const secp256k1_scalar *a) { + return ((a->d[0] ^ 1) | a->d[1] | a->d[2] | a->d[3] | a->d[4] | a->d[5] | a->d[6] | a->d[7]) == 0; +} + +static int secp256k1_scalar_is_high(const secp256k1_scalar *a) { + int yes = 0; + int no = 0; + no |= (a->d[7] < SECP256K1_N_H_7); + yes |= (a->d[7] > SECP256K1_N_H_7) & ~no; + no |= (a->d[6] < SECP256K1_N_H_6) & ~yes; /* No need for a > check. */ + no |= (a->d[5] < SECP256K1_N_H_5) & ~yes; /* No need for a > check. */ + no |= (a->d[4] < SECP256K1_N_H_4) & ~yes; /* No need for a > check. */ + no |= (a->d[3] < SECP256K1_N_H_3) & ~yes; + yes |= (a->d[3] > SECP256K1_N_H_3) & ~no; + no |= (a->d[2] < SECP256K1_N_H_2) & ~yes; + yes |= (a->d[2] > SECP256K1_N_H_2) & ~no; + no |= (a->d[1] < SECP256K1_N_H_1) & ~yes; + yes |= (a->d[1] > SECP256K1_N_H_1) & ~no; + yes |= (a->d[0] > SECP256K1_N_H_0) & ~no; + return yes; +} + +static int secp256k1_scalar_cond_negate(secp256k1_scalar *r, int flag) { + /* If we are flag = 0, mask = 00...00 and this is a no-op; + * if we are flag = 1, mask = 11...11 and this is identical to secp256k1_scalar_negate */ + uint32_t mask = !flag - 1; + uint32_t nonzero = 0xFFFFFFFFUL * (secp256k1_scalar_is_zero(r) == 0); + uint64_t t = (uint64_t)(r->d[0] ^ mask) + ((SECP256K1_N_0 + 1) & mask); + r->d[0] = t & nonzero; t >>= 32; + t += (uint64_t)(r->d[1] ^ mask) + (SECP256K1_N_1 & mask); + r->d[1] = t & nonzero; t >>= 32; + t += (uint64_t)(r->d[2] ^ mask) + (SECP256K1_N_2 & mask); + r->d[2] = t & nonzero; t >>= 32; + t += (uint64_t)(r->d[3] ^ mask) + (SECP256K1_N_3 & mask); + r->d[3] = t & nonzero; t >>= 32; + t += (uint64_t)(r->d[4] ^ mask) + (SECP256K1_N_4 & mask); + r->d[4] = t & nonzero; t >>= 32; + t += (uint64_t)(r->d[5] ^ mask) + (SECP256K1_N_5 & mask); + r->d[5] = t & nonzero; t >>= 32; + t += (uint64_t)(r->d[6] ^ mask) + (SECP256K1_N_6 & mask); + r->d[6] = t & nonzero; t >>= 32; + t += (uint64_t)(r->d[7] ^ mask) + (SECP256K1_N_7 & mask); + r->d[7] = t & nonzero; + return 2 * (mask == 0) - 1; +} + + +/* Inspired by the macros in OpenSSL's crypto/bn/asm/x86_64-gcc.c. */ + +/** Add a*b to the number defined by (c0,c1,c2). c2 must never overflow. */ +#define muladd(a,b) { \ + uint32_t tl, th; \ + { \ + uint64_t t = (uint64_t)a * b; \ + th = t >> 32; /* at most 0xFFFFFFFE */ \ + tl = t; \ + } \ + c0 += tl; /* overflow is handled on the next line */ \ + th += (c0 < tl) ? 1 : 0; /* at most 0xFFFFFFFF */ \ + c1 += th; /* overflow is handled on the next line */ \ + c2 += (c1 < th) ? 1 : 0; /* never overflows by contract (verified in the next line) */ \ + VERIFY_CHECK((c1 >= th) || (c2 != 0)); \ +} + +/** Add a*b to the number defined by (c0,c1). c1 must never overflow. */ +#define muladd_fast(a,b) { \ + uint32_t tl, th; \ + { \ + uint64_t t = (uint64_t)a * b; \ + th = t >> 32; /* at most 0xFFFFFFFE */ \ + tl = t; \ + } \ + c0 += tl; /* overflow is handled on the next line */ \ + th += (c0 < tl) ? 1 : 0; /* at most 0xFFFFFFFF */ \ + c1 += th; /* never overflows by contract (verified in the next line) */ \ + VERIFY_CHECK(c1 >= th); \ +} + +/** Add 2*a*b to the number defined by (c0,c1,c2). c2 must never overflow. */ +#define muladd2(a,b) { \ + uint32_t tl, th, th2, tl2; \ + { \ + uint64_t t = (uint64_t)a * b; \ + th = t >> 32; /* at most 0xFFFFFFFE */ \ + tl = t; \ + } \ + th2 = th + th; /* at most 0xFFFFFFFE (in case th was 0x7FFFFFFF) */ \ + c2 += (th2 < th) ? 1 : 0; /* never overflows by contract (verified the next line) */ \ + VERIFY_CHECK((th2 >= th) || (c2 != 0)); \ + tl2 = tl + tl; /* at most 0xFFFFFFFE (in case the lowest 63 bits of tl were 0x7FFFFFFF) */ \ + th2 += (tl2 < tl) ? 1 : 0; /* at most 0xFFFFFFFF */ \ + c0 += tl2; /* overflow is handled on the next line */ \ + th2 += (c0 < tl2) ? 1 : 0; /* second overflow is handled on the next line */ \ + c2 += (c0 < tl2) & (th2 == 0); /* never overflows by contract (verified the next line) */ \ + VERIFY_CHECK((c0 >= tl2) || (th2 != 0) || (c2 != 0)); \ + c1 += th2; /* overflow is handled on the next line */ \ + c2 += (c1 < th2) ? 1 : 0; /* never overflows by contract (verified the next line) */ \ + VERIFY_CHECK((c1 >= th2) || (c2 != 0)); \ +} + +/** Add a to the number defined by (c0,c1,c2). c2 must never overflow. */ +#define sumadd(a) { \ + unsigned int over; \ + c0 += (a); /* overflow is handled on the next line */ \ + over = (c0 < (a)) ? 1 : 0; \ + c1 += over; /* overflow is handled on the next line */ \ + c2 += (c1 < over) ? 1 : 0; /* never overflows by contract */ \ +} + +/** Add a to the number defined by (c0,c1). c1 must never overflow, c2 must be zero. */ +#define sumadd_fast(a) { \ + c0 += (a); /* overflow is handled on the next line */ \ + c1 += (c0 < (a)) ? 1 : 0; /* never overflows by contract (verified the next line) */ \ + VERIFY_CHECK((c1 != 0) | (c0 >= (a))); \ + VERIFY_CHECK(c2 == 0); \ +} + +/** Extract the lowest 32 bits of (c0,c1,c2) into n, and left shift the number 32 bits. */ +#define extract(n) { \ + (n) = c0; \ + c0 = c1; \ + c1 = c2; \ + c2 = 0; \ +} + +/** Extract the lowest 32 bits of (c0,c1,c2) into n, and left shift the number 32 bits. c2 is required to be zero. */ +#define extract_fast(n) { \ + (n) = c0; \ + c0 = c1; \ + c1 = 0; \ + VERIFY_CHECK(c2 == 0); \ +} + +static void secp256k1_scalar_reduce_512(secp256k1_scalar *r, const uint32_t *l) { + uint64_t c; + uint32_t n0 = l[8], n1 = l[9], n2 = l[10], n3 = l[11], n4 = l[12], n5 = l[13], n6 = l[14], n7 = l[15]; + uint32_t m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12; + uint32_t p0, p1, p2, p3, p4, p5, p6, p7, p8; + + /* 96 bit accumulator. */ + uint32_t c0, c1, c2; + + /* Reduce 512 bits into 385. */ + /* m[0..12] = l[0..7] + n[0..7] * SECP256K1_N_C. */ + c0 = l[0]; c1 = 0; c2 = 0; + muladd_fast(n0, SECP256K1_N_C_0); + extract_fast(m0); + sumadd_fast(l[1]); + muladd(n1, SECP256K1_N_C_0); + muladd(n0, SECP256K1_N_C_1); + extract(m1); + sumadd(l[2]); + muladd(n2, SECP256K1_N_C_0); + muladd(n1, SECP256K1_N_C_1); + muladd(n0, SECP256K1_N_C_2); + extract(m2); + sumadd(l[3]); + muladd(n3, SECP256K1_N_C_0); + muladd(n2, SECP256K1_N_C_1); + muladd(n1, SECP256K1_N_C_2); + muladd(n0, SECP256K1_N_C_3); + extract(m3); + sumadd(l[4]); + muladd(n4, SECP256K1_N_C_0); + muladd(n3, SECP256K1_N_C_1); + muladd(n2, SECP256K1_N_C_2); + muladd(n1, SECP256K1_N_C_3); + sumadd(n0); + extract(m4); + sumadd(l[5]); + muladd(n5, SECP256K1_N_C_0); + muladd(n4, SECP256K1_N_C_1); + muladd(n3, SECP256K1_N_C_2); + muladd(n2, SECP256K1_N_C_3); + sumadd(n1); + extract(m5); + sumadd(l[6]); + muladd(n6, SECP256K1_N_C_0); + muladd(n5, SECP256K1_N_C_1); + muladd(n4, SECP256K1_N_C_2); + muladd(n3, SECP256K1_N_C_3); + sumadd(n2); + extract(m6); + sumadd(l[7]); + muladd(n7, SECP256K1_N_C_0); + muladd(n6, SECP256K1_N_C_1); + muladd(n5, SECP256K1_N_C_2); + muladd(n4, SECP256K1_N_C_3); + sumadd(n3); + extract(m7); + muladd(n7, SECP256K1_N_C_1); + muladd(n6, SECP256K1_N_C_2); + muladd(n5, SECP256K1_N_C_3); + sumadd(n4); + extract(m8); + muladd(n7, SECP256K1_N_C_2); + muladd(n6, SECP256K1_N_C_3); + sumadd(n5); + extract(m9); + muladd(n7, SECP256K1_N_C_3); + sumadd(n6); + extract(m10); + sumadd_fast(n7); + extract_fast(m11); + VERIFY_CHECK(c0 <= 1); + m12 = c0; + + /* Reduce 385 bits into 258. */ + /* p[0..8] = m[0..7] + m[8..12] * SECP256K1_N_C. */ + c0 = m0; c1 = 0; c2 = 0; + muladd_fast(m8, SECP256K1_N_C_0); + extract_fast(p0); + sumadd_fast(m1); + muladd(m9, SECP256K1_N_C_0); + muladd(m8, SECP256K1_N_C_1); + extract(p1); + sumadd(m2); + muladd(m10, SECP256K1_N_C_0); + muladd(m9, SECP256K1_N_C_1); + muladd(m8, SECP256K1_N_C_2); + extract(p2); + sumadd(m3); + muladd(m11, SECP256K1_N_C_0); + muladd(m10, SECP256K1_N_C_1); + muladd(m9, SECP256K1_N_C_2); + muladd(m8, SECP256K1_N_C_3); + extract(p3); + sumadd(m4); + muladd(m12, SECP256K1_N_C_0); + muladd(m11, SECP256K1_N_C_1); + muladd(m10, SECP256K1_N_C_2); + muladd(m9, SECP256K1_N_C_3); + sumadd(m8); + extract(p4); + sumadd(m5); + muladd(m12, SECP256K1_N_C_1); + muladd(m11, SECP256K1_N_C_2); + muladd(m10, SECP256K1_N_C_3); + sumadd(m9); + extract(p5); + sumadd(m6); + muladd(m12, SECP256K1_N_C_2); + muladd(m11, SECP256K1_N_C_3); + sumadd(m10); + extract(p6); + sumadd_fast(m7); + muladd_fast(m12, SECP256K1_N_C_3); + sumadd_fast(m11); + extract_fast(p7); + p8 = c0 + m12; + VERIFY_CHECK(p8 <= 2); + + /* Reduce 258 bits into 256. */ + /* r[0..7] = p[0..7] + p[8] * SECP256K1_N_C. */ + c = p0 + (uint64_t)SECP256K1_N_C_0 * p8; + r->d[0] = c & 0xFFFFFFFFUL; c >>= 32; + c += p1 + (uint64_t)SECP256K1_N_C_1 * p8; + r->d[1] = c & 0xFFFFFFFFUL; c >>= 32; + c += p2 + (uint64_t)SECP256K1_N_C_2 * p8; + r->d[2] = c & 0xFFFFFFFFUL; c >>= 32; + c += p3 + (uint64_t)SECP256K1_N_C_3 * p8; + r->d[3] = c & 0xFFFFFFFFUL; c >>= 32; + c += p4 + (uint64_t)p8; + r->d[4] = c & 0xFFFFFFFFUL; c >>= 32; + c += p5; + r->d[5] = c & 0xFFFFFFFFUL; c >>= 32; + c += p6; + r->d[6] = c & 0xFFFFFFFFUL; c >>= 32; + c += p7; + r->d[7] = c & 0xFFFFFFFFUL; c >>= 32; + + /* Final reduction of r. */ + secp256k1_scalar_reduce(r, c + secp256k1_scalar_check_overflow(r)); +} + +static void secp256k1_scalar_mul_512(uint32_t *l, const secp256k1_scalar *a, const secp256k1_scalar *b) { + /* 96 bit accumulator. */ + uint32_t c0 = 0, c1 = 0, c2 = 0; + + /* l[0..15] = a[0..7] * b[0..7]. */ + muladd_fast(a->d[0], b->d[0]); + extract_fast(l[0]); + muladd(a->d[0], b->d[1]); + muladd(a->d[1], b->d[0]); + extract(l[1]); + muladd(a->d[0], b->d[2]); + muladd(a->d[1], b->d[1]); + muladd(a->d[2], b->d[0]); + extract(l[2]); + muladd(a->d[0], b->d[3]); + muladd(a->d[1], b->d[2]); + muladd(a->d[2], b->d[1]); + muladd(a->d[3], b->d[0]); + extract(l[3]); + muladd(a->d[0], b->d[4]); + muladd(a->d[1], b->d[3]); + muladd(a->d[2], b->d[2]); + muladd(a->d[3], b->d[1]); + muladd(a->d[4], b->d[0]); + extract(l[4]); + muladd(a->d[0], b->d[5]); + muladd(a->d[1], b->d[4]); + muladd(a->d[2], b->d[3]); + muladd(a->d[3], b->d[2]); + muladd(a->d[4], b->d[1]); + muladd(a->d[5], b->d[0]); + extract(l[5]); + muladd(a->d[0], b->d[6]); + muladd(a->d[1], b->d[5]); + muladd(a->d[2], b->d[4]); + muladd(a->d[3], b->d[3]); + muladd(a->d[4], b->d[2]); + muladd(a->d[5], b->d[1]); + muladd(a->d[6], b->d[0]); + extract(l[6]); + muladd(a->d[0], b->d[7]); + muladd(a->d[1], b->d[6]); + muladd(a->d[2], b->d[5]); + muladd(a->d[3], b->d[4]); + muladd(a->d[4], b->d[3]); + muladd(a->d[5], b->d[2]); + muladd(a->d[6], b->d[1]); + muladd(a->d[7], b->d[0]); + extract(l[7]); + muladd(a->d[1], b->d[7]); + muladd(a->d[2], b->d[6]); + muladd(a->d[3], b->d[5]); + muladd(a->d[4], b->d[4]); + muladd(a->d[5], b->d[3]); + muladd(a->d[6], b->d[2]); + muladd(a->d[7], b->d[1]); + extract(l[8]); + muladd(a->d[2], b->d[7]); + muladd(a->d[3], b->d[6]); + muladd(a->d[4], b->d[5]); + muladd(a->d[5], b->d[4]); + muladd(a->d[6], b->d[3]); + muladd(a->d[7], b->d[2]); + extract(l[9]); + muladd(a->d[3], b->d[7]); + muladd(a->d[4], b->d[6]); + muladd(a->d[5], b->d[5]); + muladd(a->d[6], b->d[4]); + muladd(a->d[7], b->d[3]); + extract(l[10]); + muladd(a->d[4], b->d[7]); + muladd(a->d[5], b->d[6]); + muladd(a->d[6], b->d[5]); + muladd(a->d[7], b->d[4]); + extract(l[11]); + muladd(a->d[5], b->d[7]); + muladd(a->d[6], b->d[6]); + muladd(a->d[7], b->d[5]); + extract(l[12]); + muladd(a->d[6], b->d[7]); + muladd(a->d[7], b->d[6]); + extract(l[13]); + muladd_fast(a->d[7], b->d[7]); + extract_fast(l[14]); + VERIFY_CHECK(c1 == 0); + l[15] = c0; +} + +static void secp256k1_scalar_sqr_512(uint32_t *l, const secp256k1_scalar *a) { + /* 96 bit accumulator. */ + uint32_t c0 = 0, c1 = 0, c2 = 0; + + /* l[0..15] = a[0..7]^2. */ + muladd_fast(a->d[0], a->d[0]); + extract_fast(l[0]); + muladd2(a->d[0], a->d[1]); + extract(l[1]); + muladd2(a->d[0], a->d[2]); + muladd(a->d[1], a->d[1]); + extract(l[2]); + muladd2(a->d[0], a->d[3]); + muladd2(a->d[1], a->d[2]); + extract(l[3]); + muladd2(a->d[0], a->d[4]); + muladd2(a->d[1], a->d[3]); + muladd(a->d[2], a->d[2]); + extract(l[4]); + muladd2(a->d[0], a->d[5]); + muladd2(a->d[1], a->d[4]); + muladd2(a->d[2], a->d[3]); + extract(l[5]); + muladd2(a->d[0], a->d[6]); + muladd2(a->d[1], a->d[5]); + muladd2(a->d[2], a->d[4]); + muladd(a->d[3], a->d[3]); + extract(l[6]); + muladd2(a->d[0], a->d[7]); + muladd2(a->d[1], a->d[6]); + muladd2(a->d[2], a->d[5]); + muladd2(a->d[3], a->d[4]); + extract(l[7]); + muladd2(a->d[1], a->d[7]); + muladd2(a->d[2], a->d[6]); + muladd2(a->d[3], a->d[5]); + muladd(a->d[4], a->d[4]); + extract(l[8]); + muladd2(a->d[2], a->d[7]); + muladd2(a->d[3], a->d[6]); + muladd2(a->d[4], a->d[5]); + extract(l[9]); + muladd2(a->d[3], a->d[7]); + muladd2(a->d[4], a->d[6]); + muladd(a->d[5], a->d[5]); + extract(l[10]); + muladd2(a->d[4], a->d[7]); + muladd2(a->d[5], a->d[6]); + extract(l[11]); + muladd2(a->d[5], a->d[7]); + muladd(a->d[6], a->d[6]); + extract(l[12]); + muladd2(a->d[6], a->d[7]); + extract(l[13]); + muladd_fast(a->d[7], a->d[7]); + extract_fast(l[14]); + VERIFY_CHECK(c1 == 0); + l[15] = c0; +} + +#undef sumadd +#undef sumadd_fast +#undef muladd +#undef muladd_fast +#undef muladd2 +#undef extract +#undef extract_fast + +static void secp256k1_scalar_mul(secp256k1_scalar *r, const secp256k1_scalar *a, const secp256k1_scalar *b) { + uint32_t l[16]; + secp256k1_scalar_mul_512(l, a, b); + secp256k1_scalar_reduce_512(r, l); +} + +static int secp256k1_scalar_shr_int(secp256k1_scalar *r, int n) { + int ret; + VERIFY_CHECK(n > 0); + VERIFY_CHECK(n < 16); + ret = r->d[0] & ((1 << n) - 1); + r->d[0] = (r->d[0] >> n) + (r->d[1] << (32 - n)); + r->d[1] = (r->d[1] >> n) + (r->d[2] << (32 - n)); + r->d[2] = (r->d[2] >> n) + (r->d[3] << (32 - n)); + r->d[3] = (r->d[3] >> n) + (r->d[4] << (32 - n)); + r->d[4] = (r->d[4] >> n) + (r->d[5] << (32 - n)); + r->d[5] = (r->d[5] >> n) + (r->d[6] << (32 - n)); + r->d[6] = (r->d[6] >> n) + (r->d[7] << (32 - n)); + r->d[7] = (r->d[7] >> n); + return ret; +} + +static void secp256k1_scalar_sqr(secp256k1_scalar *r, const secp256k1_scalar *a) { + uint32_t l[16]; + secp256k1_scalar_sqr_512(l, a); + secp256k1_scalar_reduce_512(r, l); +} + +#ifdef USE_ENDOMORPHISM +static void secp256k1_scalar_split_128(secp256k1_scalar *r1, secp256k1_scalar *r2, const secp256k1_scalar *a) { + r1->d[0] = a->d[0]; + r1->d[1] = a->d[1]; + r1->d[2] = a->d[2]; + r1->d[3] = a->d[3]; + r1->d[4] = 0; + r1->d[5] = 0; + r1->d[6] = 0; + r1->d[7] = 0; + r2->d[0] = a->d[4]; + r2->d[1] = a->d[5]; + r2->d[2] = a->d[6]; + r2->d[3] = a->d[7]; + r2->d[4] = 0; + r2->d[5] = 0; + r2->d[6] = 0; + r2->d[7] = 0; +} +#endif + +SECP256K1_INLINE static int secp256k1_scalar_eq(const secp256k1_scalar *a, const secp256k1_scalar *b) { + return ((a->d[0] ^ b->d[0]) | (a->d[1] ^ b->d[1]) | (a->d[2] ^ b->d[2]) | (a->d[3] ^ b->d[3]) | (a->d[4] ^ b->d[4]) | (a->d[5] ^ b->d[5]) | (a->d[6] ^ b->d[6]) | (a->d[7] ^ b->d[7])) == 0; +} + +SECP256K1_INLINE static void secp256k1_scalar_mul_shift_var(secp256k1_scalar *r, const secp256k1_scalar *a, const secp256k1_scalar *b, unsigned int shift) { + uint32_t l[16]; + unsigned int shiftlimbs; + unsigned int shiftlow; + unsigned int shifthigh; + VERIFY_CHECK(shift >= 256); + secp256k1_scalar_mul_512(l, a, b); + shiftlimbs = shift >> 5; + shiftlow = shift & 0x1F; + shifthigh = 32 - shiftlow; + r->d[0] = shift < 512 ? (l[0 + shiftlimbs] >> shiftlow | (shift < 480 && shiftlow ? (l[1 + shiftlimbs] << shifthigh) : 0)) : 0; + r->d[1] = shift < 480 ? (l[1 + shiftlimbs] >> shiftlow | (shift < 448 && shiftlow ? (l[2 + shiftlimbs] << shifthigh) : 0)) : 0; + r->d[2] = shift < 448 ? (l[2 + shiftlimbs] >> shiftlow | (shift < 416 && shiftlow ? (l[3 + shiftlimbs] << shifthigh) : 0)) : 0; + r->d[3] = shift < 416 ? (l[3 + shiftlimbs] >> shiftlow | (shift < 384 && shiftlow ? (l[4 + shiftlimbs] << shifthigh) : 0)) : 0; + r->d[4] = shift < 384 ? (l[4 + shiftlimbs] >> shiftlow | (shift < 352 && shiftlow ? (l[5 + shiftlimbs] << shifthigh) : 0)) : 0; + r->d[5] = shift < 352 ? (l[5 + shiftlimbs] >> shiftlow | (shift < 320 && shiftlow ? (l[6 + shiftlimbs] << shifthigh) : 0)) : 0; + r->d[6] = shift < 320 ? (l[6 + shiftlimbs] >> shiftlow | (shift < 288 && shiftlow ? (l[7 + shiftlimbs] << shifthigh) : 0)) : 0; + r->d[7] = shift < 288 ? (l[7 + shiftlimbs] >> shiftlow) : 0; + secp256k1_scalar_cadd_bit(r, 0, (l[(shift - 1) >> 5] >> ((shift - 1) & 0x1f)) & 1); +} + +#endif /* SECP256K1_SCALAR_REPR_IMPL_H */ diff --git a/Pods/secp256k1_ios/secp256k1_ios/src/scalar_impl.h b/Pods/secp256k1_ios/secp256k1_ios/src/scalar_impl.h new file mode 100644 index 00000000..fa790570 --- /dev/null +++ b/Pods/secp256k1_ios/secp256k1_ios/src/scalar_impl.h @@ -0,0 +1,333 @@ +/********************************************************************** + * Copyright (c) 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef SECP256K1_SCALAR_IMPL_H +#define SECP256K1_SCALAR_IMPL_H + +#include "group.h" +#include "scalar.h" + +#if defined HAVE_CONFIG_H +#include "libsecp256k1-config.h" +#endif + +#if defined(EXHAUSTIVE_TEST_ORDER) +#include "scalar_low_impl.h" +#elif defined(USE_SCALAR_4X64) +#include "scalar_4x64_impl.h" +#elif defined(USE_SCALAR_8X32) +#include "scalar_8x32_impl.h" +#else +#error "Please select scalar implementation" +#endif + +#ifndef USE_NUM_NONE +static void secp256k1_scalar_get_num(secp256k1_num *r, const secp256k1_scalar *a) { + unsigned char c[32]; + secp256k1_scalar_get_b32(c, a); + secp256k1_num_set_bin(r, c, 32); +} + +/** secp256k1 curve order, see secp256k1_ecdsa_const_order_as_fe in ecdsa_impl.h */ +static void secp256k1_scalar_order_get_num(secp256k1_num *r) { +#if defined(EXHAUSTIVE_TEST_ORDER) + static const unsigned char order[32] = { + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,EXHAUSTIVE_TEST_ORDER + }; +#else + static const unsigned char order[32] = { + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE, + 0xBA,0xAE,0xDC,0xE6,0xAF,0x48,0xA0,0x3B, + 0xBF,0xD2,0x5E,0x8C,0xD0,0x36,0x41,0x41 + }; +#endif + secp256k1_num_set_bin(r, order, 32); +} +#endif + +static void secp256k1_scalar_inverse(secp256k1_scalar *r, const secp256k1_scalar *x) { +#if defined(EXHAUSTIVE_TEST_ORDER) + int i; + *r = 0; + for (i = 0; i < EXHAUSTIVE_TEST_ORDER; i++) + if ((i * *x) % EXHAUSTIVE_TEST_ORDER == 1) + *r = i; + /* If this VERIFY_CHECK triggers we were given a noninvertible scalar (and thus + * have a composite group order; fix it in exhaustive_tests.c). */ + VERIFY_CHECK(*r != 0); +} +#else + secp256k1_scalar *t; + int i; + /* First compute xN as x ^ (2^N - 1) for some values of N, + * and uM as x ^ M for some values of M. */ + secp256k1_scalar x2, x3, x6, x8, x14, x28, x56, x112, x126; + secp256k1_scalar u2, u5, u9, u11, u13; + + secp256k1_scalar_sqr(&u2, x); + secp256k1_scalar_mul(&x2, &u2, x); + secp256k1_scalar_mul(&u5, &u2, &x2); + secp256k1_scalar_mul(&x3, &u5, &u2); + secp256k1_scalar_mul(&u9, &x3, &u2); + secp256k1_scalar_mul(&u11, &u9, &u2); + secp256k1_scalar_mul(&u13, &u11, &u2); + + secp256k1_scalar_sqr(&x6, &u13); + secp256k1_scalar_sqr(&x6, &x6); + secp256k1_scalar_mul(&x6, &x6, &u11); + + secp256k1_scalar_sqr(&x8, &x6); + secp256k1_scalar_sqr(&x8, &x8); + secp256k1_scalar_mul(&x8, &x8, &x2); + + secp256k1_scalar_sqr(&x14, &x8); + for (i = 0; i < 5; i++) { + secp256k1_scalar_sqr(&x14, &x14); + } + secp256k1_scalar_mul(&x14, &x14, &x6); + + secp256k1_scalar_sqr(&x28, &x14); + for (i = 0; i < 13; i++) { + secp256k1_scalar_sqr(&x28, &x28); + } + secp256k1_scalar_mul(&x28, &x28, &x14); + + secp256k1_scalar_sqr(&x56, &x28); + for (i = 0; i < 27; i++) { + secp256k1_scalar_sqr(&x56, &x56); + } + secp256k1_scalar_mul(&x56, &x56, &x28); + + secp256k1_scalar_sqr(&x112, &x56); + for (i = 0; i < 55; i++) { + secp256k1_scalar_sqr(&x112, &x112); + } + secp256k1_scalar_mul(&x112, &x112, &x56); + + secp256k1_scalar_sqr(&x126, &x112); + for (i = 0; i < 13; i++) { + secp256k1_scalar_sqr(&x126, &x126); + } + secp256k1_scalar_mul(&x126, &x126, &x14); + + /* Then accumulate the final result (t starts at x126). */ + t = &x126; + for (i = 0; i < 3; i++) { + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, &u5); /* 101 */ + for (i = 0; i < 4; i++) { /* 0 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, &x3); /* 111 */ + for (i = 0; i < 4; i++) { /* 0 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, &u5); /* 101 */ + for (i = 0; i < 5; i++) { /* 0 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, &u11); /* 1011 */ + for (i = 0; i < 4; i++) { + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, &u11); /* 1011 */ + for (i = 0; i < 4; i++) { /* 0 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, &x3); /* 111 */ + for (i = 0; i < 5; i++) { /* 00 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, &x3); /* 111 */ + for (i = 0; i < 6; i++) { /* 00 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, &u13); /* 1101 */ + for (i = 0; i < 4; i++) { /* 0 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, &u5); /* 101 */ + for (i = 0; i < 3; i++) { + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, &x3); /* 111 */ + for (i = 0; i < 5; i++) { /* 0 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, &u9); /* 1001 */ + for (i = 0; i < 6; i++) { /* 000 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, &u5); /* 101 */ + for (i = 0; i < 10; i++) { /* 0000000 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, &x3); /* 111 */ + for (i = 0; i < 4; i++) { /* 0 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, &x3); /* 111 */ + for (i = 0; i < 9; i++) { /* 0 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, &x8); /* 11111111 */ + for (i = 0; i < 5; i++) { /* 0 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, &u9); /* 1001 */ + for (i = 0; i < 6; i++) { /* 00 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, &u11); /* 1011 */ + for (i = 0; i < 4; i++) { + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, &u13); /* 1101 */ + for (i = 0; i < 5; i++) { + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, &x2); /* 11 */ + for (i = 0; i < 6; i++) { /* 00 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, &u13); /* 1101 */ + for (i = 0; i < 10; i++) { /* 000000 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, &u13); /* 1101 */ + for (i = 0; i < 4; i++) { + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, &u9); /* 1001 */ + for (i = 0; i < 6; i++) { /* 00000 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(t, t, x); /* 1 */ + for (i = 0; i < 8; i++) { /* 00 */ + secp256k1_scalar_sqr(t, t); + } + secp256k1_scalar_mul(r, t, &x6); /* 111111 */ +} + +SECP256K1_INLINE static int secp256k1_scalar_is_even(const secp256k1_scalar *a) { + return !(a->d[0] & 1); +} +#endif + +static void secp256k1_scalar_inverse_var(secp256k1_scalar *r, const secp256k1_scalar *x) { +#if defined(USE_SCALAR_INV_BUILTIN) + secp256k1_scalar_inverse(r, x); +#elif defined(USE_SCALAR_INV_NUM) + unsigned char b[32]; + secp256k1_num n, m; + secp256k1_scalar t = *x; + secp256k1_scalar_get_b32(b, &t); + secp256k1_num_set_bin(&n, b, 32); + secp256k1_scalar_order_get_num(&m); + secp256k1_num_mod_inverse(&n, &n, &m); + secp256k1_num_get_bin(b, 32, &n); + secp256k1_scalar_set_b32(r, b, NULL); + /* Verify that the inverse was computed correctly, without GMP code. */ + secp256k1_scalar_mul(&t, &t, r); + CHECK(secp256k1_scalar_is_one(&t)); +#else +#error "Please select scalar inverse implementation" +#endif +} + +#ifdef USE_ENDOMORPHISM +#if defined(EXHAUSTIVE_TEST_ORDER) +/** + * Find k1 and k2 given k, such that k1 + k2 * lambda == k mod n; unlike in the + * full case we don't bother making k1 and k2 be small, we just want them to be + * nontrivial to get full test coverage for the exhaustive tests. We therefore + * (arbitrarily) set k2 = k + 5 and k1 = k - k2 * lambda. + */ +static void secp256k1_scalar_split_lambda(secp256k1_scalar *r1, secp256k1_scalar *r2, const secp256k1_scalar *a) { + *r2 = (*a + 5) % EXHAUSTIVE_TEST_ORDER; + *r1 = (*a + (EXHAUSTIVE_TEST_ORDER - *r2) * EXHAUSTIVE_TEST_LAMBDA) % EXHAUSTIVE_TEST_ORDER; +} +#else +/** + * The Secp256k1 curve has an endomorphism, where lambda * (x, y) = (beta * x, y), where + * lambda is {0x53,0x63,0xad,0x4c,0xc0,0x5c,0x30,0xe0,0xa5,0x26,0x1c,0x02,0x88,0x12,0x64,0x5a, + * 0x12,0x2e,0x22,0xea,0x20,0x81,0x66,0x78,0xdf,0x02,0x96,0x7c,0x1b,0x23,0xbd,0x72} + * + * "Guide to Elliptic Curve Cryptography" (Hankerson, Menezes, Vanstone) gives an algorithm + * (algorithm 3.74) to find k1 and k2 given k, such that k1 + k2 * lambda == k mod n, and k1 + * and k2 have a small size. + * It relies on constants a1, b1, a2, b2. These constants for the value of lambda above are: + * + * - a1 = {0x30,0x86,0xd2,0x21,0xa7,0xd4,0x6b,0xcd,0xe8,0x6c,0x90,0xe4,0x92,0x84,0xeb,0x15} + * - b1 = -{0xe4,0x43,0x7e,0xd6,0x01,0x0e,0x88,0x28,0x6f,0x54,0x7f,0xa9,0x0a,0xbf,0xe4,0xc3} + * - a2 = {0x01,0x14,0xca,0x50,0xf7,0xa8,0xe2,0xf3,0xf6,0x57,0xc1,0x10,0x8d,0x9d,0x44,0xcf,0xd8} + * - b2 = {0x30,0x86,0xd2,0x21,0xa7,0xd4,0x6b,0xcd,0xe8,0x6c,0x90,0xe4,0x92,0x84,0xeb,0x15} + * + * The algorithm then computes c1 = round(b1 * k / n) and c2 = round(b2 * k / n), and gives + * k1 = k - (c1*a1 + c2*a2) and k2 = -(c1*b1 + c2*b2). Instead, we use modular arithmetic, and + * compute k1 as k - k2 * lambda, avoiding the need for constants a1 and a2. + * + * g1, g2 are precomputed constants used to replace division with a rounded multiplication + * when decomposing the scalar for an endomorphism-based point multiplication. + * + * The possibility of using precomputed estimates is mentioned in "Guide to Elliptic Curve + * Cryptography" (Hankerson, Menezes, Vanstone) in section 3.5. + * + * The derivation is described in the paper "Efficient Software Implementation of Public-Key + * Cryptography on Sensor Networks Using the MSP430X Microcontroller" (Gouvea, Oliveira, Lopez), + * Section 4.3 (here we use a somewhat higher-precision estimate): + * d = a1*b2 - b1*a2 + * g1 = round((2^272)*b2/d) + * g2 = round((2^272)*b1/d) + * + * (Note that 'd' is also equal to the curve order here because [a1,b1] and [a2,b2] are found + * as outputs of the Extended Euclidean Algorithm on inputs 'order' and 'lambda'). + * + * The function below splits a in r1 and r2, such that r1 + lambda * r2 == a (mod order). + */ + +static void secp256k1_scalar_split_lambda(secp256k1_scalar *r1, secp256k1_scalar *r2, const secp256k1_scalar *a) { + secp256k1_scalar c1, c2; + static const secp256k1_scalar minus_lambda = SECP256K1_SCALAR_CONST( + 0xAC9C52B3UL, 0x3FA3CF1FUL, 0x5AD9E3FDUL, 0x77ED9BA4UL, + 0xA880B9FCUL, 0x8EC739C2UL, 0xE0CFC810UL, 0xB51283CFUL + ); + static const secp256k1_scalar minus_b1 = SECP256K1_SCALAR_CONST( + 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL, + 0xE4437ED6UL, 0x010E8828UL, 0x6F547FA9UL, 0x0ABFE4C3UL + ); + static const secp256k1_scalar minus_b2 = SECP256K1_SCALAR_CONST( + 0xFFFFFFFFUL, 0xFFFFFFFFUL, 0xFFFFFFFFUL, 0xFFFFFFFEUL, + 0x8A280AC5UL, 0x0774346DUL, 0xD765CDA8UL, 0x3DB1562CUL + ); + static const secp256k1_scalar g1 = SECP256K1_SCALAR_CONST( + 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00003086UL, + 0xD221A7D4UL, 0x6BCDE86CUL, 0x90E49284UL, 0xEB153DABUL + ); + static const secp256k1_scalar g2 = SECP256K1_SCALAR_CONST( + 0x00000000UL, 0x00000000UL, 0x00000000UL, 0x0000E443UL, + 0x7ED6010EUL, 0x88286F54UL, 0x7FA90ABFUL, 0xE4C42212UL + ); + VERIFY_CHECK(r1 != a); + VERIFY_CHECK(r2 != a); + /* these _var calls are constant time since the shift amount is constant */ + secp256k1_scalar_mul_shift_var(&c1, a, &g1, 272); + secp256k1_scalar_mul_shift_var(&c2, a, &g2, 272); + secp256k1_scalar_mul(&c1, &c1, &minus_b1); + secp256k1_scalar_mul(&c2, &c2, &minus_b2); + secp256k1_scalar_add(r2, &c1, &c2); + secp256k1_scalar_mul(r1, r2, &minus_lambda); + secp256k1_scalar_add(r1, r1, a); +} +#endif +#endif + +#endif /* SECP256K1_SCALAR_IMPL_H */ diff --git a/Pods/secp256k1_ios/secp256k1_ios/src/scalar_low.h b/Pods/secp256k1_ios/secp256k1_ios/src/scalar_low.h new file mode 100644 index 00000000..5836febc --- /dev/null +++ b/Pods/secp256k1_ios/secp256k1_ios/src/scalar_low.h @@ -0,0 +1,15 @@ +/********************************************************************** + * Copyright (c) 2015 Andrew Poelstra * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef SECP256K1_SCALAR_REPR_H +#define SECP256K1_SCALAR_REPR_H + +#include + +/** A scalar modulo the group order of the secp256k1 curve. */ +typedef uint32_t secp256k1_scalar; + +#endif /* SECP256K1_SCALAR_REPR_H */ diff --git a/Pods/secp256k1_ios/secp256k1_ios/src/scalar_low_impl.h b/Pods/secp256k1_ios/secp256k1_ios/src/scalar_low_impl.h new file mode 100644 index 00000000..c80e70c5 --- /dev/null +++ b/Pods/secp256k1_ios/secp256k1_ios/src/scalar_low_impl.h @@ -0,0 +1,114 @@ +/********************************************************************** + * Copyright (c) 2015 Andrew Poelstra * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef SECP256K1_SCALAR_REPR_IMPL_H +#define SECP256K1_SCALAR_REPR_IMPL_H + +#include "scalar.h" + +#include + +SECP256K1_INLINE static int secp256k1_scalar_is_even(const secp256k1_scalar *a) { + return !(*a & 1); +} + +SECP256K1_INLINE static void secp256k1_scalar_clear(secp256k1_scalar *r) { *r = 0; } +SECP256K1_INLINE static void secp256k1_scalar_set_int(secp256k1_scalar *r, unsigned int v) { *r = v; } + +SECP256K1_INLINE static unsigned int secp256k1_scalar_get_bits(const secp256k1_scalar *a, unsigned int offset, unsigned int count) { + if (offset < 32) + return ((*a >> offset) & ((((uint32_t)1) << count) - 1)); + else + return 0; +} + +SECP256K1_INLINE static unsigned int secp256k1_scalar_get_bits_var(const secp256k1_scalar *a, unsigned int offset, unsigned int count) { + return secp256k1_scalar_get_bits(a, offset, count); +} + +SECP256K1_INLINE static int secp256k1_scalar_check_overflow(const secp256k1_scalar *a) { return *a >= EXHAUSTIVE_TEST_ORDER; } + +static int secp256k1_scalar_add(secp256k1_scalar *r, const secp256k1_scalar *a, const secp256k1_scalar *b) { + *r = (*a + *b) % EXHAUSTIVE_TEST_ORDER; + return *r < *b; +} + +static void secp256k1_scalar_cadd_bit(secp256k1_scalar *r, unsigned int bit, int flag) { + if (flag && bit < 32) + *r += (1 << bit); +#ifdef VERIFY + VERIFY_CHECK(secp256k1_scalar_check_overflow(r) == 0); +#endif +} + +static void secp256k1_scalar_set_b32(secp256k1_scalar *r, const unsigned char *b32, int *overflow) { + const int base = 0x100 % EXHAUSTIVE_TEST_ORDER; + int i; + *r = 0; + for (i = 0; i < 32; i++) { + *r = ((*r * base) + b32[i]) % EXHAUSTIVE_TEST_ORDER; + } + /* just deny overflow, it basically always happens */ + if (overflow) *overflow = 0; +} + +static void secp256k1_scalar_get_b32(unsigned char *bin, const secp256k1_scalar* a) { + memset(bin, 0, 32); + bin[28] = *a >> 24; bin[29] = *a >> 16; bin[30] = *a >> 8; bin[31] = *a; +} + +SECP256K1_INLINE static int secp256k1_scalar_is_zero(const secp256k1_scalar *a) { + return *a == 0; +} + +static void secp256k1_scalar_negate(secp256k1_scalar *r, const secp256k1_scalar *a) { + if (*a == 0) { + *r = 0; + } else { + *r = EXHAUSTIVE_TEST_ORDER - *a; + } +} + +SECP256K1_INLINE static int secp256k1_scalar_is_one(const secp256k1_scalar *a) { + return *a == 1; +} + +static int secp256k1_scalar_is_high(const secp256k1_scalar *a) { + return *a > EXHAUSTIVE_TEST_ORDER / 2; +} + +static int secp256k1_scalar_cond_negate(secp256k1_scalar *r, int flag) { + if (flag) secp256k1_scalar_negate(r, r); + return flag ? -1 : 1; +} + +static void secp256k1_scalar_mul(secp256k1_scalar *r, const secp256k1_scalar *a, const secp256k1_scalar *b) { + *r = (*a * *b) % EXHAUSTIVE_TEST_ORDER; +} + +static int secp256k1_scalar_shr_int(secp256k1_scalar *r, int n) { + int ret; + VERIFY_CHECK(n > 0); + VERIFY_CHECK(n < 16); + ret = *r & ((1 << n) - 1); + *r >>= n; + return ret; +} + +static void secp256k1_scalar_sqr(secp256k1_scalar *r, const secp256k1_scalar *a) { + *r = (*a * *a) % EXHAUSTIVE_TEST_ORDER; +} + +static void secp256k1_scalar_split_128(secp256k1_scalar *r1, secp256k1_scalar *r2, const secp256k1_scalar *a) { + *r1 = *a; + *r2 = 0; +} + +SECP256K1_INLINE static int secp256k1_scalar_eq(const secp256k1_scalar *a, const secp256k1_scalar *b) { + return *a == *b; +} + +#endif /* SECP256K1_SCALAR_REPR_IMPL_H */ diff --git a/Pods/secp256k1_ios/secp256k1_ios/src/secp256k1.c b/Pods/secp256k1_ios/secp256k1_ios/src/secp256k1.c new file mode 100644 index 00000000..7a3c162b --- /dev/null +++ b/Pods/secp256k1_ios/secp256k1_ios/src/secp256k1.c @@ -0,0 +1,584 @@ +/********************************************************************** + * Copyright (c) 2013-2015 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#include "secp256k1.h" + +#include "util.h" +#include "num_impl.h" +#include "field_impl.h" +#include "scalar_impl.h" +#include "group_impl.h" +#include "ecmult_impl.h" +#include "ecmult_const_impl.h" +#include "ecmult_gen_impl.h" +#include "ecdsa_impl.h" +#include "eckey_impl.h" +#include "hash_impl.h" + +#define ARG_CHECK(cond) do { \ + if (EXPECT(!(cond), 0)) { \ + secp256k1_callback_call(&ctx->illegal_callback, #cond); \ + return 0; \ + } \ +} while(0) + +static void default_illegal_callback_fn(const char* str, void* data) { + (void)data; + fprintf(stderr, "[libsecp256k1] illegal argument: %s\n", str); + abort(); +} + +static const secp256k1_callback default_illegal_callback = { + default_illegal_callback_fn, + NULL +}; + +static void default_error_callback_fn(const char* str, void* data) { + (void)data; + fprintf(stderr, "[libsecp256k1] internal consistency check failed: %s\n", str); + abort(); +} + +static const secp256k1_callback default_error_callback = { + default_error_callback_fn, + NULL +}; + + +struct secp256k1_context_struct { + secp256k1_ecmult_context ecmult_ctx; + secp256k1_ecmult_gen_context ecmult_gen_ctx; + secp256k1_callback illegal_callback; + secp256k1_callback error_callback; +}; + +secp256k1_context* secp256k1_context_create(unsigned int flags) { + secp256k1_context* ret = (secp256k1_context*)checked_malloc(&default_error_callback, sizeof(secp256k1_context)); + ret->illegal_callback = default_illegal_callback; + ret->error_callback = default_error_callback; + + if (EXPECT((flags & SECP256K1_FLAGS_TYPE_MASK) != SECP256K1_FLAGS_TYPE_CONTEXT, 0)) { + secp256k1_callback_call(&ret->illegal_callback, + "Invalid flags"); + free(ret); + return NULL; + } + + secp256k1_ecmult_context_init(&ret->ecmult_ctx); + secp256k1_ecmult_gen_context_init(&ret->ecmult_gen_ctx); + + if (flags & SECP256K1_FLAGS_BIT_CONTEXT_SIGN) { + secp256k1_ecmult_gen_context_build(&ret->ecmult_gen_ctx, &ret->error_callback); + } + if (flags & SECP256K1_FLAGS_BIT_CONTEXT_VERIFY) { + secp256k1_ecmult_context_build(&ret->ecmult_ctx, &ret->error_callback); + } + + return ret; +} + +secp256k1_context* secp256k1_context_clone(const secp256k1_context* ctx) { + secp256k1_context* ret = (secp256k1_context*)checked_malloc(&ctx->error_callback, sizeof(secp256k1_context)); + ret->illegal_callback = ctx->illegal_callback; + ret->error_callback = ctx->error_callback; + secp256k1_ecmult_context_clone(&ret->ecmult_ctx, &ctx->ecmult_ctx, &ctx->error_callback); + secp256k1_ecmult_gen_context_clone(&ret->ecmult_gen_ctx, &ctx->ecmult_gen_ctx, &ctx->error_callback); + return ret; +} + +void secp256k1_context_destroy(secp256k1_context* ctx) { + if (ctx != NULL) { + secp256k1_ecmult_context_clear(&ctx->ecmult_ctx); + secp256k1_ecmult_gen_context_clear(&ctx->ecmult_gen_ctx); + + free(ctx); + } +} + +void secp256k1_context_set_illegal_callback(secp256k1_context* ctx, void (*fun)(const char* message, void* data), const void* data) { + if (fun == NULL) { + fun = default_illegal_callback_fn; + } + ctx->illegal_callback.fn = fun; + ctx->illegal_callback.data = data; +} + +void secp256k1_context_set_error_callback(secp256k1_context* ctx, void (*fun)(const char* message, void* data), const void* data) { + if (fun == NULL) { + fun = default_error_callback_fn; + } + ctx->error_callback.fn = fun; + ctx->error_callback.data = data; +} + +static int secp256k1_pubkey_load(const secp256k1_context* ctx, secp256k1_ge* ge, const secp256k1_pubkey* pubkey) { + if (sizeof(secp256k1_ge_storage) == 64) { + /* When the secp256k1_ge_storage type is exactly 64 byte, use its + * representation inside secp256k1_pubkey, as conversion is very fast. + * Note that secp256k1_pubkey_save must use the same representation. */ + secp256k1_ge_storage s; + memcpy(&s, &pubkey->data[0], 64); + secp256k1_ge_from_storage(ge, &s); + } else { + /* Otherwise, fall back to 32-byte big endian for X and Y. */ + secp256k1_fe x, y; + secp256k1_fe_set_b32(&x, pubkey->data); + secp256k1_fe_set_b32(&y, pubkey->data + 32); + secp256k1_ge_set_xy(ge, &x, &y); + } + ARG_CHECK(!secp256k1_fe_is_zero(&ge->x)); + return 1; +} + +static void secp256k1_pubkey_save(secp256k1_pubkey* pubkey, secp256k1_ge* ge) { + if (sizeof(secp256k1_ge_storage) == 64) { + secp256k1_ge_storage s; + secp256k1_ge_to_storage(&s, ge); + memcpy(&pubkey->data[0], &s, 64); + } else { + VERIFY_CHECK(!secp256k1_ge_is_infinity(ge)); + secp256k1_fe_normalize_var(&ge->x); + secp256k1_fe_normalize_var(&ge->y); + secp256k1_fe_get_b32(pubkey->data, &ge->x); + secp256k1_fe_get_b32(pubkey->data + 32, &ge->y); + } +} + +int secp256k1_ec_pubkey_parse(const secp256k1_context* ctx, secp256k1_pubkey* pubkey, const unsigned char *input, size_t inputlen) { + secp256k1_ge Q; + + VERIFY_CHECK(ctx != NULL); + ARG_CHECK(pubkey != NULL); + memset(pubkey, 0, sizeof(*pubkey)); + ARG_CHECK(input != NULL); + if (!secp256k1_eckey_pubkey_parse(&Q, input, inputlen)) { + return 0; + } + secp256k1_pubkey_save(pubkey, &Q); + secp256k1_ge_clear(&Q); + return 1; +} + +int secp256k1_ec_pubkey_serialize(const secp256k1_context* ctx, unsigned char *output, size_t *outputlen, const secp256k1_pubkey* pubkey, unsigned int flags) { + secp256k1_ge Q; + size_t len; + int ret = 0; + + VERIFY_CHECK(ctx != NULL); + ARG_CHECK(outputlen != NULL); + ARG_CHECK(*outputlen >= ((flags & SECP256K1_FLAGS_BIT_COMPRESSION) ? 33 : 65)); + len = *outputlen; + *outputlen = 0; + ARG_CHECK(output != NULL); + memset(output, 0, len); + ARG_CHECK(pubkey != NULL); + ARG_CHECK((flags & SECP256K1_FLAGS_TYPE_MASK) == SECP256K1_FLAGS_TYPE_COMPRESSION); + if (secp256k1_pubkey_load(ctx, &Q, pubkey)) { + ret = secp256k1_eckey_pubkey_serialize(&Q, output, &len, flags & SECP256K1_FLAGS_BIT_COMPRESSION); + if (ret) { + *outputlen = len; + } + } + return ret; +} + +static void secp256k1_ecdsa_signature_load(const secp256k1_context* ctx, secp256k1_scalar* r, secp256k1_scalar* s, const secp256k1_ecdsa_signature* sig) { + (void)ctx; + if (sizeof(secp256k1_scalar) == 32) { + /* When the secp256k1_scalar type is exactly 32 byte, use its + * representation inside secp256k1_ecdsa_signature, as conversion is very fast. + * Note that secp256k1_ecdsa_signature_save must use the same representation. */ + memcpy(r, &sig->data[0], 32); + memcpy(s, &sig->data[32], 32); + } else { + secp256k1_scalar_set_b32(r, &sig->data[0], NULL); + secp256k1_scalar_set_b32(s, &sig->data[32], NULL); + } +} + +static void secp256k1_ecdsa_signature_save(secp256k1_ecdsa_signature* sig, const secp256k1_scalar* r, const secp256k1_scalar* s) { + if (sizeof(secp256k1_scalar) == 32) { + memcpy(&sig->data[0], r, 32); + memcpy(&sig->data[32], s, 32); + } else { + secp256k1_scalar_get_b32(&sig->data[0], r); + secp256k1_scalar_get_b32(&sig->data[32], s); + } +} + +int secp256k1_ecdsa_signature_parse_der(const secp256k1_context* ctx, secp256k1_ecdsa_signature* sig, const unsigned char *input, size_t inputlen) { + secp256k1_scalar r, s; + + VERIFY_CHECK(ctx != NULL); + ARG_CHECK(sig != NULL); + ARG_CHECK(input != NULL); + + if (secp256k1_ecdsa_sig_parse(&r, &s, input, inputlen)) { + secp256k1_ecdsa_signature_save(sig, &r, &s); + return 1; + } else { + memset(sig, 0, sizeof(*sig)); + return 0; + } +} + +int secp256k1_ecdsa_signature_parse_compact(const secp256k1_context* ctx, secp256k1_ecdsa_signature* sig, const unsigned char *input64) { + secp256k1_scalar r, s; + int ret = 1; + int overflow = 0; + + VERIFY_CHECK(ctx != NULL); + ARG_CHECK(sig != NULL); + ARG_CHECK(input64 != NULL); + + secp256k1_scalar_set_b32(&r, &input64[0], &overflow); + ret &= !overflow; + secp256k1_scalar_set_b32(&s, &input64[32], &overflow); + ret &= !overflow; + if (ret) { + secp256k1_ecdsa_signature_save(sig, &r, &s); + } else { + memset(sig, 0, sizeof(*sig)); + } + return ret; +} + +int secp256k1_ecdsa_signature_serialize_der(const secp256k1_context* ctx, unsigned char *output, size_t *outputlen, const secp256k1_ecdsa_signature* sig) { + secp256k1_scalar r, s; + + VERIFY_CHECK(ctx != NULL); + ARG_CHECK(output != NULL); + ARG_CHECK(outputlen != NULL); + ARG_CHECK(sig != NULL); + + secp256k1_ecdsa_signature_load(ctx, &r, &s, sig); + return secp256k1_ecdsa_sig_serialize(output, outputlen, &r, &s); +} + +int secp256k1_ecdsa_signature_serialize_compact(const secp256k1_context* ctx, unsigned char *output64, const secp256k1_ecdsa_signature* sig) { + secp256k1_scalar r, s; + + VERIFY_CHECK(ctx != NULL); + ARG_CHECK(output64 != NULL); + ARG_CHECK(sig != NULL); + + secp256k1_ecdsa_signature_load(ctx, &r, &s, sig); + secp256k1_scalar_get_b32(&output64[0], &r); + secp256k1_scalar_get_b32(&output64[32], &s); + return 1; +} + +int secp256k1_ecdsa_signature_normalize(const secp256k1_context* ctx, secp256k1_ecdsa_signature *sigout, const secp256k1_ecdsa_signature *sigin) { + secp256k1_scalar r, s; + int ret = 0; + + VERIFY_CHECK(ctx != NULL); + ARG_CHECK(sigin != NULL); + + secp256k1_ecdsa_signature_load(ctx, &r, &s, sigin); + ret = secp256k1_scalar_is_high(&s); + if (sigout != NULL) { + if (ret) { + secp256k1_scalar_negate(&s, &s); + } + secp256k1_ecdsa_signature_save(sigout, &r, &s); + } + + return ret; +} + +int secp256k1_ecdsa_verify(const secp256k1_context* ctx, const secp256k1_ecdsa_signature *sig, const unsigned char *msg32, const secp256k1_pubkey *pubkey) { + secp256k1_ge q; + secp256k1_scalar r, s; + secp256k1_scalar m; + VERIFY_CHECK(ctx != NULL); + ARG_CHECK(secp256k1_ecmult_context_is_built(&ctx->ecmult_ctx)); + ARG_CHECK(msg32 != NULL); + ARG_CHECK(sig != NULL); + ARG_CHECK(pubkey != NULL); + + secp256k1_scalar_set_b32(&m, msg32, NULL); + secp256k1_ecdsa_signature_load(ctx, &r, &s, sig); + return (!secp256k1_scalar_is_high(&s) && + secp256k1_pubkey_load(ctx, &q, pubkey) && + secp256k1_ecdsa_sig_verify(&ctx->ecmult_ctx, &r, &s, &q, &m)); +} + +static int nonce_function_rfc6979(unsigned char *nonce32, const unsigned char *msg32, const unsigned char *key32, const unsigned char *algo16, void *data, unsigned int counter) { + unsigned char keydata[112]; + int keylen = 64; + secp256k1_rfc6979_hmac_sha256 rng; + unsigned int i; + /* We feed a byte array to the PRNG as input, consisting of: + * - the private key (32 bytes) and message (32 bytes), see RFC 6979 3.2d. + * - optionally 32 extra bytes of data, see RFC 6979 3.6 Additional Data. + * - optionally 16 extra bytes with the algorithm name. + * Because the arguments have distinct fixed lengths it is not possible for + * different argument mixtures to emulate each other and result in the same + * nonces. + */ + memcpy(keydata, key32, 32); + memcpy(keydata + 32, msg32, 32); + if (data != NULL) { + memcpy(keydata + 64, data, 32); + keylen = 96; + } + if (algo16 != NULL) { + memcpy(keydata + keylen, algo16, 16); + keylen += 16; + } + secp256k1_rfc6979_hmac_sha256_initialize(&rng, keydata, keylen); + memset(keydata, 0, sizeof(keydata)); + for (i = 0; i <= counter; i++) { + secp256k1_rfc6979_hmac_sha256_generate(&rng, nonce32, 32); + } + secp256k1_rfc6979_hmac_sha256_finalize(&rng); + return 1; +} + +const secp256k1_nonce_function secp256k1_nonce_function_rfc6979 = nonce_function_rfc6979; +const secp256k1_nonce_function secp256k1_nonce_function_default = nonce_function_rfc6979; + +int secp256k1_ecdsa_sign(const secp256k1_context* ctx, secp256k1_ecdsa_signature *signature, const unsigned char *msg32, const unsigned char *seckey, secp256k1_nonce_function noncefp, const void* noncedata) { + secp256k1_scalar r, s; + secp256k1_scalar sec, non, msg; + int ret = 0; + int overflow = 0; + VERIFY_CHECK(ctx != NULL); + ARG_CHECK(secp256k1_ecmult_gen_context_is_built(&ctx->ecmult_gen_ctx)); + ARG_CHECK(msg32 != NULL); + ARG_CHECK(signature != NULL); + ARG_CHECK(seckey != NULL); + if (noncefp == NULL) { + noncefp = secp256k1_nonce_function_default; + } + + secp256k1_scalar_set_b32(&sec, seckey, &overflow); + /* Fail if the secret key is invalid. */ + if (!overflow && !secp256k1_scalar_is_zero(&sec)) { + unsigned char nonce32[32]; + unsigned int count = 0; + secp256k1_scalar_set_b32(&msg, msg32, NULL); + while (1) { + ret = noncefp(nonce32, msg32, seckey, NULL, (void*)noncedata, count); + if (!ret) { + break; + } + secp256k1_scalar_set_b32(&non, nonce32, &overflow); + if (!overflow && !secp256k1_scalar_is_zero(&non)) { + if (secp256k1_ecdsa_sig_sign(&ctx->ecmult_gen_ctx, &r, &s, &sec, &msg, &non, NULL)) { + break; + } + } + count++; + } + memset(nonce32, 0, 32); + secp256k1_scalar_clear(&msg); + secp256k1_scalar_clear(&non); + secp256k1_scalar_clear(&sec); + } + if (ret) { + secp256k1_ecdsa_signature_save(signature, &r, &s); + } else { + memset(signature, 0, sizeof(*signature)); + } + return ret; +} + +int secp256k1_ec_seckey_verify(const secp256k1_context* ctx, const unsigned char *seckey) { + secp256k1_scalar sec; + int ret; + int overflow; + VERIFY_CHECK(ctx != NULL); + ARG_CHECK(seckey != NULL); + + secp256k1_scalar_set_b32(&sec, seckey, &overflow); + ret = !overflow && !secp256k1_scalar_is_zero(&sec); + secp256k1_scalar_clear(&sec); + return ret; +} + +int secp256k1_ec_pubkey_create(const secp256k1_context* ctx, secp256k1_pubkey *pubkey, const unsigned char *seckey) { + secp256k1_gej pj; + secp256k1_ge p; + secp256k1_scalar sec; + int overflow; + int ret = 0; + VERIFY_CHECK(ctx != NULL); + ARG_CHECK(pubkey != NULL); + memset(pubkey, 0, sizeof(*pubkey)); + ARG_CHECK(secp256k1_ecmult_gen_context_is_built(&ctx->ecmult_gen_ctx)); + ARG_CHECK(seckey != NULL); + + secp256k1_scalar_set_b32(&sec, seckey, &overflow); + ret = (!overflow) & (!secp256k1_scalar_is_zero(&sec)); + if (ret) { + secp256k1_ecmult_gen(&ctx->ecmult_gen_ctx, &pj, &sec); + secp256k1_ge_set_gej(&p, &pj); + secp256k1_pubkey_save(pubkey, &p); + } + secp256k1_scalar_clear(&sec); + return ret; +} + +int secp256k1_ec_privkey_negate(const secp256k1_context* ctx, unsigned char *seckey) { + secp256k1_scalar sec; + VERIFY_CHECK(ctx != NULL); + ARG_CHECK(seckey != NULL); + + secp256k1_scalar_set_b32(&sec, seckey, NULL); + secp256k1_scalar_negate(&sec, &sec); + secp256k1_scalar_get_b32(seckey, &sec); + + return 1; +} + +int secp256k1_ec_pubkey_negate(const secp256k1_context* ctx, secp256k1_pubkey *pubkey) { + int ret = 0; + secp256k1_ge p; + VERIFY_CHECK(ctx != NULL); + ARG_CHECK(pubkey != NULL); + + ret = secp256k1_pubkey_load(ctx, &p, pubkey); + memset(pubkey, 0, sizeof(*pubkey)); + if (ret) { + secp256k1_ge_neg(&p, &p); + secp256k1_pubkey_save(pubkey, &p); + } + return ret; +} + +int secp256k1_ec_privkey_tweak_add(const secp256k1_context* ctx, unsigned char *seckey, const unsigned char *tweak) { + secp256k1_scalar term; + secp256k1_scalar sec; + int ret = 0; + int overflow = 0; + VERIFY_CHECK(ctx != NULL); + ARG_CHECK(seckey != NULL); + ARG_CHECK(tweak != NULL); + + secp256k1_scalar_set_b32(&term, tweak, &overflow); + secp256k1_scalar_set_b32(&sec, seckey, NULL); + + ret = !overflow && secp256k1_eckey_privkey_tweak_add(&sec, &term); + memset(seckey, 0, 32); + if (ret) { + secp256k1_scalar_get_b32(seckey, &sec); + } + + secp256k1_scalar_clear(&sec); + secp256k1_scalar_clear(&term); + return ret; +} + +int secp256k1_ec_pubkey_tweak_add(const secp256k1_context* ctx, secp256k1_pubkey *pubkey, const unsigned char *tweak) { + secp256k1_ge p; + secp256k1_scalar term; + int ret = 0; + int overflow = 0; + VERIFY_CHECK(ctx != NULL); + ARG_CHECK(secp256k1_ecmult_context_is_built(&ctx->ecmult_ctx)); + ARG_CHECK(pubkey != NULL); + ARG_CHECK(tweak != NULL); + + secp256k1_scalar_set_b32(&term, tweak, &overflow); + ret = !overflow && secp256k1_pubkey_load(ctx, &p, pubkey); + memset(pubkey, 0, sizeof(*pubkey)); + if (ret) { + if (secp256k1_eckey_pubkey_tweak_add(&ctx->ecmult_ctx, &p, &term)) { + secp256k1_pubkey_save(pubkey, &p); + } else { + ret = 0; + } + } + + return ret; +} + +int secp256k1_ec_privkey_tweak_mul(const secp256k1_context* ctx, unsigned char *seckey, const unsigned char *tweak) { + secp256k1_scalar factor; + secp256k1_scalar sec; + int ret = 0; + int overflow = 0; + VERIFY_CHECK(ctx != NULL); + ARG_CHECK(seckey != NULL); + ARG_CHECK(tweak != NULL); + + secp256k1_scalar_set_b32(&factor, tweak, &overflow); + secp256k1_scalar_set_b32(&sec, seckey, NULL); + ret = !overflow && secp256k1_eckey_privkey_tweak_mul(&sec, &factor); + memset(seckey, 0, 32); + if (ret) { + secp256k1_scalar_get_b32(seckey, &sec); + } + + secp256k1_scalar_clear(&sec); + secp256k1_scalar_clear(&factor); + return ret; +} + +int secp256k1_ec_pubkey_tweak_mul(const secp256k1_context* ctx, secp256k1_pubkey *pubkey, const unsigned char *tweak) { + secp256k1_ge p; + secp256k1_scalar factor; + int ret = 0; + int overflow = 0; + VERIFY_CHECK(ctx != NULL); + ARG_CHECK(secp256k1_ecmult_context_is_built(&ctx->ecmult_ctx)); + ARG_CHECK(pubkey != NULL); + ARG_CHECK(tweak != NULL); + + secp256k1_scalar_set_b32(&factor, tweak, &overflow); + ret = !overflow && secp256k1_pubkey_load(ctx, &p, pubkey); + memset(pubkey, 0, sizeof(*pubkey)); + if (ret) { + if (secp256k1_eckey_pubkey_tweak_mul(&ctx->ecmult_ctx, &p, &factor)) { + secp256k1_pubkey_save(pubkey, &p); + } else { + ret = 0; + } + } + + return ret; +} + +int secp256k1_context_randomize(secp256k1_context* ctx, const unsigned char *seed32) { + VERIFY_CHECK(ctx != NULL); + ARG_CHECK(secp256k1_ecmult_gen_context_is_built(&ctx->ecmult_gen_ctx)); + secp256k1_ecmult_gen_blind(&ctx->ecmult_gen_ctx, seed32); + return 1; +} + +int secp256k1_ec_pubkey_combine(const secp256k1_context* ctx, secp256k1_pubkey *pubnonce, const secp256k1_pubkey * const *pubnonces, size_t n) { + size_t i; + secp256k1_gej Qj; + secp256k1_ge Q; + + ARG_CHECK(pubnonce != NULL); + memset(pubnonce, 0, sizeof(*pubnonce)); + ARG_CHECK(n >= 1); + ARG_CHECK(pubnonces != NULL); + + secp256k1_gej_set_infinity(&Qj); + + for (i = 0; i < n; i++) { + secp256k1_pubkey_load(ctx, &Q, pubnonces[i]); + secp256k1_gej_add_ge(&Qj, &Qj, &Q); + } + if (secp256k1_gej_is_infinity(&Qj)) { + return 0; + } + secp256k1_ge_set_gej(&Q, &Qj); + secp256k1_pubkey_save(pubnonce, &Q); + return 1; +} + +#ifdef ENABLE_MODULE_ECDH +# include "modules/ecdh/main_impl.h" +#endif + +#ifdef ENABLE_MODULE_RECOVERY +# include "modules/recovery/main_impl.h" +#endif diff --git a/Pods/secp256k1_ios/secp256k1_ios/src/util.h b/Pods/secp256k1_ios/secp256k1_ios/src/util.h new file mode 100644 index 00000000..b0441d8e --- /dev/null +++ b/Pods/secp256k1_ios/secp256k1_ios/src/util.h @@ -0,0 +1,113 @@ +/********************************************************************** + * Copyright (c) 2013, 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef SECP256K1_UTIL_H +#define SECP256K1_UTIL_H + +#if defined HAVE_CONFIG_H +#include "libsecp256k1-config.h" +#endif + +#include +#include +#include + +typedef struct { + void (*fn)(const char *text, void* data); + const void* data; +} secp256k1_callback; + +static SECP256K1_INLINE void secp256k1_callback_call(const secp256k1_callback * const cb, const char * const text) { + cb->fn(text, (void*)cb->data); +} + +#ifdef DETERMINISTIC +#define TEST_FAILURE(msg) do { \ + fprintf(stderr, "%s\n", msg); \ + abort(); \ +} while(0); +#else +#define TEST_FAILURE(msg) do { \ + fprintf(stderr, "%s:%d: %s\n", __FILE__, __LINE__, msg); \ + abort(); \ +} while(0) +#endif + +#ifdef HAVE_BUILTIN_EXPECT +#define EXPECT(x,c) __builtin_expect((x),(c)) +#else +#define EXPECT(x,c) (x) +#endif + +#ifdef DETERMINISTIC +#define CHECK(cond) do { \ + if (EXPECT(!(cond), 0)) { \ + TEST_FAILURE("test condition failed"); \ + } \ +} while(0) +#else +#define CHECK(cond) do { \ + if (EXPECT(!(cond), 0)) { \ + TEST_FAILURE("test condition failed: " #cond); \ + } \ +} while(0) +#endif + +/* Like assert(), but when VERIFY is defined, and side-effect safe. */ +#if defined(COVERAGE) +#define VERIFY_CHECK(check) +#define VERIFY_SETUP(stmt) +#elif defined(VERIFY) +#define VERIFY_CHECK CHECK +#define VERIFY_SETUP(stmt) do { stmt; } while(0) +#else +#define VERIFY_CHECK(cond) do { (void)(cond); } while(0) +#define VERIFY_SETUP(stmt) +#endif + +static SECP256K1_INLINE void *checked_malloc(const secp256k1_callback* cb, size_t size) { + void *ret = malloc(size); + if (ret == NULL) { + secp256k1_callback_call(cb, "Out of memory"); + } + return ret; +} + +/* Macro for restrict, when available and not in a VERIFY build. */ +#if defined(SECP256K1_BUILD) && defined(VERIFY) +# define SECP256K1_RESTRICT +#else +# if (!defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L) ) +# if SECP256K1_GNUC_PREREQ(3,0) +# define SECP256K1_RESTRICT __restrict__ +# elif (defined(_MSC_VER) && _MSC_VER >= 1400) +# define SECP256K1_RESTRICT __restrict +# else +# define SECP256K1_RESTRICT +# endif +# else +# define SECP256K1_RESTRICT restrict +# endif +#endif + +#if defined(_WIN32) +# define I64FORMAT "I64d" +# define I64uFORMAT "I64u" +#else +# define I64FORMAT "lld" +# define I64uFORMAT "llu" +#endif + +#if defined(HAVE___INT128) +# if defined(__GNUC__) +# define SECP256K1_GNUC_EXT __extension__ +# else +# define SECP256K1_GNUC_EXT +# endif +SECP256K1_GNUC_EXT typedef unsigned __int128 uint128_t; +#endif + +#endif /* SECP256K1_UTIL_H */ diff --git a/web3swift.xcodeproj/project.pbxproj b/web3swift.xcodeproj/project.pbxproj index 21451b2e..d2796b11 100644 --- a/web3swift.xcodeproj/project.pbxproj +++ b/web3swift.xcodeproj/project.pbxproj @@ -18,7 +18,6 @@ 1CE976BF1FDDF9F40005D4B0 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1CE976BE1FDDF9F40005D4B0 /* Assets.xcassets */; }; 1CE976C21FDDF9F40005D4B0 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 1CE976C01FDDF9F40005D4B0 /* LaunchScreen.storyboard */; }; 596FE0DC120FD38AFF91C915 /* Pods_web3swift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 18E81592D2802B9F4E200823 /* Pods_web3swift.framework */; }; - 8104E2261FE8240300F952CB /* secp256k1.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8104E2251FE8240300F952CB /* secp256k1.framework */; }; 8104E2281FE82BDC00F952CB /* Web3+Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8104E2271FE82BDC00F952CB /* Web3+Utils.swift */; }; 8113D2C41FD7E1590074282C /* SodiumExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8113D2B01FD7E1590074282C /* SodiumExtensions.swift */; }; 8113D2C61FD7E1590074282C /* LibSecp256k1Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8113D2B21FD7E1590074282C /* LibSecp256k1Extension.swift */; }; @@ -97,7 +96,6 @@ 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 = ""; }; 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 = ""; }; 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 = ""; }; - 8104E2251FE8240300F952CB /* secp256k1.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = secp256k1.framework; sourceTree = ""; }; 8104E2271FE82BDC00F952CB /* Web3+Utils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Web3+Utils.swift"; sourceTree = ""; }; 8113D2B01FD7E1590074282C /* SodiumExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SodiumExtensions.swift; sourceTree = ""; }; 8113D2B21FD7E1590074282C /* LibSecp256k1Extension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LibSecp256k1Extension.swift; sourceTree = ""; }; @@ -105,7 +103,6 @@ 8113D2B81FD7E1590074282C /* KeystoreManagerV3.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeystoreManagerV3.swift; sourceTree = ""; }; 8113D2BB1FD7E1590074282C /* ABIEncoder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ABIEncoder.swift; sourceTree = ""; }; 8113D2BC1FD7E1590074282C /* ABIDecoder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ABIDecoder.swift; sourceTree = ""; }; - 8113D2C01FD7E1590074282C /* module.modulemap */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = "sourcecode.module-map"; path = module.modulemap; sourceTree = ""; }; 8113D2C31FD7E1590074282C /* EthereumTransaction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EthereumTransaction.swift; sourceTree = ""; }; 8113D2FF1FD7F30F0074282C /* StringExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StringExtension.swift; sourceTree = ""; }; 8113D3191FD7F4C80074282C /* ABITypes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ABITypes.swift; sourceTree = ""; }; @@ -132,7 +129,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 8104E2261FE8240300F952CB /* secp256k1.framework in Frameworks */, 596FE0DC120FD38AFF91C915 /* Pods_web3swift.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -183,7 +179,6 @@ isa = PBXGroup; children = ( 818EABD71FDC9A3800E013FC /* Contract */, - 8113D2BD1FD7E1590074282C /* secp256k1 */, 8113D2B91FD7E1590074282C /* ABI */, 8113D2B51FD7E1590074282C /* KeystoreManager */, 8113D2C11FD7E1590074282C /* Transaction */, @@ -286,15 +281,6 @@ path = Classes; sourceTree = ""; }; - 8113D2BD1FD7E1590074282C /* secp256k1 */ = { - isa = PBXGroup; - children = ( - 8113D2C01FD7E1590074282C /* module.modulemap */, - 8104E2251FE8240300F952CB /* secp256k1.framework */, - ); - path = secp256k1; - sourceTree = ""; - }; 8113D2C11FD7E1590074282C /* Transaction */ = { isa = PBXGroup; children = ( @@ -594,6 +580,7 @@ "${BUILT_PRODUCTS_DIR}/SipHash/SipHash.framework", "${BUILT_PRODUCTS_DIR}/Sodium/Sodium.framework", "${BUILT_PRODUCTS_DIR}/libsodium/libsodium.framework", + "${BUILT_PRODUCTS_DIR}/secp256k1_ios/secp256k1_ios.framework", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( @@ -605,6 +592,7 @@ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SipHash.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Sodium.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/libsodium.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/secp256k1_ios.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -644,6 +632,7 @@ "${BUILT_PRODUCTS_DIR}/SipHash/SipHash.framework", "${BUILT_PRODUCTS_DIR}/Sodium/Sodium.framework", "${BUILT_PRODUCTS_DIR}/libsodium/libsodium.framework", + "${BUILT_PRODUCTS_DIR}/secp256k1_ios/secp256k1_ios.framework", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( @@ -655,6 +644,7 @@ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SipHash.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Sodium.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/libsodium.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/secp256k1_ios.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -980,11 +970,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = ""; - HEADER_SEARCH_PATHS = ( - "\"$(PODS_ROOT)/libsodium/src/libsodium/include/sodium\"", - "\"$(PODS_ROOT)/libsodium/src/libsodium/include\"", - "\"$(SRCROOT)/web3swift/secp256k1\"", - ); + HEADER_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = web3swiftTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = BF.web3swiftTests; @@ -1005,11 +991,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = ""; - HEADER_SEARCH_PATHS = ( - "\"$(PODS_ROOT)/libsodium/src/libsodium/include/sodium\"", - "\"$(PODS_ROOT)/libsodium/src/libsodium/include\"", - "\"$(SRCROOT)/web3swift/secp256k1\"", - ); + HEADER_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = web3swiftTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = BF.web3swiftTests; diff --git a/web3swift.xcodeproj/xcshareddata/xcschemes/web3swift.xcscheme b/web3swift.xcodeproj/xcshareddata/xcschemes/web3swift.xcscheme index 4dbd470a..5d516ed3 100644 --- a/web3swift.xcodeproj/xcshareddata/xcschemes/web3swift.xcscheme +++ b/web3swift.xcodeproj/xcshareddata/xcschemes/web3swift.xcscheme @@ -63,6 +63,15 @@ debugDocumentVersioning = "YES" debugServiceExtension = "internal" allowLocationSimulation = "YES"> + + + + diff --git a/web3swift/Utils/Classes/LibSecp256k1Extension.swift b/web3swift/Utils/Classes/LibSecp256k1Extension.swift index 3eed3bde..1c4682b7 100644 --- a/web3swift/Utils/Classes/LibSecp256k1Extension.swift +++ b/web3swift/Utils/Classes/LibSecp256k1Extension.swift @@ -1,6 +1,6 @@ import Foundation -import secp256k1 +import secp256k1_ios import BigInt func toByteArray(_ value: T) -> [UInt8] { diff --git a/web3swift/secp256k1/module.modulemap b/web3swift/secp256k1/module.modulemap deleted file mode 100644 index 03a66d42..00000000 --- a/web3swift/secp256k1/module.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -module secp256k1 { - header "secp256k1.framework/Headers/secp256k1_recovery.h" - header "secp256k1.framework/Headers/secp256k1.h" - export * -} - diff --git a/web3swift/secp256k1/secp256k1.framework/Documentation/Documentation b/web3swift/secp256k1/secp256k1.framework/Documentation/Documentation deleted file mode 120000 index 790ed974..00000000 --- a/web3swift/secp256k1/secp256k1.framework/Documentation/Documentation +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Documentation \ No newline at end of file diff --git a/web3swift/secp256k1/secp256k1.framework/Headers/Headers b/web3swift/secp256k1/secp256k1.framework/Headers/Headers deleted file mode 120000 index a177d2a6..00000000 --- a/web3swift/secp256k1/secp256k1.framework/Headers/Headers +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Headers \ No newline at end of file diff --git a/web3swift/secp256k1/secp256k1.framework/Resources/Info.plist b/web3swift/secp256k1/secp256k1.framework/Resources/Info.plist deleted file mode 100644 index 9f6c1ecf..00000000 --- a/web3swift/secp256k1/secp256k1.framework/Resources/Info.plist +++ /dev/null @@ -1,20 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleExecutable - secp256k1 - CFBundleIdentifier - org.secp256k1lib - CFBundleInfoDictionaryVersion - 6.0 - CFBundlePackageType - FMWK - CFBundleSignature - ???? - CFBundleVersion - 1.0.0 - - diff --git a/web3swift/secp256k1/secp256k1.framework/Resources/Resources b/web3swift/secp256k1/secp256k1.framework/Resources/Resources deleted file mode 120000 index 953ee36f..00000000 --- a/web3swift/secp256k1/secp256k1.framework/Resources/Resources +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Resources \ No newline at end of file diff --git a/web3swift/secp256k1/secp256k1.framework/secp256k1 b/web3swift/secp256k1/secp256k1.framework/secp256k1 deleted file mode 100644 index 82731e40..00000000 Binary files a/web3swift/secp256k1/secp256k1.framework/secp256k1 and /dev/null differ