From 2867e07ba5e1fd68da7aa78c826af5111a0c9094 Mon Sep 17 00:00:00 2001 From: SergeySeroshtan Date: Sun, 13 Aug 2023 00:20:32 -0400 Subject: [PATCH] Revert "!!! Replace Pythia BrainKey with Hash BrainKey" This reverts commit 29d6659c977bb1c62bf35724a1614b156ee33590. --- Package.resolved | 9 +++ Package.swift | 9 ++- Source/EThree.swift | 3 +- Source/Models/EThreeParams.swift | 8 ++ Source/Models/Mixtec/BrainKey.swift | 73 ------------------- Source/Storages/Cloud/CloudKeyManager.swift | 15 +++- Tests/Swift/Utils/TestConfig.swift | 3 + Tests/Swift/Utils/TestUtils.swift | 9 ++- VirgilE3Kit.podspec | 1 + VirgilE3Kit.xcodeproj/project.pbxproj | 51 ++++++++++--- .../xcshareddata/swiftpm/Package.resolved | 9 +++ 11 files changed, 101 insertions(+), 89 deletions(-) delete mode 100644 Source/Models/Mixtec/BrainKey.swift diff --git a/Package.resolved b/Package.resolved index 0c66201..840d285 100644 --- a/Package.resolved +++ b/Package.resolved @@ -18,6 +18,15 @@ "version" : "7.0.0" } }, + { + "identity" : "virgil-pythia-x", + "kind" : "remoteSourceControl", + "location" : "https://github.com/VirgilSecurity/virgil-pythia-x.git", + "state" : { + "revision" : "5b8eb3a4a8e891826d8a2c0d00e13a4b246aa596", + "version" : "0.12.0-dev.1" + } + }, { "identity" : "virgil-ratchet-x", "kind" : "remoteSourceControl", diff --git a/Package.swift b/Package.swift index a61ddbc..51b14d0 100644 --- a/Package.swift +++ b/Package.swift @@ -16,14 +16,19 @@ let package = Package( ], dependencies: [ - .package(url: "https://github.com/VirgilSecurity/virgil-ratchet-x.git", exact: .init(0, 10, 0)) + .package( + url: "https://github.com/VirgilSecurity/virgil-pythia-x.git", + exact: .init(0, 12, 0, prereleaseIdentifiers: ["dev", "1"]) + ), + .package(url: "https://github.com/VirgilSecurity/virgil-ratchet-x.git", exact: .init(0, 10, 0)), ], targets: [ .target( name: "VirgilE3Kit", dependencies: [ - .product(name: "VirgilSDKRatchet", package: "virgil-ratchet-x") + .product(name: "VirgilSDKRatchet", package: "virgil-ratchet-x"), + .product(name: "VirgilSDKPythia", package: "virgil-pythia-x"), ], path: "Source" ), diff --git a/Source/EThree.swift b/Source/EThree.swift index 6c82042..69b8971 100644 --- a/Source/EThree.swift +++ b/Source/EThree.swift @@ -196,7 +196,8 @@ import VirgilSDKRatchet identity: params.identity, crypto: crypto, accessTokenProvider: accessTokenProvider, - keyknoxServiceUrl: params.serviceUrls.keyknoxServiceUrl + keyknoxServiceUrl: params.serviceUrls.keyknoxServiceUrl, + pythiaServiceUrl: params.serviceUrls.pythiaServiceUrl ) let sqliteCardStorage = try SQLiteCardStorage( diff --git a/Source/Models/EThreeParams.swift b/Source/Models/EThreeParams.swift index 757c529..d202c89 100644 --- a/Source/Models/EThreeParams.swift +++ b/Source/Models/EThreeParams.swift @@ -37,6 +37,7 @@ import Foundation import VirgilCrypto import VirgilSDK +import VirgilSDKPythia import VirgilSDKRatchet /// Contains parameters for initializing EThree @@ -72,6 +73,9 @@ import VirgilSDKRatchet /// Card service URL @objc public var cardServiceUrl: URL + /// Pythia service URL + @objc public var pythiaServiceUrl: URL + /// Keyknox service URL @objc public var keyknoxServiceUrl: URL @@ -81,14 +85,17 @@ import VirgilSDKRatchet /// Init /// - Parameters: /// - cardServiceUrl: Card service URL + /// - pythiaServiceUrl: Pythia service URL /// - keyknoxServiceUrl: Keyknox service URL /// - ratchetServiceUrl: Ratchet service URL @objc public init( cardServiceUrl: URL, + pythiaServiceUrl: URL, keyknoxServiceUrl: URL, ratchetServiceUrl: URL ) { self.cardServiceUrl = cardServiceUrl + self.pythiaServiceUrl = pythiaServiceUrl self.keyknoxServiceUrl = keyknoxServiceUrl self.ratchetServiceUrl = ratchetServiceUrl } @@ -215,6 +222,7 @@ import VirgilSDKRatchet self.tokenCallback = tokenCallback self.serviceUrls = ServiceUrls( cardServiceUrl: CardClient.defaultURL, + pythiaServiceUrl: PythiaClient.defaultURL, keyknoxServiceUrl: KeyknoxClient.defaultURL, ratchetServiceUrl: RatchetClient.defaultURL ) diff --git a/Source/Models/Mixtec/BrainKey.swift b/Source/Models/Mixtec/BrainKey.swift deleted file mode 100644 index 5273422..0000000 --- a/Source/Models/Mixtec/BrainKey.swift +++ /dev/null @@ -1,73 +0,0 @@ -// -// Copyright (C) 2015-2021 Virgil Security Inc. -// -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// (1) Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// (2) Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in -// the documentation and/or other materials provided with the -// distribution. -// -// (3) Neither the name of the copyright holder nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR -// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -// DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, -// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, -// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING -// IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -// POSSIBILITY OF SUCH DAMAGE. -// -// Lead Maintainer: Virgil Security Inc. -// - -import Foundation -import VirgilCrypto -import VirgilCryptoFoundation -import VirgilSDK - -/// Class for HashBased BrainKey -@objc(VSYBrainKey) open class BrainKey: NSObject { - /// Underlying crypto - @objc public let crypto: VirgilCrypto - - /// Initializer - /// - /// - Parameter context: BrainKey context - @objc public init(crypto: VirgilCrypto) { - self.crypto = crypto - } - - /// Generates key pair based on given password and brainkeyId - /// - /// - Parameters: - /// - password: password from which key pair will be generated - /// - brainKeyId: optional brainKey identifier (in case one wants to generate several key pairs from 1 password) - /// - Returns: GenericOperation with VirgilKeyPair - open func generateKeyPair(password: String, brainKeyId: String? = nil) -> GenericOperation { - CallbackOperation { _, completion in - do { - let passphrase = [password, brainKeyId].compactMap { $0 }.joined() - let seed = self.crypto.computeHash(for: passphrase.data(using: .utf8)!, using: .sha512) - let keyPair = try self.crypto.generateKeyPair(usingSeed: seed) - completion(keyPair, nil) - } catch { - completion(nil, error) - return - } - } - } -} diff --git a/Source/Storages/Cloud/CloudKeyManager.swift b/Source/Storages/Cloud/CloudKeyManager.swift index 41c82a7..846d39c 100644 --- a/Source/Storages/Cloud/CloudKeyManager.swift +++ b/Source/Storages/Cloud/CloudKeyManager.swift @@ -37,6 +37,7 @@ import Foundation import VirgilCrypto import VirgilSDK +import VirgilSDKPythia internal class CloudKeyManager { private let identity: String @@ -53,7 +54,8 @@ internal class CloudKeyManager { identity: String, crypto: VirgilCrypto, accessTokenProvider: AccessTokenProvider, - keyknoxServiceUrl: URL + keyknoxServiceUrl: URL, + pythiaServiceUrl: URL ) throws { self.identity = identity self.crypto = crypto @@ -70,7 +72,16 @@ internal class CloudKeyManager { self.keyknoxManager = try KeyknoxManager(keyknoxClient: keyknoxClient) - self.brainKey = BrainKey(crypto: self.crypto) + let pythiaClient = PythiaClient( + accessTokenProvider: self.accessTokenProvider, + serviceUrl: pythiaServiceUrl, + connection: connection, + retryConfig: ExpBackoffRetry.Config() + ) + + let brainKeyContext = try BrainKeyContext(client: pythiaClient) + + self.brainKey = BrainKey(context: brainKeyContext) } internal func setUpCloudKeyStorage(password: String) throws -> CloudKeyStorage { diff --git a/Tests/Swift/Utils/TestConfig.swift b/Tests/Swift/Utils/TestConfig.swift index 0a9203e..bfad41a 100644 --- a/Tests/Swift/Utils/TestConfig.swift +++ b/Tests/Swift/Utils/TestConfig.swift @@ -67,16 +67,19 @@ import VirgilE3Kit @objc public class ServiceUrls: NSObject, Decodable { public let Card: String + public let Pythia: String public let Keyknox: String public let Ratchet: String @objc public func get() -> EThreeParams.ServiceUrls { let cardServiceUrl = URL(string: self.Card)! + let pythiaServiceUrl = URL(string: self.Pythia)! let keyknoxServiceUrl = URL(string: self.Keyknox)! let ratchetServiceUrl = URL(string: self.Ratchet)! return EThreeParams.ServiceUrls( cardServiceUrl: cardServiceUrl, + pythiaServiceUrl: pythiaServiceUrl, keyknoxServiceUrl: keyknoxServiceUrl, ratchetServiceUrl: ratchetServiceUrl ) diff --git a/Tests/Swift/Utils/TestUtils.swift b/Tests/Swift/Utils/TestUtils.swift index fe1dbeb..9cc6238 100644 --- a/Tests/Swift/Utils/TestUtils.swift +++ b/Tests/Swift/Utils/TestUtils.swift @@ -38,6 +38,7 @@ import Foundation import VirgilCrypto import VirgilE3Kit import VirgilSDK +import VirgilSDKPythia @objc(VTETestUtils) public class TestUtils: NSObject { @objc public let crypto: VirgilCrypto @@ -248,8 +249,14 @@ import VirgilSDK let serviceUrls = self.config.ServiceUrls.get() let connection = HttpConnection() let retryConfig = ExpBackoffRetry.Config() + let pythiaClient = PythiaClient( + accessTokenProvider: provider, + serviceUrl: serviceUrls.pythiaServiceUrl, + connection: connection, + retryConfig: retryConfig + ) - let brainKeyContext = try! BrainKeyContext() + let brainKeyContext = try! BrainKeyContext(client: pythiaClient) let brainKey = BrainKey(context: brainKeyContext) brainKey.generateKeyPair(password: password, brainKeyId: nil) { keyPair, error in diff --git a/VirgilE3Kit.podspec b/VirgilE3Kit.podspec index c764748..087454b 100644 --- a/VirgilE3Kit.podspec +++ b/VirgilE3Kit.podspec @@ -12,5 +12,6 @@ Pod::Spec.new do |s| s.watchos.deployment_target = "4.0" s.source = { :git => "https://github.com/VirgilSecurity/virgil-e3kit-x.git", :tag => s.version } s.source_files = 'Source/**/*.{swift}' + s.dependency "VirgilSDKPythia", '= 0.12.0' s.dependency "VirgilSDKRatchet", '= 0.10.0' end diff --git a/VirgilE3Kit.xcodeproj/project.pbxproj b/VirgilE3Kit.xcodeproj/project.pbxproj index dc31dea..be22ead 100644 --- a/VirgilE3Kit.xcodeproj/project.pbxproj +++ b/VirgilE3Kit.xcodeproj/project.pbxproj @@ -298,13 +298,13 @@ 9759DFF524768E9D00C31E8F /* EThreeConfig.plist in Resources */ = {isa = PBXBuildFile; fileRef = 160BE966235BD081008B9D54 /* EThreeConfig.plist */; }; 9759DFF624768E9D00C31E8F /* EThreeConfig.plist in Resources */ = {isa = PBXBuildFile; fileRef = 160BE966235BD081008B9D54 /* EThreeConfig.plist */; }; 9759DFF724768E9E00C31E8F /* EThreeConfig.plist in Resources */ = {isa = PBXBuildFile; fileRef = 160BE966235BD081008B9D54 /* EThreeConfig.plist */; }; - F4037E032A841A620013A0CD /* BrainKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4037E022A841A620013A0CD /* BrainKey.swift */; }; - F4037E042A841A620013A0CD /* BrainKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4037E022A841A620013A0CD /* BrainKey.swift */; }; - F4037E052A841A620013A0CD /* BrainKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4037E022A841A620013A0CD /* BrainKey.swift */; }; - F4037E062A841A620013A0CD /* BrainKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4037E022A841A620013A0CD /* BrainKey.swift */; }; + F43238DA2A833F820064F1C1 /* VirgilSDKPythia in Frameworks */ = {isa = PBXBuildFile; productRef = F43238D92A833F820064F1C1 /* VirgilSDKPythia */; }; F43238DD2A833FD50064F1C1 /* VirgilSDKRatchet in Frameworks */ = {isa = PBXBuildFile; productRef = F43238DC2A833FD50064F1C1 /* VirgilSDKRatchet */; }; + F43238DF2A833FE10064F1C1 /* VirgilSDKPythia in Frameworks */ = {isa = PBXBuildFile; productRef = F43238DE2A833FE10064F1C1 /* VirgilSDKPythia */; }; F43238E12A833FE10064F1C1 /* VirgilSDKRatchet in Frameworks */ = {isa = PBXBuildFile; productRef = F43238E02A833FE10064F1C1 /* VirgilSDKRatchet */; }; + F43238E32A833FE60064F1C1 /* VirgilSDKPythia in Frameworks */ = {isa = PBXBuildFile; productRef = F43238E22A833FE60064F1C1 /* VirgilSDKPythia */; }; F43238E52A833FE60064F1C1 /* VirgilSDKRatchet in Frameworks */ = {isa = PBXBuildFile; productRef = F43238E42A833FE60064F1C1 /* VirgilSDKRatchet */; }; + F43238E72A833FEF0064F1C1 /* VirgilSDKPythia in Frameworks */ = {isa = PBXBuildFile; productRef = F43238E62A833FEF0064F1C1 /* VirgilSDKPythia */; }; F43238E92A833FEF0064F1C1 /* VirgilSDKRatchet in Frameworks */ = {isa = PBXBuildFile; productRef = F43238E82A833FEF0064F1C1 /* VirgilSDKRatchet */; }; F470425A24E3E7B300ECC104 /* VTE012_EncryptSharedFileTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F470425924E3E7B300ECC104 /* VTE012_EncryptSharedFileTests.swift */; }; F470425B24E3E7B300ECC104 /* VTE012_EncryptSharedFileTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F470425924E3E7B300ECC104 /* VTE012_EncryptSharedFileTests.swift */; }; @@ -502,7 +502,6 @@ 973E09A7287B26FD00F11F3F /* Bundle+SPM.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Bundle+SPM.swift"; sourceTree = ""; }; 97532D2626C6BEB200057289 /* VTE004_NamedKeyBakupTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VTE004_NamedKeyBakupTests.m; sourceTree = ""; }; 9759DFF124768E7000C31E8F /* compatibility_data.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = compatibility_data.json; sourceTree = ""; }; - F4037E022A841A620013A0CD /* BrainKey.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BrainKey.swift; sourceTree = ""; }; F470425924E3E7B300ECC104 /* VTE012_EncryptSharedFileTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VTE012_EncryptSharedFileTests.swift; sourceTree = ""; }; F470425D24E408E700ECC104 /* EThree+StreamShared.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "EThree+StreamShared.swift"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -551,6 +550,7 @@ buildActionMask = 2147483647; files = ( F43238DD2A833FD50064F1C1 /* VirgilSDKRatchet in Frameworks */, + F43238DA2A833F820064F1C1 /* VirgilSDKPythia in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -559,6 +559,7 @@ buildActionMask = 2147483647; files = ( F43238E92A833FEF0064F1C1 /* VirgilSDKRatchet in Frameworks */, + F43238E72A833FEF0064F1C1 /* VirgilSDKPythia in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -567,6 +568,7 @@ buildActionMask = 2147483647; files = ( F43238E12A833FE10064F1C1 /* VirgilSDKRatchet in Frameworks */, + F43238DF2A833FE10064F1C1 /* VirgilSDKPythia in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -575,6 +577,7 @@ buildActionMask = 2147483647; files = ( F43238E52A833FE60064F1C1 /* VirgilSDKRatchet in Frameworks */, + F43238E32A833FE60064F1C1 /* VirgilSDKPythia in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -839,7 +842,6 @@ 16AD62CF22E87A9200CDF90A /* RawGroup.swift */, 16AD62DE22E9D34900CDF90A /* GroupInfo.swift */, 1632AE9622DCDFB000950B48 /* Ticket.swift */, - F4037E022A841A620013A0CD /* BrainKey.swift */, ); path = Mixtec; sourceTree = ""; @@ -1030,6 +1032,7 @@ ); name = "VirgilE3Kit iOS"; packageProductDependencies = ( + F43238D92A833F820064F1C1 /* VirgilSDKPythia */, F43238DC2A833FD50064F1C1 /* VirgilSDKRatchet */, ); productName = "E3Kit iOS"; @@ -1051,6 +1054,7 @@ ); name = "VirgilE3Kit watchOS"; packageProductDependencies = ( + F43238E62A833FEF0064F1C1 /* VirgilSDKPythia */, F43238E82A833FEF0064F1C1 /* VirgilSDKRatchet */, ); productName = "E3Kit watchOS"; @@ -1072,6 +1076,7 @@ ); name = "VirgilE3Kit macOS"; packageProductDependencies = ( + F43238DE2A833FE10064F1C1 /* VirgilSDKPythia */, F43238E02A833FE10064F1C1 /* VirgilSDKRatchet */, ); productName = "E3Kit macOS"; @@ -1093,6 +1098,7 @@ ); name = "VirgilE3Kit tvOS"; packageProductDependencies = ( + F43238E22A833FE60064F1C1 /* VirgilSDKPythia */, F43238E42A833FE60064F1C1 /* VirgilSDKRatchet */, ); productName = "E3Kit tvOS"; @@ -1162,6 +1168,7 @@ ); mainGroup = 16EC37222177938A009D7F00; packageReferences = ( + F43238D82A833F820064F1C1 /* XCRemoteSwiftPackageReference "virgil-pythia-x" */, F43238DB2A833FD50064F1C1 /* XCRemoteSwiftPackageReference "virgil-ratchet-x" */, ); productRefGroup = 16EC372F217793BC009D7F00 /* Products */; @@ -1413,7 +1420,6 @@ 16AD62D022E87A9200CDF90A /* RawGroup.swift in Sources */, 16F9EA1C2178AED60021FD9A /* EThree+AuthEncrypt.swift in Sources */, 1665EE1D22E720A500774788 /* LookupManager.swift in Sources */, - F4037E032A841A620013A0CD /* BrainKey.swift in Sources */, 16532983235F15A500D2C071 /* EThree+Initialize.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1425,7 +1431,6 @@ 1661D7742301ADCD00BC435C /* FindUsersError.swift in Sources */, 160BE24A2331087900DD3999 /* EThreeRatchetError.swift in Sources */, 1629F5D722D62A8300DB5ECE /* EThree+Mixtec.swift in Sources */, - F4037E062A841A620013A0CD /* BrainKey.swift in Sources */, 16AD62E822E9FD5400CDF90A /* Array+Chunks.swift in Sources */, 16E3387A234E775200678624 /* RatchetChannel.swift in Sources */, 16E33883234E7F1E00678624 /* RatchetChannel+Encryption.swift in Sources */, @@ -1530,7 +1535,6 @@ 16F9EA14217890550021FD9A /* EThree.swift in Sources */, 16AD62D122E87A9200CDF90A /* RawGroup.swift in Sources */, 16F9EA1D2178AED60021FD9A /* EThree+AuthEncrypt.swift in Sources */, - F4037E042A841A620013A0CD /* BrainKey.swift in Sources */, 1665EE1E22E720A500774788 /* LookupManager.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1589,7 +1593,6 @@ 16F9EA15217890550021FD9A /* EThree.swift in Sources */, 16AD62D222E87A9200CDF90A /* RawGroup.swift in Sources */, 16F9EA1E2178AED60021FD9A /* EThree+AuthEncrypt.swift in Sources */, - F4037E052A841A620013A0CD /* BrainKey.swift in Sources */, 1665EE1F22E720A500774788 /* LookupManager.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -2997,6 +3000,14 @@ /* End XCConfigurationList section */ /* Begin XCRemoteSwiftPackageReference section */ + F43238D82A833F820064F1C1 /* XCRemoteSwiftPackageReference "virgil-pythia-x" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/VirgilSecurity/virgil-pythia-x"; + requirement = { + branch = develop; + kind = branch; + }; + }; F43238DB2A833FD50064F1C1 /* XCRemoteSwiftPackageReference "virgil-ratchet-x" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/VirgilSecurity/virgil-ratchet-x"; @@ -3008,21 +3019,41 @@ /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ + F43238D92A833F820064F1C1 /* VirgilSDKPythia */ = { + isa = XCSwiftPackageProductDependency; + package = F43238D82A833F820064F1C1 /* XCRemoteSwiftPackageReference "virgil-pythia-x" */; + productName = VirgilSDKPythia; + }; F43238DC2A833FD50064F1C1 /* VirgilSDKRatchet */ = { isa = XCSwiftPackageProductDependency; package = F43238DB2A833FD50064F1C1 /* XCRemoteSwiftPackageReference "virgil-ratchet-x" */; productName = VirgilSDKRatchet; }; + F43238DE2A833FE10064F1C1 /* VirgilSDKPythia */ = { + isa = XCSwiftPackageProductDependency; + package = F43238D82A833F820064F1C1 /* XCRemoteSwiftPackageReference "virgil-pythia-x" */; + productName = VirgilSDKPythia; + }; F43238E02A833FE10064F1C1 /* VirgilSDKRatchet */ = { isa = XCSwiftPackageProductDependency; package = F43238DB2A833FD50064F1C1 /* XCRemoteSwiftPackageReference "virgil-ratchet-x" */; productName = VirgilSDKRatchet; }; + F43238E22A833FE60064F1C1 /* VirgilSDKPythia */ = { + isa = XCSwiftPackageProductDependency; + package = F43238D82A833F820064F1C1 /* XCRemoteSwiftPackageReference "virgil-pythia-x" */; + productName = VirgilSDKPythia; + }; F43238E42A833FE60064F1C1 /* VirgilSDKRatchet */ = { isa = XCSwiftPackageProductDependency; package = F43238DB2A833FD50064F1C1 /* XCRemoteSwiftPackageReference "virgil-ratchet-x" */; productName = VirgilSDKRatchet; }; + F43238E62A833FEF0064F1C1 /* VirgilSDKPythia */ = { + isa = XCSwiftPackageProductDependency; + package = F43238D82A833F820064F1C1 /* XCRemoteSwiftPackageReference "virgil-pythia-x" */; + productName = VirgilSDKPythia; + }; F43238E82A833FEF0064F1C1 /* VirgilSDKRatchet */ = { isa = XCSwiftPackageProductDependency; package = F43238DB2A833FD50064F1C1 /* XCRemoteSwiftPackageReference "virgil-ratchet-x" */; diff --git a/VirgilE3Kit.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/VirgilE3Kit.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 445dd2d..958fca8 100644 --- a/VirgilE3Kit.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/VirgilE3Kit.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -18,6 +18,15 @@ "version" : "7.0.0" } }, + { + "identity" : "virgil-pythia-x", + "kind" : "remoteSourceControl", + "location" : "https://github.com/VirgilSecurity/virgil-pythia-x", + "state" : { + "branch" : "develop", + "revision" : "5b8eb3a4a8e891826d8a2c0d00e13a4b246aa596" + } + }, { "identity" : "virgil-ratchet-x", "kind" : "remoteSourceControl",