From 00f6b1da047c915aafb58367f46320466a218922 Mon Sep 17 00:00:00 2001 From: Eugen Pivovarov Date: Thu, 13 Dec 2018 17:28:27 +0200 Subject: [PATCH 01/18] Rename repo to virgil-keyknox-x --- Cartfile | 4 ++-- README.md | 4 ++-- VirgilSDKKeyknox.podspec | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Cartfile b/Cartfile index ba2610a..b62dd4a 100644 --- a/Cartfile +++ b/Cartfile @@ -1,2 +1,2 @@ -github "VirgilSecurity/sdk-x" ~> 5.4.0 -github "VirgilSecurity/crypto-x" ~> 3.2.0 \ No newline at end of file +github "VirgilSecurity/virgil-sdk-x" ~> 5.4.0 +github "VirgilSecurity/virgil-crypto-x" ~> 3.2.0 \ No newline at end of file diff --git a/README.md b/README.md index 535581e..7589b33 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Virgil KeyKnox Objective-C/Swift SDK -[![Build Status](https://api.travis-ci.org/VirgilSecurity/keyknox-x.svg?branch=master)](https://travis-ci.org/VirgilSecurity/keyknox-x) +[![Build Status](https://api.travis-ci.org/VirgilSecurity/virgil-keyknox-x.svg?branch=master)](https://travis-ci.org/VirgilSecurity/virgil-keyknox-x) [![CocoaPods Compatible](https://img.shields.io/cocoapods/v/VirgilSDKKeyknox.svg)](https://img.shields.io/cocoapods/v/VirgilSDKKeyknox.svg) [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) [![Platform](https://img.shields.io/cocoapods/p/VirgilSDKKeyknox.svg?style=flat)](http://cocoadocs.org/docsets/VirgilSDKKeyknox) @@ -71,7 +71,7 @@ $ brew install carthage To integrate Virgil Keyknox into your Xcode project using Carthage, create an empty file with name *Cartfile* in your project's root folder and add following lines to your *Cartfile* ``` -github "VirgilSecurity/keyknox-x" ~> 0.2.1 +github "VirgilSecurity/virgil-keyknox-x" ~> 0.2.1 ``` #### Linking against prebuilt binaries diff --git a/VirgilSDKKeyknox.podspec b/VirgilSDKKeyknox.podspec index 6e18a47..188e02f 100644 --- a/VirgilSDKKeyknox.podspec +++ b/VirgilSDKKeyknox.podspec @@ -3,9 +3,9 @@ Pod::Spec.new do |s| s.version = "0.2.1" s.license = { :type => "BSD", :file => "LICENSE" } s.summary = "Virgil Keyknox SDK for Apple devices and languages." - s.homepage = "https://github.com/VirgilSecurity/keyknox-x/" + s.homepage = "https://github.com/VirgilSecurity/virgil-keyknox-x/" s.authors = { "Virgil Security" => "https://virgilsecurity.com/" } - s.source = { :git => "https://github.com/VirgilSecurity/keyknox-x.git", :tag => s.version } + s.source = { :git => "https://github.com/VirgilSecurity/virgil-keyknox-x.git", :tag => s.version } s.ios.deployment_target = "9.0" s.osx.deployment_target = "10.10" s.tvos.deployment_target = "9.0" From fafda763039ec98ae04712373b74ffdf60fa2b78 Mon Sep 17 00:00:00 2001 From: Eugen Pivovarov Date: Mon, 17 Dec 2018 15:50:10 +0200 Subject: [PATCH 02/18] Fix build status link in README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7589b33..c11acb1 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Virgil KeyKnox Objective-C/Swift SDK -[![Build Status](https://api.travis-ci.org/VirgilSecurity/virgil-keyknox-x.svg?branch=master)](https://travis-ci.org/VirgilSecurity/virgil-keyknox-x) +[![Build Status](https://api.travis-ci.com/VirgilSecurity/virgil-keyknox-x.svg?branch=master)](https://travis-ci.com/VirgilSecurity/virgil-keyknox-x) [![CocoaPods Compatible](https://img.shields.io/cocoapods/v/VirgilSDKKeyknox.svg)](https://img.shields.io/cocoapods/v/VirgilSDKKeyknox.svg) [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) [![Platform](https://img.shields.io/cocoapods/p/VirgilSDKKeyknox.svg?style=flat)](http://cocoadocs.org/docsets/VirgilSDKKeyknox) From 699938cdaa4dd42ed10e73054ae6781caceb207f Mon Sep 17 00:00:00 2001 From: Eugen Pivovarov Date: Tue, 18 Dec 2018 12:59:55 +0200 Subject: [PATCH 03/18] Re-encrypted config file, updated tests --- Cartfile.resolved | 4 ++-- Tests/VSK002_KeyknoxManagerTests.m | 4 ++-- Tests/VSK003_CloudKeyStorageTests.m | 2 +- config.tar.enc | Bin 7184 -> 6160 bytes 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cartfile.resolved b/Cartfile.resolved index 40082f5..e2e61e7 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -1,3 +1,3 @@ -github "VirgilSecurity/crypto-x" "3.2.0" github "VirgilSecurity/cryptoapi-x" "1.0.3" -github "VirgilSecurity/sdk-x" "5.4.1" +github "VirgilSecurity/virgil-crypto-x" "3.2.1" +github "VirgilSecurity/virgil-sdk-x" "5.6.0" diff --git a/Tests/VSK002_KeyknoxManagerTests.m b/Tests/VSK002_KeyknoxManagerTests.m index 015aed3..5871c56 100644 --- a/Tests/VSK002_KeyknoxManagerTests.m +++ b/Tests/VSK002_KeyknoxManagerTests.m @@ -75,8 +75,8 @@ - (void)setUp { VSMVirgilPrivateKey *apiKey = [self.crypto importPrivateKeyFrom:[[NSData alloc] initWithBase64EncodedString:self.config.ApiPrivateKey options:0] password:nil error:nil]; VSSJwtGenerator *generator = [[VSSJwtGenerator alloc] initWithApiKey:apiKey apiPublicKeyIdentifier:self.config.ApiPublicKeyId accessTokenSigner:[[VSMVirgilAccessTokenSigner alloc] initWithVirgilCrypto:self.crypto] appId:self.config.AppId ttl:600]; NSString *identity = [[NSUUID alloc] init].UUIDString; - - self.provider = [[VSSCachingJwtProvider alloc] initWithRenewJwtCallback:^(VSSTokenContext *context, void (^completion)(VSSJwt *jwt, NSError *error)) { + + self.provider = [[VSSCachingJwtProvider alloc] initWithInitialJwt:nil renewJwtCallback:^(VSSTokenContext *context, void (^completion)(VSSJwt *jwt, NSError *error)) { VSSJwt *jwt = [generator generateTokenWithIdentity:identity additionalData:nil error:nil]; completion(jwt, nil); diff --git a/Tests/VSK003_CloudKeyStorageTests.m b/Tests/VSK003_CloudKeyStorageTests.m index aef16b5..34d2456 100644 --- a/Tests/VSK003_CloudKeyStorageTests.m +++ b/Tests/VSK003_CloudKeyStorageTests.m @@ -75,7 +75,7 @@ - (void)setUp { VSSJwtGenerator *generator = [[VSSJwtGenerator alloc] initWithApiKey:apiKey apiPublicKeyIdentifier:self.config.ApiPublicKeyId accessTokenSigner:[[VSMVirgilAccessTokenSigner alloc] initWithVirgilCrypto:self.crypto] appId:self.config.AppId ttl:600]; NSString *identity = [[NSUUID alloc] init].UUIDString; - id provider = [[VSSCachingJwtProvider alloc] initWithRenewJwtCallback:^(VSSTokenContext *context, void (^completion)(VSSJwt *jwt, NSError *error)) { + id provider = [[VSSCachingJwtProvider alloc] initWithInitialJwt:nil renewJwtCallback:^(VSSTokenContext *context, void (^completion)(VSSJwt *jwt, NSError *error)) { VSSJwt *jwt = [generator generateTokenWithIdentity:identity additionalData:nil error:nil]; completion(jwt, nil); diff --git a/config.tar.enc b/config.tar.enc index cad80bb39070e5f6f1aa5c9dc7800a77b2f3785f..751f52f333c4e63aed523cd9c6a793b912259cd8 100644 GIT binary patch literal 6160 zcmV+r81LtxLIP~~j|TdZBuXKHf~bk%u28XXax$6R>`cM?<$DCZIya@A#PwL$9<|IC z$$$m*D1M^ee?FFwguV+*E7t>WEKs0NR)D6V^UrIXT1e^>iONpZa!~twDSZL62UFXY z>sXsr$s#vO7(%x*=!WGj@BC2X4RaHN%Pj7%L4hSoOy((Z&w1Uqdn5#>_BRgRzeSvm z@@Zw7>YjiP5_OD-|FJ@WOH9R1+CY2c1uVU8#!=a8$6x+MfT(bianBSdSy$&c!yiy6 zl7ZfWVZ6UryC{FWx{mJ-8#y_W+aD#h*ak@HxoS_P`S1j7at(ze6)nS;keWjLc2GM$ zO)X*E8Pgm(f~P~#Pv#7zy7;L*R9}Gz3?sb&NTQZfSkJZ>hfT0{C9^F*MepYLXme@k zZ44-%5V5T-+|@w7vqI>qRXZMuezNQ0_WI+4g(a~;XZ(1$#v{NRy{`Ag4hJ-?{|B!Z zd^aN%`hl#>Io>zz4=lvz!1vM2$}5x--b`cZ7@52Ru<9>F@?bTW$pW9HcYvQnst|3E zMMoo@JE;w|ty69hB zJwJxGzEyl@slk~DYjSZAc1Y=^F?W|6WKOIY@_f&=3dVL@nF>!Qa_9W*3?K<-*=A%49E4NGWc3rFl@T-uC zYQ8sa#y6AUD(|tejdCJ#YCv|3=%~5t;q{CX5PbR8UokHPx~W6Z^E1X!m7S-EK_`1M%XX(myNfj_xA0aVqt03=2`li z3iX)fIEX8<>a;_j;b0`J`o(qJ25ID~%0Dxv>-4i>Vx5((d^Ma>08#Yru|#ZGxBEi_ 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 Date: Tue, 18 Dec 2018 18:59:16 +0200 Subject: [PATCH 04/18] Re-added dependencies --- VirgilSDKKeyknox.xcodeproj/project.pbxproj | 770 ++++++++++----------- 1 file changed, 373 insertions(+), 397 deletions(-) diff --git a/VirgilSDKKeyknox.xcodeproj/project.pbxproj b/VirgilSDKKeyknox.xcodeproj/project.pbxproj index 4761eae..25c11df 100644 --- a/VirgilSDKKeyknox.xcodeproj/project.pbxproj +++ b/VirgilSDKKeyknox.xcodeproj/project.pbxproj @@ -24,6 +24,22 @@ /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ + 16DEB82C21C95D570028828C /* VirgilSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16DEB81B21C95CF80028828C /* VirgilSDK.framework */; }; + 16DEB82D21C95D5F0028828C /* VirgilCrypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16DEB7E821C95CDE0028828C /* VirgilCrypto.framework */; }; + 16DEB82E21C95D660028828C /* VSCCrypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16DEB80421C95CDE0028828C /* VSCCrypto.framework */; }; + 16DEB82F21C95DA30028828C /* VirgilCryptoApiImpl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16DEB7F621C95CDE0028828C /* VirgilCryptoApiImpl.framework */; }; + 16DEB83021C95DF70028828C /* VirgilCryptoApiImpl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16DEB7FA21C95CDE0028828C /* VirgilCryptoApiImpl.framework */; }; + 16DEB83121C95DFC0028828C /* VirgilCrypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16DEB7EC21C95CDE0028828C /* VirgilCrypto.framework */; }; + 16DEB83221C95E020028828C /* VSCCrypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16DEB80621C95CDE0028828C /* VSCCrypto.framework */; }; + 16DEB83321C95E150028828C /* VirgilSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16DEB82121C95CF80028828C /* VirgilSDK.framework */; }; + 16DEB83421C95E370028828C /* VirgilCryptoApiImpl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16DEB7FE21C95CDE0028828C /* VirgilCryptoApiImpl.framework */; }; + 16DEB83521C95E400028828C /* VirgilCrypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16DEB7F021C95CDE0028828C /* VirgilCrypto.framework */; }; + 16DEB83621C95E440028828C /* VSCCrypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16DEB80821C95CDE0028828C /* VSCCrypto.framework */; }; + 16DEB83721C95E530028828C /* VirgilSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16DEB82521C95CF80028828C /* VirgilSDK.framework */; }; + 16DEB83821C95E970028828C /* VirgilCryptoApiImpl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16DEB80221C95CDE0028828C /* VirgilCryptoApiImpl.framework */; }; + 16DEB83921C95E9B0028828C /* VirgilCrypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16DEB7F421C95CDE0028828C /* VirgilCrypto.framework */; }; + 16DEB83A21C95E9E0028828C /* VSCCrypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16DEB80A21C95CDE0028828C /* VSCCrypto.framework */; }; + 16DEB83B21C95EAB0028828C /* VirgilSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16DEB82B21C95CF80028828C /* VirgilSDK.framework */; }; 42011DBE20CACC5400B84755 /* CloudEntry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42011DBD20CACC5400B84755 /* CloudEntry.swift */; }; 42011E5B20CE8FD400B84755 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42011E5A20CE8FD400B84755 /* AppDelegate.swift */; }; 42011E5D20CE8FD400B84755 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42011E5C20CE8FD400B84755 /* ViewController.swift */; }; @@ -171,344 +187,316 @@ 42D0585720EB755900FC544E /* VSK006_SyncKeyStorageKeychainUtilsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 428B15BB20D7F0AB0041CA75 /* VSK006_SyncKeyStorageKeychainUtilsTests.swift */; }; 42D0585820EB755900FC544E /* VSK007_KeyStorageWrapperTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42D056A420EA5B5D00FC544E /* VSK007_KeyStorageWrapperTests.swift */; }; 42D0585C20EB76BD00FC544E /* VirgilSDKKeyknox.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 42D0576220EAA0CC00FC544E /* VirgilSDKKeyknox.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 42D9E633216E11B300AA51C2 /* VirgilCrypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9E610216E119D00AA51C2 /* VirgilCrypto.framework */; }; 42D9E634216E11B300AA51C2 /* VirgilCryptoAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9E5C8216E119000AA51C2 /* VirgilCryptoAPI.framework */; }; - 42D9E635216E11B300AA51C2 /* VirgilCryptoApiImpl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9E61E216E119D00AA51C2 /* VirgilCryptoApiImpl.framework */; }; - 42D9E636216E11B300AA51C2 /* VirgilSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9E5E5216E119700AA51C2 /* VirgilSDK.framework */; }; - 42D9E637216E11B300AA51C2 /* VSCCrypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9E62C216E119D00AA51C2 /* VSCCrypto.framework */; }; - 42D9E638216E11C300AA51C2 /* VirgilCrypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9E614216E119D00AA51C2 /* VirgilCrypto.framework */; }; 42D9E639216E11C300AA51C2 /* VirgilCryptoAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9E5CC216E119000AA51C2 /* VirgilCryptoAPI.framework */; }; - 42D9E63A216E11C300AA51C2 /* VirgilCryptoApiImpl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9E622216E119D00AA51C2 /* VirgilCryptoApiImpl.framework */; }; - 42D9E63B216E11C300AA51C2 /* VirgilSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9E5EB216E119700AA51C2 /* VirgilSDK.framework */; }; - 42D9E63C216E11C300AA51C2 /* VSCCrypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9E62E216E119D00AA51C2 /* VSCCrypto.framework */; }; - 42D9E63D216E11D500AA51C2 /* VirgilCrypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9E618216E119D00AA51C2 /* VirgilCrypto.framework */; }; 42D9E63E216E11D500AA51C2 /* VirgilCryptoAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9E5D0216E119000AA51C2 /* VirgilCryptoAPI.framework */; }; - 42D9E63F216E11D500AA51C2 /* VirgilCryptoApiImpl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9E626216E119D00AA51C2 /* VirgilCryptoApiImpl.framework */; }; - 42D9E640216E11D500AA51C2 /* VirgilSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9E5EF216E119700AA51C2 /* VirgilSDK.framework */; }; - 42D9E641216E11D500AA51C2 /* VSCCrypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9E630216E119D00AA51C2 /* VSCCrypto.framework */; }; - 42D9E642216E11E300AA51C2 /* VirgilCrypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9E61C216E119D00AA51C2 /* VirgilCrypto.framework */; }; 42D9E643216E11E300AA51C2 /* VirgilCryptoAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9E5D4216E119000AA51C2 /* VirgilCryptoAPI.framework */; }; - 42D9E644216E11E300AA51C2 /* VirgilCryptoApiImpl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9E62A216E119D00AA51C2 /* VirgilCryptoApiImpl.framework */; }; - 42D9E645216E11E300AA51C2 /* VirgilSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9E5F5216E119700AA51C2 /* VirgilSDK.framework */; }; - 42D9E646216E11E300AA51C2 /* VSCCrypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9E632216E119D00AA51C2 /* VSCCrypto.framework */; }; - 42D9E650216E123200AA51C2 /* VirgilCrypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9E610216E119D00AA51C2 /* VirgilCrypto.framework */; }; 42D9E651216E123200AA51C2 /* VirgilCryptoAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9E5C8216E119000AA51C2 /* VirgilCryptoAPI.framework */; }; - 42D9E652216E123200AA51C2 /* VirgilCryptoApiImpl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9E61E216E119D00AA51C2 /* VirgilCryptoApiImpl.framework */; }; - 42D9E653216E123200AA51C2 /* VirgilSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9E5E5216E119700AA51C2 /* VirgilSDK.framework */; }; - 42D9E654216E123200AA51C2 /* VSCCrypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9E62C216E119D00AA51C2 /* VSCCrypto.framework */; }; - 42D9E655216E124300AA51C2 /* VirgilCrypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9E614216E119D00AA51C2 /* VirgilCrypto.framework */; }; 42D9E656216E124300AA51C2 /* VirgilCryptoAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9E5CC216E119000AA51C2 /* VirgilCryptoAPI.framework */; }; - 42D9E657216E124300AA51C2 /* VirgilCryptoApiImpl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9E622216E119D00AA51C2 /* VirgilCryptoApiImpl.framework */; }; - 42D9E658216E124300AA51C2 /* VirgilSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9E5EB216E119700AA51C2 /* VirgilSDK.framework */; }; - 42D9E659216E124300AA51C2 /* VSCCrypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9E62E216E119D00AA51C2 /* VSCCrypto.framework */; }; - 42D9E65A216E126000AA51C2 /* VirgilCrypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9E618216E119D00AA51C2 /* VirgilCrypto.framework */; }; 42D9E65B216E126000AA51C2 /* VirgilCryptoAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9E5D0216E119000AA51C2 /* VirgilCryptoAPI.framework */; }; - 42D9E65C216E126000AA51C2 /* VirgilCryptoApiImpl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9E626216E119D00AA51C2 /* VirgilCryptoApiImpl.framework */; }; - 42D9E65D216E126000AA51C2 /* VirgilSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9E5EF216E119700AA51C2 /* VirgilSDK.framework */; }; - 42D9E65E216E126000AA51C2 /* VSCCrypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9E630216E119D00AA51C2 /* VSCCrypto.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 42011E9820CE8FE400B84755 /* PBXContainerItemProxy */ = { + 16DEB7E721C95CDE0028828C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 42B5DFEC20C005300067F13E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 42B5DFF420C005300067F13E; - remoteInfo = "VirgilSDKKeyknox iOS"; + containerPortal = 16DEB7CE21C95CDE0028828C /* VirgilCrypto.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 42F85ECD1DC7469D00C3184C; + remoteInfo = "VirgilCrypto iOS"; }; - 42011E9D20CE8FE800B84755 /* PBXContainerItemProxy */ = { + 16DEB7E921C95CDE0028828C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 42B5DFEC20C005300067F13E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 42011E5720CE8FD400B84755; - remoteInfo = "KeyknoxTestApp iOS"; + containerPortal = 16DEB7CE21C95CDE0028828C /* VirgilCrypto.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 42F85F2D1DC765AC00C3184C; + remoteInfo = "VirgilCrypto iOS Tests"; }; - 42D0578E20EAA1B900FC544E /* PBXContainerItemProxy */ = { + 16DEB7EB21C95CDE0028828C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 42B5DFEC20C005300067F13E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 42B5DFF420C005300067F13E; - remoteInfo = "VirgilSDKKeyknox iOS"; + containerPortal = 16DEB7CE21C95CDE0028828C /* VirgilCrypto.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 423F00301E719EF200CC98A3; + remoteInfo = "VirgilCrypto macOS"; }; - 42D0579020EAA1B900FC544E /* PBXContainerItemProxy */ = { + 16DEB7ED21C95CDE0028828C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 42B5DFEC20C005300067F13E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 42D0571E20EA9FBC00FC544E; - remoteInfo = "VirgilSDKKeyknox macOS"; + containerPortal = 16DEB7CE21C95CDE0028828C /* VirgilCrypto.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 423F00841E71A0FC00CC98A3; + remoteInfo = "VirgilCrypto macOS Tests"; }; - 42D0579220EAA1B900FC544E /* PBXContainerItemProxy */ = { + 16DEB7EF21C95CDE0028828C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 42B5DFEC20C005300067F13E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 42D0576120EAA0CC00FC544E; - remoteInfo = "VirgilSDKKeyknox tvOS"; + containerPortal = 16DEB7CE21C95CDE0028828C /* VirgilCrypto.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 42A01F7C1F7D51FE00FF8804; + remoteInfo = "VirgilCrypto tvOS"; }; - 42D0579420EAA1B900FC544E /* PBXContainerItemProxy */ = { + 16DEB7F121C95CDE0028828C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 42B5DFEC20C005300067F13E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 42D0578120EAA16500FC544E; - remoteInfo = "VirgilSDKKeyknox watchOS"; + containerPortal = 16DEB7CE21C95CDE0028828C /* VirgilCrypto.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 42CDC30A1F6970C700D69111; + remoteInfo = "VirgilCrypto tvOS Tests"; }; - 42D0583220EAA6E100FC544E /* PBXContainerItemProxy */ = { + 16DEB7F321C95CDE0028828C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 42B5DFEC20C005300067F13E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 42D0571E20EA9FBC00FC544E; - remoteInfo = "VirgilSDKKeyknox macOS"; + containerPortal = 16DEB7CE21C95CDE0028828C /* VirgilCrypto.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 42CDC2821F696DB900D69111; + remoteInfo = "VirgilCrypto watchOS"; }; - 42D0584A20EB754C00FC544E /* PBXContainerItemProxy */ = { + 16DEB7F521C95CDE0028828C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 42B5DFEC20C005300067F13E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 42D0579920EAA1FA00FC544E; - remoteInfo = "KeyknoxTestApp tvOS"; + containerPortal = 16DEB7CE21C95CDE0028828C /* VirgilCrypto.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 42B129EB201FD2790082F9BC; + remoteInfo = "VirgilCryptoApiImpl iOS"; }; - 42D0585920EB75E200FC544E /* PBXContainerItemProxy */ = { + 16DEB7F721C95CDE0028828C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 42B5DFEC20C005300067F13E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 42D0576120EAA0CC00FC544E; - remoteInfo = "VirgilSDKKeyknox tvOS"; + containerPortal = 16DEB7CE21C95CDE0028828C /* VirgilCrypto.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 42B12B1E201FDC2E0082F9BC; + remoteInfo = "VirgilCryptoApiImpl iOS Tests"; }; - 42D9E5C7216E119000AA51C2 /* PBXContainerItemProxy */ = { + 16DEB7F921C95CDE0028828C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 42D9E5BC216E118F00AA51C2 /* VirgilCryptoAPI.xcodeproj */; + containerPortal = 16DEB7CE21C95CDE0028828C /* VirgilCrypto.xcodeproj */; proxyType = 2; - remoteGlobalIDString = 428A614A1F67FF0E00D6C057; - remoteInfo = "VirgilCryptoAPI iOS"; + remoteGlobalIDString = 42B12ABF201FD6F70082F9BC; + remoteInfo = "VirgilCryptoApiImpl macOS"; }; - 42D9E5C9216E119000AA51C2 /* PBXContainerItemProxy */ = { + 16DEB7FB21C95CDE0028828C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 42D9E5BC216E118F00AA51C2 /* VirgilCryptoAPI.xcodeproj */; + containerPortal = 16DEB7CE21C95CDE0028828C /* VirgilCrypto.xcodeproj */; proxyType = 2; - remoteGlobalIDString = 428A61A11F681D6A00D6C057; - remoteInfo = "VirgilCryptoAPI iOS Tests"; + remoteGlobalIDString = 42B12B6A201FDCC60082F9BC; + remoteInfo = "VirgilCryptoApiImpl macOS Tests"; }; - 42D9E5CB216E119000AA51C2 /* PBXContainerItemProxy */ = { + 16DEB7FD21C95CDE0028828C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 42D9E5BC216E118F00AA51C2 /* VirgilCryptoAPI.xcodeproj */; + containerPortal = 16DEB7CE21C95CDE0028828C /* VirgilCrypto.xcodeproj */; proxyType = 2; - remoteGlobalIDString = 428A615D1F6800A800D6C057; - remoteInfo = "VirgilCryptoAPI macOS"; + remoteGlobalIDString = 42B12ADB201FD74C0082F9BC; + remoteInfo = "VirgilCryptoApiImpl tvOS"; }; - 42D9E5CD216E119000AA51C2 /* PBXContainerItemProxy */ = { + 16DEB7FF21C95CDE0028828C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 42D9E5BC216E118F00AA51C2 /* VirgilCryptoAPI.xcodeproj */; + containerPortal = 16DEB7CE21C95CDE0028828C /* VirgilCrypto.xcodeproj */; proxyType = 2; - remoteGlobalIDString = 42CDC2201F68209300D69111; - remoteInfo = "VirgilCryptoAPI macOS Tests"; + remoteGlobalIDString = 42B12B79201FDCE00082F9BC; + remoteInfo = "VirgilCryptoApiImpl tvOS Tests"; }; - 42D9E5CF216E119000AA51C2 /* PBXContainerItemProxy */ = { + 16DEB80121C95CDE0028828C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 42D9E5BC216E118F00AA51C2 /* VirgilCryptoAPI.xcodeproj */; + containerPortal = 16DEB7CE21C95CDE0028828C /* VirgilCrypto.xcodeproj */; proxyType = 2; - remoteGlobalIDString = 428A61771F6800DB00D6C057; - remoteInfo = "VirgilCryptoAPI tvOS"; + remoteGlobalIDString = 42B12ACE201FD73F0082F9BC; + remoteInfo = "VirgilCryptoApiImpl watchOS"; }; - 42D9E5D1216E119000AA51C2 /* PBXContainerItemProxy */ = { + 16DEB80321C95CDE0028828C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 42D9E5BC216E118F00AA51C2 /* VirgilCryptoAPI.xcodeproj */; + containerPortal = 16DEB7CE21C95CDE0028828C /* VirgilCrypto.xcodeproj */; proxyType = 2; - remoteGlobalIDString = 42CDC22F1F6820A900D69111; - remoteInfo = "VirgilCryptoAPI tvOS Tests"; + remoteGlobalIDString = 42D61B63202A5843007E0758; + remoteInfo = "VSCCrypto iOS"; }; - 42D9E5D3216E119000AA51C2 /* PBXContainerItemProxy */ = { + 16DEB80521C95CDE0028828C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 42D9E5BC216E118F00AA51C2 /* VirgilCryptoAPI.xcodeproj */; + containerPortal = 16DEB7CE21C95CDE0028828C /* VirgilCrypto.xcodeproj */; proxyType = 2; - remoteGlobalIDString = 428A616A1F6800CA00D6C057; - remoteInfo = "VirgilCryptoAPI watchOS"; + remoteGlobalIDString = 42D61B7E202A58B8007E0758; + remoteInfo = "VSCCrypto macOS"; + }; + 16DEB80721C95CDE0028828C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 16DEB7CE21C95CDE0028828C /* VirgilCrypto.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 42D61B8D202A5963007E0758; + remoteInfo = "VSCCrypto tvOS"; }; - 42D9E5E4216E119700AA51C2 /* PBXContainerItemProxy */ = { + 16DEB80921C95CDE0028828C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 42D9E5D5216E119700AA51C2 /* VirgilSDK.xcodeproj */; + containerPortal = 16DEB7CE21C95CDE0028828C /* VirgilCrypto.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 42D61B9B202A59C4007E0758; + remoteInfo = "VSCCrypto watchOS"; + }; + 16DEB81A21C95CF80028828C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 16DEB80B21C95CF80028828C /* VirgilSDK.xcodeproj */; proxyType = 2; remoteGlobalIDString = 42EB30E41DB8EC17001DF4C0; remoteInfo = "VirgilSDK iOS"; }; - 42D9E5E6216E119700AA51C2 /* PBXContainerItemProxy */ = { + 16DEB81C21C95CF80028828C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 42D9E5D5216E119700AA51C2 /* VirgilSDK.xcodeproj */; + containerPortal = 16DEB80B21C95CF80028828C /* VirgilSDK.xcodeproj */; proxyType = 2; remoteGlobalIDString = 42D0589120EB894500FC544E; remoteInfo = "SDKTestApp iOS"; }; - 42D9E5E8216E119700AA51C2 /* PBXContainerItemProxy */ = { + 16DEB81E21C95CF80028828C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 42D9E5D5216E119700AA51C2 /* VirgilSDK.xcodeproj */; + containerPortal = 16DEB80B21C95CF80028828C /* VirgilSDK.xcodeproj */; proxyType = 2; remoteGlobalIDString = 42D058A720EB896200FC544E; remoteInfo = "VirgilSDK AppTests iOS"; }; - 42D9E5EA216E119700AA51C2 /* PBXContainerItemProxy */ = { + 16DEB82021C95CF80028828C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 42D9E5D5216E119700AA51C2 /* VirgilSDK.xcodeproj */; + containerPortal = 16DEB80B21C95CF80028828C /* VirgilSDK.xcodeproj */; proxyType = 2; remoteGlobalIDString = 422499BA1EB39B380032F556; remoteInfo = "VirgilSDK macOS"; }; - 42D9E5EC216E119700AA51C2 /* PBXContainerItemProxy */ = { + 16DEB82221C95CF80028828C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 42D9E5D5216E119700AA51C2 /* VirgilSDK.xcodeproj */; + containerPortal = 16DEB80B21C95CF80028828C /* VirgilSDK.xcodeproj */; proxyType = 2; remoteGlobalIDString = 422499C21EB39B380032F556; remoteInfo = "VirgilSDK macOS Tests"; }; - 42D9E5EE216E119700AA51C2 /* PBXContainerItemProxy */ = { + 16DEB82421C95CF80028828C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 42D9E5D5216E119700AA51C2 /* VirgilSDK.xcodeproj */; + containerPortal = 16DEB80B21C95CF80028828C /* VirgilSDK.xcodeproj */; proxyType = 2; remoteGlobalIDString = 4284C3861F6BE95700B75491; remoteInfo = "VirgilSDK tvOS"; }; - 42D9E5F0216E119700AA51C2 /* PBXContainerItemProxy */ = { + 16DEB82621C95CF80028828C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 42D9E5D5216E119700AA51C2 /* VirgilSDK.xcodeproj */; + containerPortal = 16DEB80B21C95CF80028828C /* VirgilSDK.xcodeproj */; proxyType = 2; remoteGlobalIDString = 42D058B520EB897200FC544E; remoteInfo = "SDKTestApp tvOS"; }; - 42D9E5F2216E119700AA51C2 /* PBXContainerItemProxy */ = { + 16DEB82821C95CF80028828C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 42D9E5D5216E119700AA51C2 /* VirgilSDK.xcodeproj */; + containerPortal = 16DEB80B21C95CF80028828C /* VirgilSDK.xcodeproj */; proxyType = 2; remoteGlobalIDString = 42D058F420EB89E000FC544E; remoteInfo = "VirgilSDK AppTests tvOS"; }; - 42D9E5F4216E119700AA51C2 /* PBXContainerItemProxy */ = { + 16DEB82A21C95CF80028828C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 42D9E5D5216E119700AA51C2 /* VirgilSDK.xcodeproj */; + containerPortal = 16DEB80B21C95CF80028828C /* VirgilSDK.xcodeproj */; proxyType = 2; remoteGlobalIDString = 4284C3951F6BE97C00B75491; remoteInfo = "VirgilSDK watchOS"; }; - 42D9E60F216E119D00AA51C2 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 42D9E5F6216E119D00AA51C2 /* VirgilCrypto.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 42F85ECD1DC7469D00C3184C; - remoteInfo = "VirgilCrypto iOS"; - }; - 42D9E611216E119D00AA51C2 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 42D9E5F6216E119D00AA51C2 /* VirgilCrypto.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 42F85F2D1DC765AC00C3184C; - remoteInfo = "VirgilCrypto iOS Tests"; - }; - 42D9E613216E119D00AA51C2 /* PBXContainerItemProxy */ = { + 42011E9820CE8FE400B84755 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 42D9E5F6216E119D00AA51C2 /* VirgilCrypto.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 423F00301E719EF200CC98A3; - remoteInfo = "VirgilCrypto macOS"; + containerPortal = 42B5DFEC20C005300067F13E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 42B5DFF420C005300067F13E; + remoteInfo = "VirgilSDKKeyknox iOS"; }; - 42D9E615216E119D00AA51C2 /* PBXContainerItemProxy */ = { + 42011E9D20CE8FE800B84755 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 42D9E5F6216E119D00AA51C2 /* VirgilCrypto.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 423F00841E71A0FC00CC98A3; - remoteInfo = "VirgilCrypto macOS Tests"; + containerPortal = 42B5DFEC20C005300067F13E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 42011E5720CE8FD400B84755; + remoteInfo = "KeyknoxTestApp iOS"; }; - 42D9E617216E119D00AA51C2 /* PBXContainerItemProxy */ = { + 42D0578E20EAA1B900FC544E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 42D9E5F6216E119D00AA51C2 /* VirgilCrypto.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 42A01F7C1F7D51FE00FF8804; - remoteInfo = "VirgilCrypto tvOS"; + containerPortal = 42B5DFEC20C005300067F13E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 42B5DFF420C005300067F13E; + remoteInfo = "VirgilSDKKeyknox iOS"; }; - 42D9E619216E119D00AA51C2 /* PBXContainerItemProxy */ = { + 42D0579020EAA1B900FC544E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 42D9E5F6216E119D00AA51C2 /* VirgilCrypto.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 42CDC30A1F6970C700D69111; - remoteInfo = "VirgilCrypto tvOS Tests"; + containerPortal = 42B5DFEC20C005300067F13E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 42D0571E20EA9FBC00FC544E; + remoteInfo = "VirgilSDKKeyknox macOS"; }; - 42D9E61B216E119D00AA51C2 /* PBXContainerItemProxy */ = { + 42D0579220EAA1B900FC544E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 42D9E5F6216E119D00AA51C2 /* VirgilCrypto.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 42CDC2821F696DB900D69111; - remoteInfo = "VirgilCrypto watchOS"; + containerPortal = 42B5DFEC20C005300067F13E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 42D0576120EAA0CC00FC544E; + remoteInfo = "VirgilSDKKeyknox tvOS"; }; - 42D9E61D216E119D00AA51C2 /* PBXContainerItemProxy */ = { + 42D0579420EAA1B900FC544E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 42D9E5F6216E119D00AA51C2 /* VirgilCrypto.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 42B129EB201FD2790082F9BC; - remoteInfo = "VirgilCryptoApiImpl iOS"; + containerPortal = 42B5DFEC20C005300067F13E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 42D0578120EAA16500FC544E; + remoteInfo = "VirgilSDKKeyknox watchOS"; }; - 42D9E61F216E119D00AA51C2 /* PBXContainerItemProxy */ = { + 42D0583220EAA6E100FC544E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 42D9E5F6216E119D00AA51C2 /* VirgilCrypto.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 42B12B1E201FDC2E0082F9BC; - remoteInfo = "VirgilCryptoApiImpl iOS Tests"; + containerPortal = 42B5DFEC20C005300067F13E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 42D0571E20EA9FBC00FC544E; + remoteInfo = "VirgilSDKKeyknox macOS"; }; - 42D9E621216E119D00AA51C2 /* PBXContainerItemProxy */ = { + 42D0584A20EB754C00FC544E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 42D9E5F6216E119D00AA51C2 /* VirgilCrypto.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 42B12ABF201FD6F70082F9BC; - remoteInfo = "VirgilCryptoApiImpl macOS"; + containerPortal = 42B5DFEC20C005300067F13E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 42D0579920EAA1FA00FC544E; + remoteInfo = "KeyknoxTestApp tvOS"; }; - 42D9E623216E119D00AA51C2 /* PBXContainerItemProxy */ = { + 42D0585920EB75E200FC544E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 42D9E5F6216E119D00AA51C2 /* VirgilCrypto.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 42B12B6A201FDCC60082F9BC; - remoteInfo = "VirgilCryptoApiImpl macOS Tests"; + containerPortal = 42B5DFEC20C005300067F13E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 42D0576120EAA0CC00FC544E; + remoteInfo = "VirgilSDKKeyknox tvOS"; }; - 42D9E625216E119D00AA51C2 /* PBXContainerItemProxy */ = { + 42D9E5C7216E119000AA51C2 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 42D9E5F6216E119D00AA51C2 /* VirgilCrypto.xcodeproj */; + containerPortal = 42D9E5BC216E118F00AA51C2 /* VirgilCryptoAPI.xcodeproj */; proxyType = 2; - remoteGlobalIDString = 42B12ADB201FD74C0082F9BC; - remoteInfo = "VirgilCryptoApiImpl tvOS"; + remoteGlobalIDString = 428A614A1F67FF0E00D6C057; + remoteInfo = "VirgilCryptoAPI iOS"; }; - 42D9E627216E119D00AA51C2 /* PBXContainerItemProxy */ = { + 42D9E5C9216E119000AA51C2 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 42D9E5F6216E119D00AA51C2 /* VirgilCrypto.xcodeproj */; + containerPortal = 42D9E5BC216E118F00AA51C2 /* VirgilCryptoAPI.xcodeproj */; proxyType = 2; - remoteGlobalIDString = 42B12B79201FDCE00082F9BC; - remoteInfo = "VirgilCryptoApiImpl tvOS Tests"; + remoteGlobalIDString = 428A61A11F681D6A00D6C057; + remoteInfo = "VirgilCryptoAPI iOS Tests"; }; - 42D9E629216E119D00AA51C2 /* PBXContainerItemProxy */ = { + 42D9E5CB216E119000AA51C2 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 42D9E5F6216E119D00AA51C2 /* VirgilCrypto.xcodeproj */; + containerPortal = 42D9E5BC216E118F00AA51C2 /* VirgilCryptoAPI.xcodeproj */; proxyType = 2; - remoteGlobalIDString = 42B12ACE201FD73F0082F9BC; - remoteInfo = "VirgilCryptoApiImpl watchOS"; + remoteGlobalIDString = 428A615D1F6800A800D6C057; + remoteInfo = "VirgilCryptoAPI macOS"; }; - 42D9E62B216E119D00AA51C2 /* PBXContainerItemProxy */ = { + 42D9E5CD216E119000AA51C2 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 42D9E5F6216E119D00AA51C2 /* VirgilCrypto.xcodeproj */; + containerPortal = 42D9E5BC216E118F00AA51C2 /* VirgilCryptoAPI.xcodeproj */; proxyType = 2; - remoteGlobalIDString = 42D61B63202A5843007E0758; - remoteInfo = "VSCCrypto iOS"; + remoteGlobalIDString = 42CDC2201F68209300D69111; + remoteInfo = "VirgilCryptoAPI macOS Tests"; }; - 42D9E62D216E119D00AA51C2 /* PBXContainerItemProxy */ = { + 42D9E5CF216E119000AA51C2 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 42D9E5F6216E119D00AA51C2 /* VirgilCrypto.xcodeproj */; + containerPortal = 42D9E5BC216E118F00AA51C2 /* VirgilCryptoAPI.xcodeproj */; proxyType = 2; - remoteGlobalIDString = 42D61B7E202A58B8007E0758; - remoteInfo = "VSCCrypto macOS"; + remoteGlobalIDString = 428A61771F6800DB00D6C057; + remoteInfo = "VirgilCryptoAPI tvOS"; }; - 42D9E62F216E119D00AA51C2 /* PBXContainerItemProxy */ = { + 42D9E5D1216E119000AA51C2 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 42D9E5F6216E119D00AA51C2 /* VirgilCrypto.xcodeproj */; + containerPortal = 42D9E5BC216E118F00AA51C2 /* VirgilCryptoAPI.xcodeproj */; proxyType = 2; - remoteGlobalIDString = 42D61B8D202A5963007E0758; - remoteInfo = "VSCCrypto tvOS"; + remoteGlobalIDString = 42CDC22F1F6820A900D69111; + remoteInfo = "VirgilCryptoAPI tvOS Tests"; }; - 42D9E631216E119D00AA51C2 /* PBXContainerItemProxy */ = { + 42D9E5D3216E119000AA51C2 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 42D9E5F6216E119D00AA51C2 /* VirgilCrypto.xcodeproj */; + containerPortal = 42D9E5BC216E118F00AA51C2 /* VirgilCryptoAPI.xcodeproj */; proxyType = 2; - remoteGlobalIDString = 42D61B9B202A59C4007E0758; - remoteInfo = "VSCCrypto watchOS"; + remoteGlobalIDString = 428A616A1F6800CA00D6C057; + remoteInfo = "VirgilCryptoAPI watchOS"; }; /* End PBXContainerItemProxy section */ @@ -536,6 +524,8 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 16DEB7CE21C95CDE0028828C /* VirgilCrypto.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = VirgilCrypto.xcodeproj; path = "Carthage/Checkouts/virgil-crypto-x/VirgilCrypto.xcodeproj"; sourceTree = ""; }; + 16DEB80B21C95CF80028828C /* VirgilSDK.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = VirgilSDK.xcodeproj; path = "Carthage/Checkouts/virgil-sdk-x/VirgilSDK.xcodeproj"; sourceTree = ""; }; 42011DBD20CACC5400B84755 /* CloudEntry.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CloudEntry.swift; sourceTree = ""; }; 42011DE320CACFEE00B84755 /* VSK004_SyncKeyStorageTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VSK004_SyncKeyStorageTests.swift; sourceTree = ""; }; 42011E5820CE8FD400B84755 /* KeyknoxTestApp iOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "KeyknoxTestApp iOS.app"; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -594,8 +584,6 @@ 42D0582C20EAA6E100FC544E /* VirgilSDKKeyknox macOS Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "VirgilSDKKeyknox macOS Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 42D0584520EB754C00FC544E /* VirgilSDKKeyknox AppTests tvOS.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "VirgilSDKKeyknox AppTests tvOS.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 42D9E5BC216E118F00AA51C2 /* VirgilCryptoAPI.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = VirgilCryptoAPI.xcodeproj; path = "Carthage/Checkouts/cryptoapi-x/VirgilCryptoAPI.xcodeproj"; sourceTree = ""; }; - 42D9E5D5216E119700AA51C2 /* VirgilSDK.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = VirgilSDK.xcodeproj; path = "Carthage/Checkouts/sdk-x/VirgilSDK.xcodeproj"; sourceTree = ""; }; - 42D9E5F6216E119D00AA51C2 /* VirgilCrypto.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = VirgilCrypto.xcodeproj; path = "Carthage/Checkouts/crypto-x/VirgilCrypto.xcodeproj"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -610,11 +598,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 42D9E650216E123200AA51C2 /* VirgilCrypto.framework in Frameworks */, 42D9E651216E123200AA51C2 /* VirgilCryptoAPI.framework in Frameworks */, - 42D9E652216E123200AA51C2 /* VirgilCryptoApiImpl.framework in Frameworks */, - 42D9E653216E123200AA51C2 /* VirgilSDK.framework in Frameworks */, - 42D9E654216E123200AA51C2 /* VSCCrypto.framework in Frameworks */, 42011E9720CE8FE400B84755 /* VirgilSDKKeyknox.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -623,11 +607,11 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 42D9E633216E11B300AA51C2 /* VirgilCrypto.framework in Frameworks */, 42D9E634216E11B300AA51C2 /* VirgilCryptoAPI.framework in Frameworks */, - 42D9E635216E11B300AA51C2 /* VirgilCryptoApiImpl.framework in Frameworks */, - 42D9E636216E11B300AA51C2 /* VirgilSDK.framework in Frameworks */, - 42D9E637216E11B300AA51C2 /* VSCCrypto.framework in Frameworks */, + 16DEB82E21C95D660028828C /* VSCCrypto.framework in Frameworks */, + 16DEB82D21C95D5F0028828C /* VirgilCrypto.framework in Frameworks */, + 16DEB82F21C95DA30028828C /* VirgilCryptoApiImpl.framework in Frameworks */, + 16DEB82C21C95D570028828C /* VirgilSDK.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -635,11 +619,11 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 42D9E638216E11C300AA51C2 /* VirgilCrypto.framework in Frameworks */, 42D9E639216E11C300AA51C2 /* VirgilCryptoAPI.framework in Frameworks */, - 42D9E63A216E11C300AA51C2 /* VirgilCryptoApiImpl.framework in Frameworks */, - 42D9E63B216E11C300AA51C2 /* VirgilSDK.framework in Frameworks */, - 42D9E63C216E11C300AA51C2 /* VSCCrypto.framework in Frameworks */, + 16DEB83221C95E020028828C /* VSCCrypto.framework in Frameworks */, + 16DEB83121C95DFC0028828C /* VirgilCrypto.framework in Frameworks */, + 16DEB83021C95DF70028828C /* VirgilCryptoApiImpl.framework in Frameworks */, + 16DEB83321C95E150028828C /* VirgilSDK.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -647,11 +631,11 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 42D9E63D216E11D500AA51C2 /* VirgilCrypto.framework in Frameworks */, 42D9E63E216E11D500AA51C2 /* VirgilCryptoAPI.framework in Frameworks */, - 42D9E63F216E11D500AA51C2 /* VirgilCryptoApiImpl.framework in Frameworks */, - 42D9E640216E11D500AA51C2 /* VirgilSDK.framework in Frameworks */, - 42D9E641216E11D500AA51C2 /* VSCCrypto.framework in Frameworks */, + 16DEB83621C95E440028828C /* VSCCrypto.framework in Frameworks */, + 16DEB83521C95E400028828C /* VirgilCrypto.framework in Frameworks */, + 16DEB83421C95E370028828C /* VirgilCryptoApiImpl.framework in Frameworks */, + 16DEB83721C95E530028828C /* VirgilSDK.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -659,11 +643,11 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 42D9E642216E11E300AA51C2 /* VirgilCrypto.framework in Frameworks */, 42D9E643216E11E300AA51C2 /* VirgilCryptoAPI.framework in Frameworks */, - 42D9E644216E11E300AA51C2 /* VirgilCryptoApiImpl.framework in Frameworks */, - 42D9E645216E11E300AA51C2 /* VirgilSDK.framework in Frameworks */, - 42D9E646216E11E300AA51C2 /* VSCCrypto.framework in Frameworks */, + 16DEB83A21C95E9E0028828C /* VSCCrypto.framework in Frameworks */, + 16DEB83921C95E9B0028828C /* VirgilCrypto.framework in Frameworks */, + 16DEB83821C95E970028828C /* VirgilCryptoApiImpl.framework in Frameworks */, + 16DEB83B21C95EAB0028828C /* VirgilSDK.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -678,11 +662,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 42D9E655216E124300AA51C2 /* VirgilCrypto.framework in Frameworks */, 42D9E656216E124300AA51C2 /* VirgilCryptoAPI.framework in Frameworks */, - 42D9E657216E124300AA51C2 /* VirgilCryptoApiImpl.framework in Frameworks */, - 42D9E658216E124300AA51C2 /* VirgilSDK.framework in Frameworks */, - 42D9E659216E124300AA51C2 /* VSCCrypto.framework in Frameworks */, 42D0583120EAA6E100FC544E /* VirgilSDKKeyknox.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -691,17 +671,54 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 42D9E65A216E126000AA51C2 /* VirgilCrypto.framework in Frameworks */, 42D9E65B216E126000AA51C2 /* VirgilCryptoAPI.framework in Frameworks */, - 42D9E65C216E126000AA51C2 /* VirgilCryptoApiImpl.framework in Frameworks */, - 42D9E65D216E126000AA51C2 /* VirgilSDK.framework in Frameworks */, - 42D9E65E216E126000AA51C2 /* VSCCrypto.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 16DEB7CF21C95CDE0028828C /* Products */ = { + isa = PBXGroup; + children = ( + 16DEB7E821C95CDE0028828C /* VirgilCrypto.framework */, + 16DEB7EA21C95CDE0028828C /* VirgilCrypto iOS Tests.xctest */, + 16DEB7EC21C95CDE0028828C /* VirgilCrypto.framework */, + 16DEB7EE21C95CDE0028828C /* VirgilCrypto macOS Tests.xctest */, + 16DEB7F021C95CDE0028828C /* VirgilCrypto.framework */, + 16DEB7F221C95CDE0028828C /* VirgilCrypto tvOS Tests.xctest */, + 16DEB7F421C95CDE0028828C /* VirgilCrypto.framework */, + 16DEB7F621C95CDE0028828C /* VirgilCryptoApiImpl.framework */, + 16DEB7F821C95CDE0028828C /* VirgilCryptoApiImpl iOS Tests.xctest */, + 16DEB7FA21C95CDE0028828C /* VirgilCryptoApiImpl.framework */, + 16DEB7FC21C95CDE0028828C /* VirgilCryptoApiImpl macOS Tests.xctest */, + 16DEB7FE21C95CDE0028828C /* VirgilCryptoApiImpl.framework */, + 16DEB80021C95CDE0028828C /* VirgilCryptoApiImpl tvOS Tests.xctest */, + 16DEB80221C95CDE0028828C /* VirgilCryptoApiImpl.framework */, + 16DEB80421C95CDE0028828C /* VSCCrypto.framework */, + 16DEB80621C95CDE0028828C /* VSCCrypto.framework */, + 16DEB80821C95CDE0028828C /* VSCCrypto.framework */, + 16DEB80A21C95CDE0028828C /* VSCCrypto.framework */, + ); + name = Products; + sourceTree = ""; + }; + 16DEB80C21C95CF80028828C /* Products */ = { + isa = PBXGroup; + children = ( + 16DEB81B21C95CF80028828C /* VirgilSDK.framework */, + 16DEB81D21C95CF80028828C /* SDKTestApp iOS.app */, + 16DEB81F21C95CF80028828C /* VirgilSDK AppTests iOS.xctest */, + 16DEB82121C95CF80028828C /* VirgilSDK.framework */, + 16DEB82321C95CF80028828C /* VirgilSDK macOS Tests.xctest */, + 16DEB82521C95CF80028828C /* VirgilSDK.framework */, + 16DEB82721C95CF80028828C /* SDKTestApp tvOS.app */, + 16DEB82921C95CF80028828C /* VirgilSDK AppTests tvOS.xctest */, + 16DEB82B21C95CF80028828C /* VirgilSDK.framework */, + ); + name = Products; + sourceTree = ""; + }; 42011E5920CE8FD400B84755 /* KeyknoxTestApp iOS */ = { isa = PBXGroup; children = ( @@ -768,8 +785,8 @@ isa = PBXGroup; children = ( 42D9E5BC216E118F00AA51C2 /* VirgilCryptoAPI.xcodeproj */, - 42D9E5D5216E119700AA51C2 /* VirgilSDK.xcodeproj */, - 42D9E5F6216E119D00AA51C2 /* VirgilCrypto.xcodeproj */, + 16DEB7CE21C95CDE0028828C /* VirgilCrypto.xcodeproj */, + 16DEB80B21C95CF80028828C /* VirgilSDK.xcodeproj */, 42B5DFF720C005300067F13E /* VirgilSDKKeyknox */, 42B5E01A20C011380067F13E /* Source */, 42B5E01620C00E320067F13E /* Tests */, @@ -894,47 +911,6 @@ name = Products; sourceTree = ""; }; - 42D9E5D6216E119700AA51C2 /* Products */ = { - isa = PBXGroup; - children = ( - 42D9E5E5216E119700AA51C2 /* VirgilSDK.framework */, - 42D9E5E7216E119700AA51C2 /* SDKTestApp iOS.app */, - 42D9E5E9216E119700AA51C2 /* VirgilSDK AppTests iOS.xctest */, - 42D9E5EB216E119700AA51C2 /* VirgilSDK.framework */, - 42D9E5ED216E119700AA51C2 /* VirgilSDK macOS Tests.xctest */, - 42D9E5EF216E119700AA51C2 /* VirgilSDK.framework */, - 42D9E5F1216E119700AA51C2 /* SDKTestApp tvOS.app */, - 42D9E5F3216E119700AA51C2 /* VirgilSDK AppTests tvOS.xctest */, - 42D9E5F5216E119700AA51C2 /* VirgilSDK.framework */, - ); - name = Products; - sourceTree = ""; - }; - 42D9E5F7216E119D00AA51C2 /* Products */ = { - isa = PBXGroup; - children = ( - 42D9E610216E119D00AA51C2 /* VirgilCrypto.framework */, - 42D9E612216E119D00AA51C2 /* VirgilCrypto iOS Tests.xctest */, - 42D9E614216E119D00AA51C2 /* VirgilCrypto.framework */, - 42D9E616216E119D00AA51C2 /* VirgilCrypto macOS Tests.xctest */, - 42D9E618216E119D00AA51C2 /* VirgilCrypto.framework */, - 42D9E61A216E119D00AA51C2 /* VirgilCrypto tvOS Tests.xctest */, - 42D9E61C216E119D00AA51C2 /* VirgilCrypto.framework */, - 42D9E61E216E119D00AA51C2 /* VirgilCryptoApiImpl.framework */, - 42D9E620216E119D00AA51C2 /* VirgilCryptoApiImpl iOS Tests.xctest */, - 42D9E622216E119D00AA51C2 /* VirgilCryptoApiImpl.framework */, - 42D9E624216E119D00AA51C2 /* VirgilCryptoApiImpl macOS Tests.xctest */, - 42D9E626216E119D00AA51C2 /* VirgilCryptoApiImpl.framework */, - 42D9E628216E119D00AA51C2 /* VirgilCryptoApiImpl tvOS Tests.xctest */, - 42D9E62A216E119D00AA51C2 /* VirgilCryptoApiImpl.framework */, - 42D9E62C216E119D00AA51C2 /* VSCCrypto.framework */, - 42D9E62E216E119D00AA51C2 /* VSCCrypto.framework */, - 42D9E630216E119D00AA51C2 /* VSCCrypto.framework */, - 42D9E632216E119D00AA51C2 /* VSCCrypto.framework */, - ); - name = Products; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ @@ -1200,16 +1176,16 @@ projectDirPath = ""; projectReferences = ( { - ProductGroup = 42D9E5F7216E119D00AA51C2 /* Products */; - ProjectRef = 42D9E5F6216E119D00AA51C2 /* VirgilCrypto.xcodeproj */; + ProductGroup = 16DEB7CF21C95CDE0028828C /* Products */; + ProjectRef = 16DEB7CE21C95CDE0028828C /* VirgilCrypto.xcodeproj */; }, { ProductGroup = 42D9E5BD216E118F00AA51C2 /* Products */; ProjectRef = 42D9E5BC216E118F00AA51C2 /* VirgilCryptoAPI.xcodeproj */; }, { - ProductGroup = 42D9E5D6216E119700AA51C2 /* Products */; - ProjectRef = 42D9E5D5216E119700AA51C2 /* VirgilSDK.xcodeproj */; + ProductGroup = 16DEB80C21C95CF80028828C /* Products */; + ProjectRef = 16DEB80B21C95CF80028828C /* VirgilSDK.xcodeproj */; }, ); projectRoot = ""; @@ -1229,242 +1205,242 @@ /* End PBXProject section */ /* Begin PBXReferenceProxy section */ - 42D9E5C8216E119000AA51C2 /* VirgilCryptoAPI.framework */ = { + 16DEB7E821C95CDE0028828C /* VirgilCrypto.framework */ = { isa = PBXReferenceProxy; fileType = wrapper.framework; - path = VirgilCryptoAPI.framework; - remoteRef = 42D9E5C7216E119000AA51C2 /* PBXContainerItemProxy */; + path = VirgilCrypto.framework; + remoteRef = 16DEB7E721C95CDE0028828C /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 42D9E5CA216E119000AA51C2 /* VirgilCryptoAPI iOS Tests.xctest */ = { + 16DEB7EA21C95CDE0028828C /* VirgilCrypto iOS Tests.xctest */ = { isa = PBXReferenceProxy; fileType = wrapper.cfbundle; - path = "VirgilCryptoAPI iOS Tests.xctest"; - remoteRef = 42D9E5C9216E119000AA51C2 /* PBXContainerItemProxy */; + path = "VirgilCrypto iOS Tests.xctest"; + remoteRef = 16DEB7E921C95CDE0028828C /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 42D9E5CC216E119000AA51C2 /* VirgilCryptoAPI.framework */ = { + 16DEB7EC21C95CDE0028828C /* VirgilCrypto.framework */ = { isa = PBXReferenceProxy; fileType = wrapper.framework; - path = VirgilCryptoAPI.framework; - remoteRef = 42D9E5CB216E119000AA51C2 /* PBXContainerItemProxy */; + path = VirgilCrypto.framework; + remoteRef = 16DEB7EB21C95CDE0028828C /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 42D9E5CE216E119000AA51C2 /* VirgilCryptoAPI macOS Tests.xctest */ = { + 16DEB7EE21C95CDE0028828C /* VirgilCrypto macOS Tests.xctest */ = { isa = PBXReferenceProxy; fileType = wrapper.cfbundle; - path = "VirgilCryptoAPI macOS Tests.xctest"; - remoteRef = 42D9E5CD216E119000AA51C2 /* PBXContainerItemProxy */; + path = "VirgilCrypto macOS Tests.xctest"; + remoteRef = 16DEB7ED21C95CDE0028828C /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 42D9E5D0216E119000AA51C2 /* VirgilCryptoAPI.framework */ = { + 16DEB7F021C95CDE0028828C /* VirgilCrypto.framework */ = { isa = PBXReferenceProxy; fileType = wrapper.framework; - path = VirgilCryptoAPI.framework; - remoteRef = 42D9E5CF216E119000AA51C2 /* PBXContainerItemProxy */; + path = VirgilCrypto.framework; + remoteRef = 16DEB7EF21C95CDE0028828C /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 42D9E5D2216E119000AA51C2 /* VirgilCryptoAPI tvOS Tests.xctest */ = { + 16DEB7F221C95CDE0028828C /* VirgilCrypto tvOS Tests.xctest */ = { isa = PBXReferenceProxy; fileType = wrapper.cfbundle; - path = "VirgilCryptoAPI tvOS Tests.xctest"; - remoteRef = 42D9E5D1216E119000AA51C2 /* PBXContainerItemProxy */; + path = "VirgilCrypto tvOS Tests.xctest"; + remoteRef = 16DEB7F121C95CDE0028828C /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 42D9E5D4216E119000AA51C2 /* VirgilCryptoAPI.framework */ = { + 16DEB7F421C95CDE0028828C /* VirgilCrypto.framework */ = { isa = PBXReferenceProxy; fileType = wrapper.framework; - path = VirgilCryptoAPI.framework; - remoteRef = 42D9E5D3216E119000AA51C2 /* PBXContainerItemProxy */; + path = VirgilCrypto.framework; + remoteRef = 16DEB7F321C95CDE0028828C /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 42D9E5E5216E119700AA51C2 /* VirgilSDK.framework */ = { + 16DEB7F621C95CDE0028828C /* VirgilCryptoApiImpl.framework */ = { isa = PBXReferenceProxy; fileType = wrapper.framework; - path = VirgilSDK.framework; - remoteRef = 42D9E5E4216E119700AA51C2 /* PBXContainerItemProxy */; + path = VirgilCryptoApiImpl.framework; + remoteRef = 16DEB7F521C95CDE0028828C /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 42D9E5E7216E119700AA51C2 /* SDKTestApp iOS.app */ = { + 16DEB7F821C95CDE0028828C /* VirgilCryptoApiImpl iOS Tests.xctest */ = { isa = PBXReferenceProxy; - fileType = wrapper.application; - path = "SDKTestApp iOS.app"; - remoteRef = 42D9E5E6216E119700AA51C2 /* PBXContainerItemProxy */; + fileType = wrapper.cfbundle; + path = "VirgilCryptoApiImpl iOS Tests.xctest"; + remoteRef = 16DEB7F721C95CDE0028828C /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 42D9E5E9216E119700AA51C2 /* VirgilSDK AppTests iOS.xctest */ = { + 16DEB7FA21C95CDE0028828C /* VirgilCryptoApiImpl.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = VirgilCryptoApiImpl.framework; + remoteRef = 16DEB7F921C95CDE0028828C /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 16DEB7FC21C95CDE0028828C /* VirgilCryptoApiImpl macOS Tests.xctest */ = { isa = PBXReferenceProxy; fileType = wrapper.cfbundle; - path = "VirgilSDK AppTests iOS.xctest"; - remoteRef = 42D9E5E8216E119700AA51C2 /* PBXContainerItemProxy */; + path = "VirgilCryptoApiImpl macOS Tests.xctest"; + remoteRef = 16DEB7FB21C95CDE0028828C /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 42D9E5EB216E119700AA51C2 /* VirgilSDK.framework */ = { + 16DEB7FE21C95CDE0028828C /* VirgilCryptoApiImpl.framework */ = { isa = PBXReferenceProxy; fileType = wrapper.framework; - path = VirgilSDK.framework; - remoteRef = 42D9E5EA216E119700AA51C2 /* PBXContainerItemProxy */; + path = VirgilCryptoApiImpl.framework; + remoteRef = 16DEB7FD21C95CDE0028828C /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 42D9E5ED216E119700AA51C2 /* VirgilSDK macOS Tests.xctest */ = { + 16DEB80021C95CDE0028828C /* VirgilCryptoApiImpl tvOS Tests.xctest */ = { isa = PBXReferenceProxy; fileType = wrapper.cfbundle; - path = "VirgilSDK macOS Tests.xctest"; - remoteRef = 42D9E5EC216E119700AA51C2 /* PBXContainerItemProxy */; + path = "VirgilCryptoApiImpl tvOS Tests.xctest"; + remoteRef = 16DEB7FF21C95CDE0028828C /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 42D9E5EF216E119700AA51C2 /* VirgilSDK.framework */ = { + 16DEB80221C95CDE0028828C /* VirgilCryptoApiImpl.framework */ = { isa = PBXReferenceProxy; fileType = wrapper.framework; - path = VirgilSDK.framework; - remoteRef = 42D9E5EE216E119700AA51C2 /* PBXContainerItemProxy */; + path = VirgilCryptoApiImpl.framework; + remoteRef = 16DEB80121C95CDE0028828C /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 42D9E5F1216E119700AA51C2 /* SDKTestApp tvOS.app */ = { + 16DEB80421C95CDE0028828C /* VSCCrypto.framework */ = { isa = PBXReferenceProxy; - fileType = wrapper.application; - path = "SDKTestApp tvOS.app"; - remoteRef = 42D9E5F0216E119700AA51C2 /* PBXContainerItemProxy */; + fileType = wrapper.framework; + path = VSCCrypto.framework; + remoteRef = 16DEB80321C95CDE0028828C /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 42D9E5F3216E119700AA51C2 /* VirgilSDK AppTests tvOS.xctest */ = { + 16DEB80621C95CDE0028828C /* VSCCrypto.framework */ = { isa = PBXReferenceProxy; - fileType = wrapper.cfbundle; - path = "VirgilSDK AppTests tvOS.xctest"; - remoteRef = 42D9E5F2216E119700AA51C2 /* PBXContainerItemProxy */; + fileType = wrapper.framework; + path = VSCCrypto.framework; + remoteRef = 16DEB80521C95CDE0028828C /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 42D9E5F5216E119700AA51C2 /* VirgilSDK.framework */ = { + 16DEB80821C95CDE0028828C /* VSCCrypto.framework */ = { isa = PBXReferenceProxy; fileType = wrapper.framework; - path = VirgilSDK.framework; - remoteRef = 42D9E5F4216E119700AA51C2 /* PBXContainerItemProxy */; + path = VSCCrypto.framework; + remoteRef = 16DEB80721C95CDE0028828C /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 42D9E610216E119D00AA51C2 /* VirgilCrypto.framework */ = { + 16DEB80A21C95CDE0028828C /* VSCCrypto.framework */ = { isa = PBXReferenceProxy; fileType = wrapper.framework; - path = VirgilCrypto.framework; - remoteRef = 42D9E60F216E119D00AA51C2 /* PBXContainerItemProxy */; + path = VSCCrypto.framework; + remoteRef = 16DEB80921C95CDE0028828C /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 42D9E612216E119D00AA51C2 /* VirgilCrypto iOS Tests.xctest */ = { + 16DEB81B21C95CF80028828C /* VirgilSDK.framework */ = { isa = PBXReferenceProxy; - fileType = wrapper.cfbundle; - path = "VirgilCrypto iOS Tests.xctest"; - remoteRef = 42D9E611216E119D00AA51C2 /* PBXContainerItemProxy */; + fileType = wrapper.framework; + path = VirgilSDK.framework; + remoteRef = 16DEB81A21C95CF80028828C /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 42D9E614216E119D00AA51C2 /* VirgilCrypto.framework */ = { + 16DEB81D21C95CF80028828C /* SDKTestApp iOS.app */ = { isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = VirgilCrypto.framework; - remoteRef = 42D9E613216E119D00AA51C2 /* PBXContainerItemProxy */; + fileType = wrapper.application; + path = "SDKTestApp iOS.app"; + remoteRef = 16DEB81C21C95CF80028828C /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 42D9E616216E119D00AA51C2 /* VirgilCrypto macOS Tests.xctest */ = { + 16DEB81F21C95CF80028828C /* VirgilSDK AppTests iOS.xctest */ = { isa = PBXReferenceProxy; fileType = wrapper.cfbundle; - path = "VirgilCrypto macOS Tests.xctest"; - remoteRef = 42D9E615216E119D00AA51C2 /* PBXContainerItemProxy */; + path = "VirgilSDK AppTests iOS.xctest"; + remoteRef = 16DEB81E21C95CF80028828C /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 42D9E618216E119D00AA51C2 /* VirgilCrypto.framework */ = { + 16DEB82121C95CF80028828C /* VirgilSDK.framework */ = { isa = PBXReferenceProxy; fileType = wrapper.framework; - path = VirgilCrypto.framework; - remoteRef = 42D9E617216E119D00AA51C2 /* PBXContainerItemProxy */; + path = VirgilSDK.framework; + remoteRef = 16DEB82021C95CF80028828C /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 42D9E61A216E119D00AA51C2 /* VirgilCrypto tvOS Tests.xctest */ = { + 16DEB82321C95CF80028828C /* VirgilSDK macOS Tests.xctest */ = { isa = PBXReferenceProxy; fileType = wrapper.cfbundle; - path = "VirgilCrypto tvOS Tests.xctest"; - remoteRef = 42D9E619216E119D00AA51C2 /* PBXContainerItemProxy */; + path = "VirgilSDK macOS Tests.xctest"; + remoteRef = 16DEB82221C95CF80028828C /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 42D9E61C216E119D00AA51C2 /* VirgilCrypto.framework */ = { + 16DEB82521C95CF80028828C /* VirgilSDK.framework */ = { isa = PBXReferenceProxy; fileType = wrapper.framework; - path = VirgilCrypto.framework; - remoteRef = 42D9E61B216E119D00AA51C2 /* PBXContainerItemProxy */; + path = VirgilSDK.framework; + remoteRef = 16DEB82421C95CF80028828C /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 42D9E61E216E119D00AA51C2 /* VirgilCryptoApiImpl.framework */ = { + 16DEB82721C95CF80028828C /* SDKTestApp tvOS.app */ = { isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = VirgilCryptoApiImpl.framework; - remoteRef = 42D9E61D216E119D00AA51C2 /* PBXContainerItemProxy */; + fileType = wrapper.application; + path = "SDKTestApp tvOS.app"; + remoteRef = 16DEB82621C95CF80028828C /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 42D9E620216E119D00AA51C2 /* VirgilCryptoApiImpl iOS Tests.xctest */ = { + 16DEB82921C95CF80028828C /* VirgilSDK AppTests tvOS.xctest */ = { isa = PBXReferenceProxy; fileType = wrapper.cfbundle; - path = "VirgilCryptoApiImpl iOS Tests.xctest"; - remoteRef = 42D9E61F216E119D00AA51C2 /* PBXContainerItemProxy */; + path = "VirgilSDK AppTests tvOS.xctest"; + remoteRef = 16DEB82821C95CF80028828C /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 42D9E622216E119D00AA51C2 /* VirgilCryptoApiImpl.framework */ = { + 16DEB82B21C95CF80028828C /* VirgilSDK.framework */ = { isa = PBXReferenceProxy; fileType = wrapper.framework; - path = VirgilCryptoApiImpl.framework; - remoteRef = 42D9E621216E119D00AA51C2 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 42D9E624216E119D00AA51C2 /* VirgilCryptoApiImpl macOS Tests.xctest */ = { - isa = PBXReferenceProxy; - fileType = wrapper.cfbundle; - path = "VirgilCryptoApiImpl macOS Tests.xctest"; - remoteRef = 42D9E623216E119D00AA51C2 /* PBXContainerItemProxy */; + path = VirgilSDK.framework; + remoteRef = 16DEB82A21C95CF80028828C /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 42D9E626216E119D00AA51C2 /* VirgilCryptoApiImpl.framework */ = { + 42D9E5C8216E119000AA51C2 /* VirgilCryptoAPI.framework */ = { isa = PBXReferenceProxy; fileType = wrapper.framework; - path = VirgilCryptoApiImpl.framework; - remoteRef = 42D9E625216E119D00AA51C2 /* PBXContainerItemProxy */; + path = VirgilCryptoAPI.framework; + remoteRef = 42D9E5C7216E119000AA51C2 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 42D9E628216E119D00AA51C2 /* VirgilCryptoApiImpl tvOS Tests.xctest */ = { + 42D9E5CA216E119000AA51C2 /* VirgilCryptoAPI iOS Tests.xctest */ = { isa = PBXReferenceProxy; fileType = wrapper.cfbundle; - path = "VirgilCryptoApiImpl tvOS Tests.xctest"; - remoteRef = 42D9E627216E119D00AA51C2 /* PBXContainerItemProxy */; + path = "VirgilCryptoAPI iOS Tests.xctest"; + remoteRef = 42D9E5C9216E119000AA51C2 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 42D9E62A216E119D00AA51C2 /* VirgilCryptoApiImpl.framework */ = { + 42D9E5CC216E119000AA51C2 /* VirgilCryptoAPI.framework */ = { isa = PBXReferenceProxy; fileType = wrapper.framework; - path = VirgilCryptoApiImpl.framework; - remoteRef = 42D9E629216E119D00AA51C2 /* PBXContainerItemProxy */; + path = VirgilCryptoAPI.framework; + remoteRef = 42D9E5CB216E119000AA51C2 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 42D9E62C216E119D00AA51C2 /* VSCCrypto.framework */ = { + 42D9E5CE216E119000AA51C2 /* VirgilCryptoAPI macOS Tests.xctest */ = { isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = VSCCrypto.framework; - remoteRef = 42D9E62B216E119D00AA51C2 /* PBXContainerItemProxy */; + fileType = wrapper.cfbundle; + path = "VirgilCryptoAPI macOS Tests.xctest"; + remoteRef = 42D9E5CD216E119000AA51C2 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 42D9E62E216E119D00AA51C2 /* VSCCrypto.framework */ = { + 42D9E5D0216E119000AA51C2 /* VirgilCryptoAPI.framework */ = { isa = PBXReferenceProxy; fileType = wrapper.framework; - path = VSCCrypto.framework; - remoteRef = 42D9E62D216E119D00AA51C2 /* PBXContainerItemProxy */; + path = VirgilCryptoAPI.framework; + remoteRef = 42D9E5CF216E119000AA51C2 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 42D9E630216E119D00AA51C2 /* VSCCrypto.framework */ = { + 42D9E5D2216E119000AA51C2 /* VirgilCryptoAPI tvOS Tests.xctest */ = { isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = VSCCrypto.framework; - remoteRef = 42D9E62F216E119D00AA51C2 /* PBXContainerItemProxy */; + fileType = wrapper.cfbundle; + path = "VirgilCryptoAPI tvOS Tests.xctest"; + remoteRef = 42D9E5D1216E119000AA51C2 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 42D9E632216E119D00AA51C2 /* VSCCrypto.framework */ = { + 42D9E5D4216E119000AA51C2 /* VirgilCryptoAPI.framework */ = { isa = PBXReferenceProxy; fileType = wrapper.framework; - path = VSCCrypto.framework; - remoteRef = 42D9E631216E119D00AA51C2 /* PBXContainerItemProxy */; + path = VirgilCryptoAPI.framework; + remoteRef = 42D9E5D3216E119000AA51C2 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXReferenceProxy section */ From 138d7ee79372d77094b0d87ab865e6174513444a Mon Sep 17 00:00:00 2001 From: Oleksandr Deundiak Date: Wed, 16 Jan 2019 13:31:50 +0200 Subject: [PATCH 05/18] Renaming fixes --- .travis.yml | 19 +++++++++---------- CI/publish-docs.sh | 2 +- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/.travis.yml b/.travis.yml index b29d4ed..ed50cee 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,5 @@ language: swift -osx_image: xcode10 +osx_image: xcode10.1 env: global: @@ -11,17 +11,17 @@ env: - WATCHOS_FRAMEWORK_SCHEME="VirgilSDKKeyknox watchOS" - IOS_TEST_SCHEME="KeyknoxTestApp iOS" - TVOS_TEST_SCHEME="KeyknoxTestApp tvOS" - - IOS_SDK=iphonesimulator12.0 + - IOS_SDK=iphonesimulator12.1 - MACOS_SDK=macosx10.14 - - TVOS_SDK=appletvsimulator12.0 - - WATCHOS_SDK=watchsimulator5.0 + - TVOS_SDK=appletvsimulator12.1 + - WATCHOS_SDK=watchsimulator5.1 - FRAMEWORK_NAME=VirgilSDKKeyknox matrix: - - DESTINATION="OS=12.0,name=iPhone SE" ENABLE_BUILD="YES" SCHEME="$IOS_FRAMEWORK_SCHEME" SDK="$IOS_SDK" TWO_STEP_BUILD_ENABLED="YES" RUN_TESTS="YES" ADDITIONAL_TESTS_SCHEME="$IOS_TEST_SCHEME" PUBLISH_DOCS="NO" PUBLISH_CARTHAGE="NO" POD_LIB_LINT="NO" SWIFT_LINT="NO" + - DESTINATION="OS=12.1,name=iPhone SE" ENABLE_BUILD="YES" SCHEME="$IOS_FRAMEWORK_SCHEME" SDK="$IOS_SDK" TWO_STEP_BUILD_ENABLED="YES" RUN_TESTS="YES" ADDITIONAL_TESTS_SCHEME="$IOS_TEST_SCHEME" PUBLISH_DOCS="NO" PUBLISH_CARTHAGE="NO" POD_LIB_LINT="NO" SWIFT_LINT="NO" - DESTINATION="arch=x86_64" ENABLE_BUILD="YES" SCHEME="$MACOS_FRAMEWORK_SCHEME" SDK="$MACOS_SDK" TWO_STEP_BUILD_ENABLED="YES" RUN_TESTS="YES" ADDITIONAL_TESTS_SCHEME="" PUBLISH_DOCS="NO" PUBLISH_CARTHAGE="NO" POD_LIB_LINT="NO" SWIFT_LINT="NO" - - DESTINATION="OS=12.0,name=Apple TV 4K" ENABLE_BUILD="YES" SCHEME="$TVOS_FRAMEWORK_SCHEME" SDK="$TVOS_SDK" TWO_STEP_BUILD_ENABLED="YES" RUN_TESTS="YES" ADDITIONAL_TESTS_SCHEME="$TVOS_TEST_SCHEME" PUBLISH_DOCS="NO" PUBLISH_CARTHAGE="NO" POD_LIB_LINT="NO" SWIFT_LINT="NO" - - DESTINATION="OS=5.0,name=Apple Watch Series 4 - 44mm" ENABLE_BUILD="YES" SCHEME="$WATCHOS_FRAMEWORK_SCHEME" SDK="$WATCHOS_SDK" TWO_STEP_BUILD_ENABLED="NO" RUN_TESTS="NO" ADDITIONAL_TESTS_SCHEME="" PUBLISH_DOCS="NO" PUBLISH_CARTHAGE="NO" POD_LIB_LINT="NO" SWIFT_LINT="NO" + - DESTINATION="OS=12.1,name=Apple TV 4K" ENABLE_BUILD="YES" SCHEME="$TVOS_FRAMEWORK_SCHEME" SDK="$TVOS_SDK" TWO_STEP_BUILD_ENABLED="YES" RUN_TESTS="YES" ADDITIONAL_TESTS_SCHEME="$TVOS_TEST_SCHEME" PUBLISH_DOCS="NO" PUBLISH_CARTHAGE="NO" POD_LIB_LINT="NO" SWIFT_LINT="NO" + - DESTINATION="OS=5.1,name=Apple Watch Series 4 - 44mm" ENABLE_BUILD="YES" SCHEME="$WATCHOS_FRAMEWORK_SCHEME" SDK="$WATCHOS_SDK" TWO_STEP_BUILD_ENABLED="NO" RUN_TESTS="NO" ADDITIONAL_TESTS_SCHEME="" PUBLISH_DOCS="NO" PUBLISH_CARTHAGE="NO" POD_LIB_LINT="NO" SWIFT_LINT="NO" - DESTINATION="" ENABLE_BUILD="NO" SCHEME="" SDK="" TWO_STEP_BUILD_ENABLED="" RUN_TESTS="YES" ADDITIONAL_TESTS_SCHEME="" PUBLISH_DOCS="YES" PUBLISH_CARTHAGE="YES" POD_LIB_LINT="YES" SWIFT_LINT="YES" before_install: @@ -89,8 +89,7 @@ before_deploy: after_success: # Generate and publish docs -# - if [ -n "${TRAVIS_TAG}" ] && [ $PUBLISH_DOCS == "YES" ]; then -- if [ $PUBLISH_DOCS == "YES" ]; then +- if [ -n "${TRAVIS_TAG}" ] && [ $PUBLISH_DOCS == "YES" ]; then ./CI/publish-docs.sh; fi @@ -102,7 +101,7 @@ deploy: file: $FRAMEWORK_NAME.framework.zip skip_cleanup: true on: - repo: VirgilSecurity/keyknox-x + repo: VirgilSecurity/virgil-keyknox-x tags: true condition: $PUBLISH_CARTHAGE = "YES" diff --git a/CI/publish-docs.sh b/CI/publish-docs.sh index e0210ab..0479498 100755 --- a/CI/publish-docs.sh +++ b/CI/publish-docs.sh @@ -36,7 +36,7 @@ # # Settings -REPO_PATH=https://github.com/VirgilSecurity/keyknox-x.git +REPO_PATH=https://github.com/VirgilSecurity/virgil-keyknox-x.git HTML_PATH_DST="${TRAVIS_BUILD_DIR}/docs" CHANGESET=$(git rev-parse --verify HEAD) From b919bac2768739da4ff44f1c0699b2e7c6944483 Mon Sep 17 00:00:00 2001 From: Oleksandr Deundiak Date: Wed, 16 Jan 2019 13:32:34 +0200 Subject: [PATCH 06/18] Updated dependencies --- Cartfile | 4 ++-- Cartfile.resolved | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cartfile b/Cartfile index b62dd4a..6af2161 100644 --- a/Cartfile +++ b/Cartfile @@ -1,2 +1,2 @@ -github "VirgilSecurity/virgil-sdk-x" ~> 5.4.0 -github "VirgilSecurity/virgil-crypto-x" ~> 3.2.0 \ No newline at end of file +github "VirgilSecurity/virgil-sdk-x" ~> 5.4 +github "VirgilSecurity/virgil-crypto-x" ~> 3.2 \ No newline at end of file diff --git a/Cartfile.resolved b/Cartfile.resolved index e2e61e7..70eaa5a 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -1,3 +1,3 @@ -github "VirgilSecurity/cryptoapi-x" "1.0.3" -github "VirgilSecurity/virgil-crypto-x" "3.2.1" -github "VirgilSecurity/virgil-sdk-x" "5.6.0" +github "VirgilSecurity/virgil-crypto-x" "3.2.2" +github "VirgilSecurity/virgil-cryptoapi-x" "1.0.4" +github "VirgilSecurity/virgil-sdk-x" "5.6.1" From d667bec28be78e2986861c9d4839100c359a1f21 Mon Sep 17 00:00:00 2001 From: Oleksandr Deundiak Date: Wed, 16 Jan 2019 13:39:55 +0200 Subject: [PATCH 07/18] Fixed xcodeproject dependencies --- VirgilSDKKeyknox.xcodeproj/project.pbxproj | 786 +++++------------- .../xcshareddata/WorkspaceSettings.xcsettings | 5 +- 2 files changed, 187 insertions(+), 604 deletions(-) diff --git a/VirgilSDKKeyknox.xcodeproj/project.pbxproj b/VirgilSDKKeyknox.xcodeproj/project.pbxproj index 25c11df..ab6aa46 100644 --- a/VirgilSDKKeyknox.xcodeproj/project.pbxproj +++ b/VirgilSDKKeyknox.xcodeproj/project.pbxproj @@ -24,22 +24,6 @@ /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ - 16DEB82C21C95D570028828C /* VirgilSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16DEB81B21C95CF80028828C /* VirgilSDK.framework */; }; - 16DEB82D21C95D5F0028828C /* VirgilCrypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16DEB7E821C95CDE0028828C /* VirgilCrypto.framework */; }; - 16DEB82E21C95D660028828C /* VSCCrypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16DEB80421C95CDE0028828C /* VSCCrypto.framework */; }; - 16DEB82F21C95DA30028828C /* VirgilCryptoApiImpl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16DEB7F621C95CDE0028828C /* VirgilCryptoApiImpl.framework */; }; - 16DEB83021C95DF70028828C /* VirgilCryptoApiImpl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16DEB7FA21C95CDE0028828C /* VirgilCryptoApiImpl.framework */; }; - 16DEB83121C95DFC0028828C /* VirgilCrypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16DEB7EC21C95CDE0028828C /* VirgilCrypto.framework */; }; - 16DEB83221C95E020028828C /* VSCCrypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16DEB80621C95CDE0028828C /* VSCCrypto.framework */; }; - 16DEB83321C95E150028828C /* VirgilSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16DEB82121C95CF80028828C /* VirgilSDK.framework */; }; - 16DEB83421C95E370028828C /* VirgilCryptoApiImpl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16DEB7FE21C95CDE0028828C /* VirgilCryptoApiImpl.framework */; }; - 16DEB83521C95E400028828C /* VirgilCrypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16DEB7F021C95CDE0028828C /* VirgilCrypto.framework */; }; - 16DEB83621C95E440028828C /* VSCCrypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16DEB80821C95CDE0028828C /* VSCCrypto.framework */; }; - 16DEB83721C95E530028828C /* VirgilSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16DEB82521C95CF80028828C /* VirgilSDK.framework */; }; - 16DEB83821C95E970028828C /* VirgilCryptoApiImpl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16DEB80221C95CDE0028828C /* VirgilCryptoApiImpl.framework */; }; - 16DEB83921C95E9B0028828C /* VirgilCrypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16DEB7F421C95CDE0028828C /* VirgilCrypto.framework */; }; - 16DEB83A21C95E9E0028828C /* VSCCrypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16DEB80A21C95CDE0028828C /* VSCCrypto.framework */; }; - 16DEB83B21C95EAB0028828C /* VirgilSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16DEB82B21C95CF80028828C /* VirgilSDK.framework */; }; 42011DBE20CACC5400B84755 /* CloudEntry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42011DBD20CACC5400B84755 /* CloudEntry.swift */; }; 42011E5B20CE8FD400B84755 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42011E5A20CE8FD400B84755 /* AppDelegate.swift */; }; 42011E5D20CE8FD400B84755 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42011E5C20CE8FD400B84755 /* ViewController.swift */; }; @@ -53,6 +37,51 @@ 42011EA820CE906E00B84755 /* VirgilSDKKeyknox.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 42B5DFF520C005300067F13E /* VirgilSDKKeyknox.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 421A611E20D3E80D00BBF05D /* KeyknoxCryptoProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 421A611D20D3E80D00BBF05D /* KeyknoxCryptoProtocol.swift */; }; 421A612020D3E83400BBF05D /* KeyknoxCrypto.swift in Sources */ = {isa = PBXBuildFile; fileRef = 421A611F20D3E83400BBF05D /* KeyknoxCrypto.swift */; }; + 424A7EBA21EF4E1F006BED3F /* VSCCrypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 424A7EB521EF4E1E006BED3F /* VSCCrypto.framework */; }; + 424A7EBB21EF4E1F006BED3F /* VirgilSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 424A7EB621EF4E1E006BED3F /* VirgilSDK.framework */; }; + 424A7EBC21EF4E1F006BED3F /* VirgilCryptoAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 424A7EB721EF4E1E006BED3F /* VirgilCryptoAPI.framework */; }; + 424A7EBD21EF4E1F006BED3F /* VirgilCryptoApiImpl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 424A7EB821EF4E1F006BED3F /* VirgilCryptoApiImpl.framework */; }; + 424A7EBE21EF4E1F006BED3F /* VirgilCrypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 424A7EB921EF4E1F006BED3F /* VirgilCrypto.framework */; }; + 424A7EC421EF4E2B006BED3F /* VirgilCryptoApiImpl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 424A7EBF21EF4E2B006BED3F /* VirgilCryptoApiImpl.framework */; }; + 424A7EC521EF4E2B006BED3F /* VirgilCrypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 424A7EC021EF4E2B006BED3F /* VirgilCrypto.framework */; }; + 424A7EC621EF4E2B006BED3F /* VSCCrypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 424A7EC121EF4E2B006BED3F /* VSCCrypto.framework */; }; + 424A7EC721EF4E2B006BED3F /* VirgilSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 424A7EC221EF4E2B006BED3F /* VirgilSDK.framework */; }; + 424A7EC821EF4E2B006BED3F /* VirgilCryptoAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 424A7EC321EF4E2B006BED3F /* VirgilCryptoAPI.framework */; }; + 424A7ECE21EF4E3E006BED3F /* VirgilCryptoApiImpl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 424A7EC921EF4E3D006BED3F /* VirgilCryptoApiImpl.framework */; }; + 424A7ECF21EF4E3E006BED3F /* VirgilSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 424A7ECA21EF4E3E006BED3F /* VirgilSDK.framework */; }; + 424A7ED021EF4E3E006BED3F /* VirgilCrypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 424A7ECB21EF4E3E006BED3F /* VirgilCrypto.framework */; }; + 424A7ED121EF4E3E006BED3F /* VirgilCryptoAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 424A7ECC21EF4E3E006BED3F /* VirgilCryptoAPI.framework */; }; + 424A7ED221EF4E3E006BED3F /* VSCCrypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 424A7ECD21EF4E3E006BED3F /* VSCCrypto.framework */; }; + 424A7ED821EF4E4C006BED3F /* VirgilSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 424A7ED321EF4E4C006BED3F /* VirgilSDK.framework */; }; + 424A7ED921EF4E4C006BED3F /* VirgilCryptoAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 424A7ED421EF4E4C006BED3F /* VirgilCryptoAPI.framework */; }; + 424A7EDA21EF4E4C006BED3F /* VirgilCrypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 424A7ED521EF4E4C006BED3F /* VirgilCrypto.framework */; }; + 424A7EDB21EF4E4C006BED3F /* VSCCrypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 424A7ED621EF4E4C006BED3F /* VSCCrypto.framework */; }; + 424A7EDC21EF4E4C006BED3F /* VirgilCryptoApiImpl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 424A7ED721EF4E4C006BED3F /* VirgilCryptoApiImpl.framework */; }; + 424A7EDD21EF4E88006BED3F /* VirgilCrypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 424A7EB921EF4E1F006BED3F /* VirgilCrypto.framework */; }; + 424A7EDE21EF4E88006BED3F /* VirgilCryptoAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 424A7EB721EF4E1E006BED3F /* VirgilCryptoAPI.framework */; }; + 424A7EDF21EF4E88006BED3F /* VirgilCryptoApiImpl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 424A7EB821EF4E1F006BED3F /* VirgilCryptoApiImpl.framework */; }; + 424A7EE021EF4E88006BED3F /* VirgilSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 424A7EB621EF4E1E006BED3F /* VirgilSDK.framework */; }; + 424A7EE121EF4E88006BED3F /* VSCCrypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 424A7EB521EF4E1E006BED3F /* VSCCrypto.framework */; }; + 424A7EE221EF4E98006BED3F /* VirgilCrypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 424A7EC021EF4E2B006BED3F /* VirgilCrypto.framework */; }; + 424A7EE321EF4E98006BED3F /* VirgilCryptoAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 424A7EC321EF4E2B006BED3F /* VirgilCryptoAPI.framework */; }; + 424A7EE421EF4E98006BED3F /* VirgilCryptoApiImpl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 424A7EBF21EF4E2B006BED3F /* VirgilCryptoApiImpl.framework */; }; + 424A7EE521EF4E98006BED3F /* VirgilSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 424A7EC221EF4E2B006BED3F /* VirgilSDK.framework */; }; + 424A7EE621EF4E98006BED3F /* VSCCrypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 424A7EC121EF4E2B006BED3F /* VSCCrypto.framework */; }; + 424A7EE721EF4EB5006BED3F /* VirgilCrypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 424A7ECB21EF4E3E006BED3F /* VirgilCrypto.framework */; }; + 424A7EE821EF4EB5006BED3F /* VirgilCryptoAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 424A7ECC21EF4E3E006BED3F /* VirgilCryptoAPI.framework */; }; + 424A7EE921EF4EB5006BED3F /* VirgilCryptoApiImpl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 424A7EC921EF4E3D006BED3F /* VirgilCryptoApiImpl.framework */; }; + 424A7EEA21EF4EB5006BED3F /* VirgilSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 424A7ECA21EF4E3E006BED3F /* VirgilSDK.framework */; }; + 424A7EEB21EF4EB5006BED3F /* VSCCrypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 424A7ECD21EF4E3E006BED3F /* VSCCrypto.framework */; }; + 424A7EFF21EF4F6B006BED3F /* VirgilCrypto.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 424A7ECB21EF4E3E006BED3F /* VirgilCrypto.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 424A7F0021EF4F6B006BED3F /* VirgilCryptoAPI.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 424A7ECC21EF4E3E006BED3F /* VirgilCryptoAPI.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 424A7F0121EF4F6B006BED3F /* VirgilCryptoApiImpl.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 424A7EC921EF4E3D006BED3F /* VirgilCryptoApiImpl.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 424A7F0221EF4F6B006BED3F /* VirgilSDK.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 424A7ECA21EF4E3E006BED3F /* VirgilSDK.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 424A7F0321EF4F6B006BED3F /* VSCCrypto.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 424A7ECD21EF4E3E006BED3F /* VSCCrypto.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 424A7F0421EF4F78006BED3F /* VirgilCrypto.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 424A7EB921EF4E1F006BED3F /* VirgilCrypto.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 424A7F0521EF4F78006BED3F /* VirgilCryptoAPI.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 424A7EB721EF4E1E006BED3F /* VirgilCryptoAPI.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 424A7F0621EF4F78006BED3F /* VirgilCryptoApiImpl.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 424A7EB821EF4E1F006BED3F /* VirgilCryptoApiImpl.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 424A7F0721EF4F78006BED3F /* VirgilSDK.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 424A7EB621EF4E1E006BED3F /* VirgilSDK.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 424A7F0821EF4F78006BED3F /* VSCCrypto.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 424A7EB521EF4E1E006BED3F /* VSCCrypto.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 424B9C2120EBCDDB00415ED4 /* KeyknoxManager+Operations.swift in Sources */ = {isa = PBXBuildFile; fileRef = 424B9C2020EBCDDB00415ED4 /* KeyknoxManager+Operations.swift */; }; 424B9C2220EBCDDB00415ED4 /* KeyknoxManager+Operations.swift in Sources */ = {isa = PBXBuildFile; fileRef = 424B9C2020EBCDDB00415ED4 /* KeyknoxManager+Operations.swift */; }; 424B9C2320EBCDDB00415ED4 /* KeyknoxManager+Operations.swift in Sources */ = {isa = PBXBuildFile; fileRef = 424B9C2020EBCDDB00415ED4 /* KeyknoxManager+Operations.swift */; }; @@ -187,205 +216,9 @@ 42D0585720EB755900FC544E /* VSK006_SyncKeyStorageKeychainUtilsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 428B15BB20D7F0AB0041CA75 /* VSK006_SyncKeyStorageKeychainUtilsTests.swift */; }; 42D0585820EB755900FC544E /* VSK007_KeyStorageWrapperTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42D056A420EA5B5D00FC544E /* VSK007_KeyStorageWrapperTests.swift */; }; 42D0585C20EB76BD00FC544E /* VirgilSDKKeyknox.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 42D0576220EAA0CC00FC544E /* VirgilSDKKeyknox.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 42D9E634216E11B300AA51C2 /* VirgilCryptoAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9E5C8216E119000AA51C2 /* VirgilCryptoAPI.framework */; }; - 42D9E639216E11C300AA51C2 /* VirgilCryptoAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9E5CC216E119000AA51C2 /* VirgilCryptoAPI.framework */; }; - 42D9E63E216E11D500AA51C2 /* VirgilCryptoAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9E5D0216E119000AA51C2 /* VirgilCryptoAPI.framework */; }; - 42D9E643216E11E300AA51C2 /* VirgilCryptoAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9E5D4216E119000AA51C2 /* VirgilCryptoAPI.framework */; }; - 42D9E651216E123200AA51C2 /* VirgilCryptoAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9E5C8216E119000AA51C2 /* VirgilCryptoAPI.framework */; }; - 42D9E656216E124300AA51C2 /* VirgilCryptoAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9E5CC216E119000AA51C2 /* VirgilCryptoAPI.framework */; }; - 42D9E65B216E126000AA51C2 /* VirgilCryptoAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42D9E5D0216E119000AA51C2 /* VirgilCryptoAPI.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 16DEB7E721C95CDE0028828C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 16DEB7CE21C95CDE0028828C /* VirgilCrypto.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 42F85ECD1DC7469D00C3184C; - remoteInfo = "VirgilCrypto iOS"; - }; - 16DEB7E921C95CDE0028828C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 16DEB7CE21C95CDE0028828C /* VirgilCrypto.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 42F85F2D1DC765AC00C3184C; - remoteInfo = "VirgilCrypto iOS Tests"; - }; - 16DEB7EB21C95CDE0028828C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 16DEB7CE21C95CDE0028828C /* VirgilCrypto.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 423F00301E719EF200CC98A3; - remoteInfo = "VirgilCrypto macOS"; - }; - 16DEB7ED21C95CDE0028828C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 16DEB7CE21C95CDE0028828C /* VirgilCrypto.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 423F00841E71A0FC00CC98A3; - remoteInfo = "VirgilCrypto macOS Tests"; - }; - 16DEB7EF21C95CDE0028828C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 16DEB7CE21C95CDE0028828C /* VirgilCrypto.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 42A01F7C1F7D51FE00FF8804; - remoteInfo = "VirgilCrypto tvOS"; - }; - 16DEB7F121C95CDE0028828C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 16DEB7CE21C95CDE0028828C /* VirgilCrypto.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 42CDC30A1F6970C700D69111; - remoteInfo = "VirgilCrypto tvOS Tests"; - }; - 16DEB7F321C95CDE0028828C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 16DEB7CE21C95CDE0028828C /* VirgilCrypto.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 42CDC2821F696DB900D69111; - remoteInfo = "VirgilCrypto watchOS"; - }; - 16DEB7F521C95CDE0028828C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 16DEB7CE21C95CDE0028828C /* VirgilCrypto.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 42B129EB201FD2790082F9BC; - remoteInfo = "VirgilCryptoApiImpl iOS"; - }; - 16DEB7F721C95CDE0028828C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 16DEB7CE21C95CDE0028828C /* VirgilCrypto.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 42B12B1E201FDC2E0082F9BC; - remoteInfo = "VirgilCryptoApiImpl iOS Tests"; - }; - 16DEB7F921C95CDE0028828C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 16DEB7CE21C95CDE0028828C /* VirgilCrypto.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 42B12ABF201FD6F70082F9BC; - remoteInfo = "VirgilCryptoApiImpl macOS"; - }; - 16DEB7FB21C95CDE0028828C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 16DEB7CE21C95CDE0028828C /* VirgilCrypto.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 42B12B6A201FDCC60082F9BC; - remoteInfo = "VirgilCryptoApiImpl macOS Tests"; - }; - 16DEB7FD21C95CDE0028828C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 16DEB7CE21C95CDE0028828C /* VirgilCrypto.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 42B12ADB201FD74C0082F9BC; - remoteInfo = "VirgilCryptoApiImpl tvOS"; - }; - 16DEB7FF21C95CDE0028828C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 16DEB7CE21C95CDE0028828C /* VirgilCrypto.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 42B12B79201FDCE00082F9BC; - remoteInfo = "VirgilCryptoApiImpl tvOS Tests"; - }; - 16DEB80121C95CDE0028828C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 16DEB7CE21C95CDE0028828C /* VirgilCrypto.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 42B12ACE201FD73F0082F9BC; - remoteInfo = "VirgilCryptoApiImpl watchOS"; - }; - 16DEB80321C95CDE0028828C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 16DEB7CE21C95CDE0028828C /* VirgilCrypto.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 42D61B63202A5843007E0758; - remoteInfo = "VSCCrypto iOS"; - }; - 16DEB80521C95CDE0028828C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 16DEB7CE21C95CDE0028828C /* VirgilCrypto.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 42D61B7E202A58B8007E0758; - remoteInfo = "VSCCrypto macOS"; - }; - 16DEB80721C95CDE0028828C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 16DEB7CE21C95CDE0028828C /* VirgilCrypto.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 42D61B8D202A5963007E0758; - remoteInfo = "VSCCrypto tvOS"; - }; - 16DEB80921C95CDE0028828C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 16DEB7CE21C95CDE0028828C /* VirgilCrypto.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 42D61B9B202A59C4007E0758; - remoteInfo = "VSCCrypto watchOS"; - }; - 16DEB81A21C95CF80028828C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 16DEB80B21C95CF80028828C /* VirgilSDK.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 42EB30E41DB8EC17001DF4C0; - remoteInfo = "VirgilSDK iOS"; - }; - 16DEB81C21C95CF80028828C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 16DEB80B21C95CF80028828C /* VirgilSDK.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 42D0589120EB894500FC544E; - remoteInfo = "SDKTestApp iOS"; - }; - 16DEB81E21C95CF80028828C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 16DEB80B21C95CF80028828C /* VirgilSDK.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 42D058A720EB896200FC544E; - remoteInfo = "VirgilSDK AppTests iOS"; - }; - 16DEB82021C95CF80028828C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 16DEB80B21C95CF80028828C /* VirgilSDK.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 422499BA1EB39B380032F556; - remoteInfo = "VirgilSDK macOS"; - }; - 16DEB82221C95CF80028828C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 16DEB80B21C95CF80028828C /* VirgilSDK.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 422499C21EB39B380032F556; - remoteInfo = "VirgilSDK macOS Tests"; - }; - 16DEB82421C95CF80028828C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 16DEB80B21C95CF80028828C /* VirgilSDK.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 4284C3861F6BE95700B75491; - remoteInfo = "VirgilSDK tvOS"; - }; - 16DEB82621C95CF80028828C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 16DEB80B21C95CF80028828C /* VirgilSDK.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 42D058B520EB897200FC544E; - remoteInfo = "SDKTestApp tvOS"; - }; - 16DEB82821C95CF80028828C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 16DEB80B21C95CF80028828C /* VirgilSDK.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 42D058F420EB89E000FC544E; - remoteInfo = "VirgilSDK AppTests tvOS"; - }; - 16DEB82A21C95CF80028828C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 16DEB80B21C95CF80028828C /* VirgilSDK.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 4284C3951F6BE97C00B75491; - remoteInfo = "VirgilSDK watchOS"; - }; 42011E9820CE8FE400B84755 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 42B5DFEC20C005300067F13E /* Project object */; @@ -449,55 +282,6 @@ remoteGlobalIDString = 42D0576120EAA0CC00FC544E; remoteInfo = "VirgilSDKKeyknox tvOS"; }; - 42D9E5C7216E119000AA51C2 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 42D9E5BC216E118F00AA51C2 /* VirgilCryptoAPI.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 428A614A1F67FF0E00D6C057; - remoteInfo = "VirgilCryptoAPI iOS"; - }; - 42D9E5C9216E119000AA51C2 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 42D9E5BC216E118F00AA51C2 /* VirgilCryptoAPI.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 428A61A11F681D6A00D6C057; - remoteInfo = "VirgilCryptoAPI iOS Tests"; - }; - 42D9E5CB216E119000AA51C2 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 42D9E5BC216E118F00AA51C2 /* VirgilCryptoAPI.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 428A615D1F6800A800D6C057; - remoteInfo = "VirgilCryptoAPI macOS"; - }; - 42D9E5CD216E119000AA51C2 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 42D9E5BC216E118F00AA51C2 /* VirgilCryptoAPI.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 42CDC2201F68209300D69111; - remoteInfo = "VirgilCryptoAPI macOS Tests"; - }; - 42D9E5CF216E119000AA51C2 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 42D9E5BC216E118F00AA51C2 /* VirgilCryptoAPI.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 428A61771F6800DB00D6C057; - remoteInfo = "VirgilCryptoAPI tvOS"; - }; - 42D9E5D1216E119000AA51C2 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 42D9E5BC216E118F00AA51C2 /* VirgilCryptoAPI.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 42CDC22F1F6820A900D69111; - remoteInfo = "VirgilCryptoAPI tvOS Tests"; - }; - 42D9E5D3216E119000AA51C2 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 42D9E5BC216E118F00AA51C2 /* VirgilCryptoAPI.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 428A616A1F6800CA00D6C057; - remoteInfo = "VirgilCryptoAPI watchOS"; - }; /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -507,6 +291,11 @@ dstPath = ""; dstSubfolderSpec = 10; files = ( + 424A7F0421EF4F78006BED3F /* VirgilCrypto.framework in CopyFiles */, + 424A7F0521EF4F78006BED3F /* VirgilCryptoAPI.framework in CopyFiles */, + 424A7F0621EF4F78006BED3F /* VirgilCryptoApiImpl.framework in CopyFiles */, + 424A7F0721EF4F78006BED3F /* VirgilSDK.framework in CopyFiles */, + 424A7F0821EF4F78006BED3F /* VSCCrypto.framework in CopyFiles */, 42011EA820CE906E00B84755 /* VirgilSDKKeyknox.framework in CopyFiles */, ); runOnlyForDeploymentPostprocessing = 0; @@ -517,6 +306,11 @@ dstPath = ""; dstSubfolderSpec = 10; files = ( + 424A7EFF21EF4F6B006BED3F /* VirgilCrypto.framework in CopyFiles */, + 424A7F0021EF4F6B006BED3F /* VirgilCryptoAPI.framework in CopyFiles */, + 424A7F0121EF4F6B006BED3F /* VirgilCryptoApiImpl.framework in CopyFiles */, + 424A7F0221EF4F6B006BED3F /* VirgilSDK.framework in CopyFiles */, + 424A7F0321EF4F6B006BED3F /* VSCCrypto.framework in CopyFiles */, 42D0585C20EB76BD00FC544E /* VirgilSDKKeyknox.framework in CopyFiles */, ); runOnlyForDeploymentPostprocessing = 0; @@ -524,8 +318,6 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 16DEB7CE21C95CDE0028828C /* VirgilCrypto.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = VirgilCrypto.xcodeproj; path = "Carthage/Checkouts/virgil-crypto-x/VirgilCrypto.xcodeproj"; sourceTree = ""; }; - 16DEB80B21C95CF80028828C /* VirgilSDK.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = VirgilSDK.xcodeproj; path = "Carthage/Checkouts/virgil-sdk-x/VirgilSDK.xcodeproj"; sourceTree = ""; }; 42011DBD20CACC5400B84755 /* CloudEntry.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CloudEntry.swift; sourceTree = ""; }; 42011DE320CACFEE00B84755 /* VSK004_SyncKeyStorageTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VSK004_SyncKeyStorageTests.swift; sourceTree = ""; }; 42011E5820CE8FD400B84755 /* KeyknoxTestApp iOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "KeyknoxTestApp iOS.app"; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -541,6 +333,26 @@ 421A611F20D3E83400BBF05D /* KeyknoxCrypto.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyknoxCrypto.swift; sourceTree = ""; }; 421A612120D4071500BBF05D /* VSK005_CloudEntrySerializerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VSK005_CloudEntrySerializerTests.swift; sourceTree = ""; }; 421A612320D41AFF00BBF05D /* Cloud.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = Cloud.json; sourceTree = ""; }; + 424A7EB521EF4E1E006BED3F /* VSCCrypto.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VSCCrypto.framework; path = Carthage/Build/iOS/VSCCrypto.framework; sourceTree = ""; }; + 424A7EB621EF4E1E006BED3F /* VirgilSDK.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VirgilSDK.framework; path = Carthage/Build/iOS/VirgilSDK.framework; sourceTree = ""; }; + 424A7EB721EF4E1E006BED3F /* VirgilCryptoAPI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VirgilCryptoAPI.framework; path = Carthage/Build/iOS/VirgilCryptoAPI.framework; sourceTree = ""; }; + 424A7EB821EF4E1F006BED3F /* VirgilCryptoApiImpl.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VirgilCryptoApiImpl.framework; path = Carthage/Build/iOS/VirgilCryptoApiImpl.framework; sourceTree = ""; }; + 424A7EB921EF4E1F006BED3F /* VirgilCrypto.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VirgilCrypto.framework; path = Carthage/Build/iOS/VirgilCrypto.framework; sourceTree = ""; }; + 424A7EBF21EF4E2B006BED3F /* VirgilCryptoApiImpl.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VirgilCryptoApiImpl.framework; path = Carthage/Build/Mac/VirgilCryptoApiImpl.framework; sourceTree = ""; }; + 424A7EC021EF4E2B006BED3F /* VirgilCrypto.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VirgilCrypto.framework; path = Carthage/Build/Mac/VirgilCrypto.framework; sourceTree = ""; }; + 424A7EC121EF4E2B006BED3F /* VSCCrypto.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VSCCrypto.framework; path = Carthage/Build/Mac/VSCCrypto.framework; sourceTree = ""; }; + 424A7EC221EF4E2B006BED3F /* VirgilSDK.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VirgilSDK.framework; path = Carthage/Build/Mac/VirgilSDK.framework; sourceTree = ""; }; + 424A7EC321EF4E2B006BED3F /* VirgilCryptoAPI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VirgilCryptoAPI.framework; path = Carthage/Build/Mac/VirgilCryptoAPI.framework; sourceTree = ""; }; + 424A7EC921EF4E3D006BED3F /* VirgilCryptoApiImpl.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VirgilCryptoApiImpl.framework; path = Carthage/Build/tvOS/VirgilCryptoApiImpl.framework; sourceTree = ""; }; + 424A7ECA21EF4E3E006BED3F /* VirgilSDK.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VirgilSDK.framework; path = Carthage/Build/tvOS/VirgilSDK.framework; sourceTree = ""; }; + 424A7ECB21EF4E3E006BED3F /* VirgilCrypto.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VirgilCrypto.framework; path = Carthage/Build/tvOS/VirgilCrypto.framework; sourceTree = ""; }; + 424A7ECC21EF4E3E006BED3F /* VirgilCryptoAPI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VirgilCryptoAPI.framework; path = Carthage/Build/tvOS/VirgilCryptoAPI.framework; sourceTree = ""; }; + 424A7ECD21EF4E3E006BED3F /* VSCCrypto.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VSCCrypto.framework; path = Carthage/Build/tvOS/VSCCrypto.framework; sourceTree = ""; }; + 424A7ED321EF4E4C006BED3F /* VirgilSDK.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VirgilSDK.framework; path = Carthage/Build/watchOS/VirgilSDK.framework; sourceTree = ""; }; + 424A7ED421EF4E4C006BED3F /* VirgilCryptoAPI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VirgilCryptoAPI.framework; path = Carthage/Build/watchOS/VirgilCryptoAPI.framework; sourceTree = ""; }; + 424A7ED521EF4E4C006BED3F /* VirgilCrypto.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VirgilCrypto.framework; path = Carthage/Build/watchOS/VirgilCrypto.framework; sourceTree = ""; }; + 424A7ED621EF4E4C006BED3F /* VSCCrypto.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VSCCrypto.framework; path = Carthage/Build/watchOS/VSCCrypto.framework; sourceTree = ""; }; + 424A7ED721EF4E4C006BED3F /* VirgilCryptoApiImpl.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VirgilCryptoApiImpl.framework; path = Carthage/Build/watchOS/VirgilCryptoApiImpl.framework; sourceTree = ""; }; 424B9C2020EBCDDB00415ED4 /* KeyknoxManager+Operations.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "KeyknoxManager+Operations.swift"; sourceTree = ""; }; 424B9C4020EBCF1A00415ED4 /* SyncKeyStorage+SyncHelpers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SyncKeyStorage+SyncHelpers.swift"; sourceTree = ""; }; 424B9C4520EBD03500415ED4 /* CloudKeyStorageError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CloudKeyStorageError.swift; sourceTree = ""; }; @@ -583,7 +395,6 @@ 42D057A520EAA1FC00FC544E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 42D0582C20EAA6E100FC544E /* VirgilSDKKeyknox macOS Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "VirgilSDKKeyknox macOS Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 42D0584520EB754C00FC544E /* VirgilSDKKeyknox AppTests tvOS.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "VirgilSDKKeyknox AppTests tvOS.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; - 42D9E5BC216E118F00AA51C2 /* VirgilCryptoAPI.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = VirgilCryptoAPI.xcodeproj; path = "Carthage/Checkouts/cryptoapi-x/VirgilCryptoAPI.xcodeproj"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -598,7 +409,11 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 42D9E651216E123200AA51C2 /* VirgilCryptoAPI.framework in Frameworks */, + 424A7EDD21EF4E88006BED3F /* VirgilCrypto.framework in Frameworks */, + 424A7EDE21EF4E88006BED3F /* VirgilCryptoAPI.framework in Frameworks */, + 424A7EDF21EF4E88006BED3F /* VirgilCryptoApiImpl.framework in Frameworks */, + 424A7EE021EF4E88006BED3F /* VirgilSDK.framework in Frameworks */, + 424A7EE121EF4E88006BED3F /* VSCCrypto.framework in Frameworks */, 42011E9720CE8FE400B84755 /* VirgilSDKKeyknox.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -607,11 +422,11 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 42D9E634216E11B300AA51C2 /* VirgilCryptoAPI.framework in Frameworks */, - 16DEB82E21C95D660028828C /* VSCCrypto.framework in Frameworks */, - 16DEB82D21C95D5F0028828C /* VirgilCrypto.framework in Frameworks */, - 16DEB82F21C95DA30028828C /* VirgilCryptoApiImpl.framework in Frameworks */, - 16DEB82C21C95D570028828C /* VirgilSDK.framework in Frameworks */, + 424A7EBA21EF4E1F006BED3F /* VSCCrypto.framework in Frameworks */, + 424A7EBB21EF4E1F006BED3F /* VirgilSDK.framework in Frameworks */, + 424A7EBC21EF4E1F006BED3F /* VirgilCryptoAPI.framework in Frameworks */, + 424A7EBD21EF4E1F006BED3F /* VirgilCryptoApiImpl.framework in Frameworks */, + 424A7EBE21EF4E1F006BED3F /* VirgilCrypto.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -619,11 +434,11 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 42D9E639216E11C300AA51C2 /* VirgilCryptoAPI.framework in Frameworks */, - 16DEB83221C95E020028828C /* VSCCrypto.framework in Frameworks */, - 16DEB83121C95DFC0028828C /* VirgilCrypto.framework in Frameworks */, - 16DEB83021C95DF70028828C /* VirgilCryptoApiImpl.framework in Frameworks */, - 16DEB83321C95E150028828C /* VirgilSDK.framework in Frameworks */, + 424A7EC421EF4E2B006BED3F /* VirgilCryptoApiImpl.framework in Frameworks */, + 424A7EC521EF4E2B006BED3F /* VirgilCrypto.framework in Frameworks */, + 424A7EC621EF4E2B006BED3F /* VSCCrypto.framework in Frameworks */, + 424A7EC721EF4E2B006BED3F /* VirgilSDK.framework in Frameworks */, + 424A7EC821EF4E2B006BED3F /* VirgilCryptoAPI.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -631,11 +446,11 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 42D9E63E216E11D500AA51C2 /* VirgilCryptoAPI.framework in Frameworks */, - 16DEB83621C95E440028828C /* VSCCrypto.framework in Frameworks */, - 16DEB83521C95E400028828C /* VirgilCrypto.framework in Frameworks */, - 16DEB83421C95E370028828C /* VirgilCryptoApiImpl.framework in Frameworks */, - 16DEB83721C95E530028828C /* VirgilSDK.framework in Frameworks */, + 424A7ECE21EF4E3E006BED3F /* VirgilCryptoApiImpl.framework in Frameworks */, + 424A7ECF21EF4E3E006BED3F /* VirgilSDK.framework in Frameworks */, + 424A7ED021EF4E3E006BED3F /* VirgilCrypto.framework in Frameworks */, + 424A7ED121EF4E3E006BED3F /* VirgilCryptoAPI.framework in Frameworks */, + 424A7ED221EF4E3E006BED3F /* VSCCrypto.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -643,11 +458,11 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 42D9E643216E11E300AA51C2 /* VirgilCryptoAPI.framework in Frameworks */, - 16DEB83A21C95E9E0028828C /* VSCCrypto.framework in Frameworks */, - 16DEB83921C95E9B0028828C /* VirgilCrypto.framework in Frameworks */, - 16DEB83821C95E970028828C /* VirgilCryptoApiImpl.framework in Frameworks */, - 16DEB83B21C95EAB0028828C /* VirgilSDK.framework in Frameworks */, + 424A7ED821EF4E4C006BED3F /* VirgilSDK.framework in Frameworks */, + 424A7ED921EF4E4C006BED3F /* VirgilCryptoAPI.framework in Frameworks */, + 424A7EDA21EF4E4C006BED3F /* VirgilCrypto.framework in Frameworks */, + 424A7EDB21EF4E4C006BED3F /* VSCCrypto.framework in Frameworks */, + 424A7EDC21EF4E4C006BED3F /* VirgilCryptoApiImpl.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -662,7 +477,11 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 42D9E656216E124300AA51C2 /* VirgilCryptoAPI.framework in Frameworks */, + 424A7EE221EF4E98006BED3F /* VirgilCrypto.framework in Frameworks */, + 424A7EE321EF4E98006BED3F /* VirgilCryptoAPI.framework in Frameworks */, + 424A7EE421EF4E98006BED3F /* VirgilCryptoApiImpl.framework in Frameworks */, + 424A7EE521EF4E98006BED3F /* VirgilSDK.framework in Frameworks */, + 424A7EE621EF4E98006BED3F /* VSCCrypto.framework in Frameworks */, 42D0583120EAA6E100FC544E /* VirgilSDKKeyknox.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -671,54 +490,17 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 42D9E65B216E126000AA51C2 /* VirgilCryptoAPI.framework in Frameworks */, + 424A7EE721EF4EB5006BED3F /* VirgilCrypto.framework in Frameworks */, + 424A7EE821EF4EB5006BED3F /* VirgilCryptoAPI.framework in Frameworks */, + 424A7EE921EF4EB5006BED3F /* VirgilCryptoApiImpl.framework in Frameworks */, + 424A7EEA21EF4EB5006BED3F /* VirgilSDK.framework in Frameworks */, + 424A7EEB21EF4EB5006BED3F /* VSCCrypto.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 16DEB7CF21C95CDE0028828C /* Products */ = { - isa = PBXGroup; - children = ( - 16DEB7E821C95CDE0028828C /* VirgilCrypto.framework */, - 16DEB7EA21C95CDE0028828C /* VirgilCrypto iOS Tests.xctest */, - 16DEB7EC21C95CDE0028828C /* VirgilCrypto.framework */, - 16DEB7EE21C95CDE0028828C /* VirgilCrypto macOS Tests.xctest */, - 16DEB7F021C95CDE0028828C /* VirgilCrypto.framework */, - 16DEB7F221C95CDE0028828C /* VirgilCrypto tvOS Tests.xctest */, - 16DEB7F421C95CDE0028828C /* VirgilCrypto.framework */, - 16DEB7F621C95CDE0028828C /* VirgilCryptoApiImpl.framework */, - 16DEB7F821C95CDE0028828C /* VirgilCryptoApiImpl iOS Tests.xctest */, - 16DEB7FA21C95CDE0028828C /* VirgilCryptoApiImpl.framework */, - 16DEB7FC21C95CDE0028828C /* VirgilCryptoApiImpl macOS Tests.xctest */, - 16DEB7FE21C95CDE0028828C /* VirgilCryptoApiImpl.framework */, - 16DEB80021C95CDE0028828C /* VirgilCryptoApiImpl tvOS Tests.xctest */, - 16DEB80221C95CDE0028828C /* VirgilCryptoApiImpl.framework */, - 16DEB80421C95CDE0028828C /* VSCCrypto.framework */, - 16DEB80621C95CDE0028828C /* VSCCrypto.framework */, - 16DEB80821C95CDE0028828C /* VSCCrypto.framework */, - 16DEB80A21C95CDE0028828C /* VSCCrypto.framework */, - ); - name = Products; - sourceTree = ""; - }; - 16DEB80C21C95CF80028828C /* Products */ = { - isa = PBXGroup; - children = ( - 16DEB81B21C95CF80028828C /* VirgilSDK.framework */, - 16DEB81D21C95CF80028828C /* SDKTestApp iOS.app */, - 16DEB81F21C95CF80028828C /* VirgilSDK AppTests iOS.xctest */, - 16DEB82121C95CF80028828C /* VirgilSDK.framework */, - 16DEB82321C95CF80028828C /* VirgilSDK macOS Tests.xctest */, - 16DEB82521C95CF80028828C /* VirgilSDK.framework */, - 16DEB82721C95CF80028828C /* SDKTestApp tvOS.app */, - 16DEB82921C95CF80028828C /* VirgilSDK AppTests tvOS.xctest */, - 16DEB82B21C95CF80028828C /* VirgilSDK.framework */, - ); - name = Products; - sourceTree = ""; - }; 42011E5920CE8FD400B84755 /* KeyknoxTestApp iOS */ = { isa = PBXGroup; children = ( @@ -784,9 +566,6 @@ 42B5DFEB20C005300067F13E = { isa = PBXGroup; children = ( - 42D9E5BC216E118F00AA51C2 /* VirgilCryptoAPI.xcodeproj */, - 16DEB7CE21C95CDE0028828C /* VirgilCrypto.xcodeproj */, - 16DEB80B21C95CF80028828C /* VirgilSDK.xcodeproj */, 42B5DFF720C005300067F13E /* VirgilSDKKeyknox */, 42B5E01A20C011380067F13E /* Source */, 42B5E01620C00E320067F13E /* Tests */, @@ -872,6 +651,26 @@ 42B5E0A620C0117E0067F13E /* Frameworks */ = { isa = PBXGroup; children = ( + 424A7ED521EF4E4C006BED3F /* VirgilCrypto.framework */, + 424A7ED421EF4E4C006BED3F /* VirgilCryptoAPI.framework */, + 424A7ED721EF4E4C006BED3F /* VirgilCryptoApiImpl.framework */, + 424A7ED321EF4E4C006BED3F /* VirgilSDK.framework */, + 424A7ED621EF4E4C006BED3F /* VSCCrypto.framework */, + 424A7ECB21EF4E3E006BED3F /* VirgilCrypto.framework */, + 424A7ECC21EF4E3E006BED3F /* VirgilCryptoAPI.framework */, + 424A7EC921EF4E3D006BED3F /* VirgilCryptoApiImpl.framework */, + 424A7ECA21EF4E3E006BED3F /* VirgilSDK.framework */, + 424A7ECD21EF4E3E006BED3F /* VSCCrypto.framework */, + 424A7EC021EF4E2B006BED3F /* VirgilCrypto.framework */, + 424A7EC321EF4E2B006BED3F /* VirgilCryptoAPI.framework */, + 424A7EBF21EF4E2B006BED3F /* VirgilCryptoApiImpl.framework */, + 424A7EC221EF4E2B006BED3F /* VirgilSDK.framework */, + 424A7EC121EF4E2B006BED3F /* VSCCrypto.framework */, + 424A7EB921EF4E1F006BED3F /* VirgilCrypto.framework */, + 424A7EB721EF4E1E006BED3F /* VirgilCryptoAPI.framework */, + 424A7EB821EF4E1F006BED3F /* VirgilCryptoApiImpl.framework */, + 424A7EB621EF4E1E006BED3F /* VirgilSDK.framework */, + 424A7EB521EF4E1E006BED3F /* VSCCrypto.framework */, ); name = Frameworks; sourceTree = ""; @@ -897,20 +696,6 @@ path = "KeyknoxTestApp tvOS"; sourceTree = ""; }; - 42D9E5BD216E118F00AA51C2 /* Products */ = { - isa = PBXGroup; - children = ( - 42D9E5C8216E119000AA51C2 /* VirgilCryptoAPI.framework */, - 42D9E5CA216E119000AA51C2 /* VirgilCryptoAPI iOS Tests.xctest */, - 42D9E5CC216E119000AA51C2 /* VirgilCryptoAPI.framework */, - 42D9E5CE216E119000AA51C2 /* VirgilCryptoAPI macOS Tests.xctest */, - 42D9E5D0216E119000AA51C2 /* VirgilCryptoAPI.framework */, - 42D9E5D2216E119000AA51C2 /* VirgilCryptoAPI tvOS Tests.xctest */, - 42D9E5D4216E119000AA51C2 /* VirgilCryptoAPI.framework */, - ); - name = Products; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ @@ -1174,20 +959,6 @@ mainGroup = 42B5DFEB20C005300067F13E; productRefGroup = 42B5DFF620C005300067F13E /* Products */; projectDirPath = ""; - projectReferences = ( - { - ProductGroup = 16DEB7CF21C95CDE0028828C /* Products */; - ProjectRef = 16DEB7CE21C95CDE0028828C /* VirgilCrypto.xcodeproj */; - }, - { - ProductGroup = 42D9E5BD216E118F00AA51C2 /* Products */; - ProjectRef = 42D9E5BC216E118F00AA51C2 /* VirgilCryptoAPI.xcodeproj */; - }, - { - ProductGroup = 16DEB80C21C95CF80028828C /* Products */; - ProjectRef = 16DEB80B21C95CF80028828C /* VirgilSDK.xcodeproj */; - }, - ); projectRoot = ""; targets = ( 42B5DFF420C005300067F13E /* VirgilSDKKeyknox iOS */, @@ -1204,247 +975,6 @@ }; /* End PBXProject section */ -/* Begin PBXReferenceProxy section */ - 16DEB7E821C95CDE0028828C /* VirgilCrypto.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = VirgilCrypto.framework; - remoteRef = 16DEB7E721C95CDE0028828C /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 16DEB7EA21C95CDE0028828C /* VirgilCrypto iOS Tests.xctest */ = { - isa = PBXReferenceProxy; - fileType = wrapper.cfbundle; - path = "VirgilCrypto iOS Tests.xctest"; - remoteRef = 16DEB7E921C95CDE0028828C /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 16DEB7EC21C95CDE0028828C /* VirgilCrypto.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = VirgilCrypto.framework; - remoteRef = 16DEB7EB21C95CDE0028828C /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 16DEB7EE21C95CDE0028828C /* VirgilCrypto macOS Tests.xctest */ = { - isa = PBXReferenceProxy; - fileType = wrapper.cfbundle; - path = "VirgilCrypto macOS Tests.xctest"; - remoteRef = 16DEB7ED21C95CDE0028828C /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 16DEB7F021C95CDE0028828C /* VirgilCrypto.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = VirgilCrypto.framework; - remoteRef = 16DEB7EF21C95CDE0028828C /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 16DEB7F221C95CDE0028828C /* VirgilCrypto tvOS Tests.xctest */ = { - isa = PBXReferenceProxy; - fileType = wrapper.cfbundle; - path = "VirgilCrypto tvOS Tests.xctest"; - remoteRef = 16DEB7F121C95CDE0028828C /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 16DEB7F421C95CDE0028828C /* VirgilCrypto.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = VirgilCrypto.framework; - remoteRef = 16DEB7F321C95CDE0028828C /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 16DEB7F621C95CDE0028828C /* VirgilCryptoApiImpl.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = VirgilCryptoApiImpl.framework; - remoteRef = 16DEB7F521C95CDE0028828C /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 16DEB7F821C95CDE0028828C /* VirgilCryptoApiImpl iOS Tests.xctest */ = { - isa = PBXReferenceProxy; - fileType = wrapper.cfbundle; - path = "VirgilCryptoApiImpl iOS Tests.xctest"; - remoteRef = 16DEB7F721C95CDE0028828C /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 16DEB7FA21C95CDE0028828C /* VirgilCryptoApiImpl.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = VirgilCryptoApiImpl.framework; - remoteRef = 16DEB7F921C95CDE0028828C /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 16DEB7FC21C95CDE0028828C /* VirgilCryptoApiImpl macOS Tests.xctest */ = { - isa = PBXReferenceProxy; - fileType = wrapper.cfbundle; - path = "VirgilCryptoApiImpl macOS Tests.xctest"; - remoteRef = 16DEB7FB21C95CDE0028828C /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 16DEB7FE21C95CDE0028828C /* VirgilCryptoApiImpl.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = VirgilCryptoApiImpl.framework; - remoteRef = 16DEB7FD21C95CDE0028828C /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 16DEB80021C95CDE0028828C /* VirgilCryptoApiImpl tvOS Tests.xctest */ = { - isa = PBXReferenceProxy; - fileType = wrapper.cfbundle; - path = "VirgilCryptoApiImpl tvOS Tests.xctest"; - remoteRef = 16DEB7FF21C95CDE0028828C /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 16DEB80221C95CDE0028828C /* VirgilCryptoApiImpl.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = VirgilCryptoApiImpl.framework; - remoteRef = 16DEB80121C95CDE0028828C /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 16DEB80421C95CDE0028828C /* VSCCrypto.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = VSCCrypto.framework; - remoteRef = 16DEB80321C95CDE0028828C /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 16DEB80621C95CDE0028828C /* VSCCrypto.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = VSCCrypto.framework; - remoteRef = 16DEB80521C95CDE0028828C /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 16DEB80821C95CDE0028828C /* VSCCrypto.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = VSCCrypto.framework; - remoteRef = 16DEB80721C95CDE0028828C /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 16DEB80A21C95CDE0028828C /* VSCCrypto.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = VSCCrypto.framework; - remoteRef = 16DEB80921C95CDE0028828C /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 16DEB81B21C95CF80028828C /* VirgilSDK.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = VirgilSDK.framework; - remoteRef = 16DEB81A21C95CF80028828C /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 16DEB81D21C95CF80028828C /* SDKTestApp iOS.app */ = { - isa = PBXReferenceProxy; - fileType = wrapper.application; - path = "SDKTestApp iOS.app"; - remoteRef = 16DEB81C21C95CF80028828C /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 16DEB81F21C95CF80028828C /* VirgilSDK AppTests iOS.xctest */ = { - isa = PBXReferenceProxy; - fileType = wrapper.cfbundle; - path = "VirgilSDK AppTests iOS.xctest"; - remoteRef = 16DEB81E21C95CF80028828C /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 16DEB82121C95CF80028828C /* VirgilSDK.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = VirgilSDK.framework; - remoteRef = 16DEB82021C95CF80028828C /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 16DEB82321C95CF80028828C /* VirgilSDK macOS Tests.xctest */ = { - isa = PBXReferenceProxy; - fileType = wrapper.cfbundle; - path = "VirgilSDK macOS Tests.xctest"; - remoteRef = 16DEB82221C95CF80028828C /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 16DEB82521C95CF80028828C /* VirgilSDK.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = VirgilSDK.framework; - remoteRef = 16DEB82421C95CF80028828C /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 16DEB82721C95CF80028828C /* SDKTestApp tvOS.app */ = { - isa = PBXReferenceProxy; - fileType = wrapper.application; - path = "SDKTestApp tvOS.app"; - remoteRef = 16DEB82621C95CF80028828C /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 16DEB82921C95CF80028828C /* VirgilSDK AppTests tvOS.xctest */ = { - isa = PBXReferenceProxy; - fileType = wrapper.cfbundle; - path = "VirgilSDK AppTests tvOS.xctest"; - remoteRef = 16DEB82821C95CF80028828C /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 16DEB82B21C95CF80028828C /* VirgilSDK.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = VirgilSDK.framework; - remoteRef = 16DEB82A21C95CF80028828C /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 42D9E5C8216E119000AA51C2 /* VirgilCryptoAPI.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = VirgilCryptoAPI.framework; - remoteRef = 42D9E5C7216E119000AA51C2 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 42D9E5CA216E119000AA51C2 /* VirgilCryptoAPI iOS Tests.xctest */ = { - isa = PBXReferenceProxy; - fileType = wrapper.cfbundle; - path = "VirgilCryptoAPI iOS Tests.xctest"; - remoteRef = 42D9E5C9216E119000AA51C2 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 42D9E5CC216E119000AA51C2 /* VirgilCryptoAPI.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = VirgilCryptoAPI.framework; - remoteRef = 42D9E5CB216E119000AA51C2 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 42D9E5CE216E119000AA51C2 /* VirgilCryptoAPI macOS Tests.xctest */ = { - isa = PBXReferenceProxy; - fileType = wrapper.cfbundle; - path = "VirgilCryptoAPI macOS Tests.xctest"; - remoteRef = 42D9E5CD216E119000AA51C2 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 42D9E5D0216E119000AA51C2 /* VirgilCryptoAPI.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = VirgilCryptoAPI.framework; - remoteRef = 42D9E5CF216E119000AA51C2 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 42D9E5D2216E119000AA51C2 /* VirgilCryptoAPI tvOS Tests.xctest */ = { - isa = PBXReferenceProxy; - fileType = wrapper.cfbundle; - path = "VirgilCryptoAPI tvOS Tests.xctest"; - remoteRef = 42D9E5D1216E119000AA51C2 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 42D9E5D4216E119000AA51C2 /* VirgilCryptoAPI.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = VirgilCryptoAPI.framework; - remoteRef = 42D9E5D3216E119000AA51C2 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; -/* End PBXReferenceProxy section */ - /* Begin PBXResourcesBuildPhase section */ 42011E5620CE8FD400B84755 /* Resources */ = { isa = PBXResourcesBuildPhase; @@ -1839,6 +1369,10 @@ buildSettings = { CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Carthage/Build/iOS", + ); IPHONEOS_DEPLOYMENT_TARGET = 11.4; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -1858,6 +1392,10 @@ buildSettings = { CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Carthage/Build/iOS", + ); IPHONEOS_DEPLOYMENT_TARGET = 11.4; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -2004,6 +1542,10 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Carthage/Build/iOS", + ); INFOPLIST_FILE = VirgilSDKKeyknox/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; @@ -2032,6 +1574,10 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Carthage/Build/iOS", + ); INFOPLIST_FILE = VirgilSDKKeyknox/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; @@ -2061,6 +1607,10 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Carthage/Build/Mac", + ); FRAMEWORK_VERSION = A; INFOPLIST_FILE = VirgilSDKKeyknox/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -2090,6 +1640,10 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Carthage/Build/Mac", + ); FRAMEWORK_VERSION = A; INFOPLIST_FILE = VirgilSDKKeyknox/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -2118,6 +1672,10 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Carthage/Build/tvOS", + ); INFOPLIST_FILE = VirgilSDKKeyknox/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = ( @@ -2145,6 +1703,10 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Carthage/Build/tvOS", + ); INFOPLIST_FILE = VirgilSDKKeyknox/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = ( @@ -2172,6 +1734,10 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Carthage/Build/watchOS", + ); INFOPLIST_FILE = VirgilSDKKeyknox/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = ( @@ -2199,6 +1765,10 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Carthage/Build/watchOS", + ); INFOPLIST_FILE = VirgilSDKKeyknox/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = ( @@ -2278,6 +1848,10 @@ CODE_SIGN_IDENTITY = "-"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Carthage/Build/Mac", + ); LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/../Frameworks", @@ -2297,6 +1871,10 @@ CODE_SIGN_IDENTITY = "-"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Carthage/Build/Mac", + ); LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/../Frameworks", @@ -2315,6 +1893,10 @@ buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Carthage/Build/tvOS", + ); LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -2335,6 +1917,10 @@ buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Carthage/Build/tvOS", + ); LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/VirgilSDKKeyknox.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/VirgilSDKKeyknox.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings index 949b678..0c67376 100644 --- a/VirgilSDKKeyknox.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +++ b/VirgilSDKKeyknox.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -1,8 +1,5 @@ - - BuildSystemType - Original - + From 0ae8488f4a708d7c2914ee8f1fde133edcdd0269 Mon Sep 17 00:00:00 2001 From: Oleksandr Deundiak Date: Wed, 16 Jan 2019 13:41:39 +0200 Subject: [PATCH 08/18] Version bump --- README.md | 23 ++--------------------- VirgilSDKKeyknox.podspec | 2 +- VirgilSDKKeyknox/Info.plist | 2 +- 3 files changed, 4 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index c11acb1..31765aa 100644 --- a/README.md +++ b/README.md @@ -47,7 +47,7 @@ To integrate Virgil Keyknox into your Xcode project using CocoaPods, specify it target '' do use_frameworks! - pod 'VirgilSDKKeyknox', '~> 0.2.1' + pod 'VirgilSDKKeyknox', '~> 0.3' end ``` @@ -71,7 +71,7 @@ $ brew install carthage To integrate Virgil Keyknox into your Xcode project using Carthage, create an empty file with name *Cartfile* in your project's root folder and add following lines to your *Cartfile* ``` -github "VirgilSecurity/virgil-keyknox-x" ~> 0.2.1 +github "VirgilSecurity/virgil-keyknox-x" ~> 0.3 ``` #### Linking against prebuilt binaries @@ -126,25 +126,6 @@ Additionally, you'll need to copy debug symbols for debugging and crash reportin On your application target’s “Build Phases” settings tab, click the “+” icon and choose “New Copy Files Phase”. Click the “Destination” drop-down menu and select “Products Directory”. For each framework, drag and drop corresponding dSYM file. -#### Integrating as subproject - -It is possible to use carthage just for fetching the right sources for further integration into your project. -Run following command: - -```bash -$ carthage update --no-build -``` - -This will fetch dependencies into a *Carthage/Checkouts* folder inside your project's folder. Then, drag and drop VirgilCrypto.xcodeproj, VirgilCryptoAPI.xcodeproj, VirgilSDK.xcodeproj and VirgilSDKKeyknox.xcodeproj from corresponding folders inside Carthage/Checkouts folder to your Xcode Project Navigator sidebar. - -Next, on your application target's “General” settings tab, in the “Embedded Binaries” section add the following frameworks from subprojects: - - VirgilSDKKeyknox - - VirgilSDK - - VirgilCryptoAPI - - VirgilCryptoApiImpl - - VirgilCrypto - - VSCCrypto - ### Configure SDK To begin using Virgil Keyknox SDK you'll need to initialize `SyncKeyStorage` class. This class is responsible for synchronization between Keychain and Keyknox Cloud. diff --git a/VirgilSDKKeyknox.podspec b/VirgilSDKKeyknox.podspec index 188e02f..4445c16 100644 --- a/VirgilSDKKeyknox.podspec +++ b/VirgilSDKKeyknox.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = "VirgilSDKKeyknox" - s.version = "0.2.1" + s.version = "0.3.0" s.license = { :type => "BSD", :file => "LICENSE" } s.summary = "Virgil Keyknox SDK for Apple devices and languages." s.homepage = "https://github.com/VirgilSecurity/virgil-keyknox-x/" diff --git a/VirgilSDKKeyknox/Info.plist b/VirgilSDKKeyknox/Info.plist index f3f69d3..dccb7a2 100644 --- a/VirgilSDKKeyknox/Info.plist +++ b/VirgilSDKKeyknox/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 0.2.1 + 0.3.0 CFBundleVersion $(CURRENT_PROJECT_VERSION) NSPrincipalClass From da958aeef7a3bf77811c8668ec7a0ce17df70bfc Mon Sep 17 00:00:00 2001 From: Oleksandr Deundiak Date: Wed, 16 Jan 2019 14:28:40 +0200 Subject: [PATCH 09/18] Fixing travis.yml --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index ed50cee..317462d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -45,7 +45,7 @@ script: - carthage version - - carthage bootstrap --no-build + - carthage bootstrap - | if [ $SWIFT_LINT == "YES" ]; then From 7319f05ae716ccc5e3d99369675805bd25ffaf1b Mon Sep 17 00:00:00 2001 From: Oleksandr Deundiak Date: Wed, 16 Jan 2019 14:51:36 +0200 Subject: [PATCH 10/18] Styling fixes --- .swiftlint.yml | 95 ++++++++++++++++++- KeyknoxTestApp iOS/AppDelegate.swift | 2 +- KeyknoxTestApp iOS/ViewController.swift | 2 +- KeyknoxTestApp tvOS/AppDelegate.swift | 2 +- KeyknoxTestApp tvOS/ViewController.swift | 2 +- Source/Client/KeyknoxClient.swift | 8 +- Source/Client/KeyknoxClientProtocol.swift | 2 +- Source/Client/KeynoxClient+Queries.swift | 2 +- Source/Client/Models/KeyknoxData.swift | 2 +- Source/Client/Models/KeyknoxValue.swift | 8 +- Source/CloudKeyStorage/CloudEntry.swift | 7 +- .../CloudEntrySerializer.swift | 2 +- .../CloudKeyStorage+Obj-C.swift | 2 +- Source/CloudKeyStorage/CloudKeyStorage.swift | 36 ++++--- .../CloudKeyStorageError.swift | 10 +- .../CloudKeyStorageProtocol.swift | 2 +- Source/CloudKeyStorage/KeyEntry.swift | 2 +- Source/Crypto/KeyknoxCrypto.swift | 10 +- Source/Crypto/KeyknoxCryptoProtocol.swift | 2 +- .../KeyknoxManager/KeyknoxManager+Obj-C.swift | 8 +- .../KeyknoxManager+Operations.swift | 14 ++- .../KeyknoxManager+Queries.swift | 44 ++++++--- Source/KeyknoxManager/KeyknoxManager.swift | 9 +- .../KeyknoxManager/KeyknoxManagerError.swift | 10 +- .../KeychainStorageProtocol.swift | 2 +- .../KeychainStorageWrapper.swift | 2 +- Source/SyncKeyStorage/KeychainUtils.swift | 6 +- .../SyncKeyStorage/SyncKeyStorage+Obj-C.swift | 2 +- .../SyncKeyStorage+SyncHelpers.swift | 2 +- Source/SyncKeyStorage/SyncKeyStorage.swift | 23 +++-- .../SyncKeyStorage/SyncKeyStorageError.swift | 26 ++--- Tests/TestConfig.swift | 2 +- Tests/VSK001_ClientTests.m | 2 +- Tests/VSK002_KeyknoxManagerTests.m | 2 +- Tests/VSK003_CloudKeyStorageTests.m | 2 +- Tests/VSK004_SyncKeyStorageTests.swift | 2 +- Tests/VSK005_CloudEntrySerializerTests.swift | 2 +- ...006_SyncKeyStorageKeychainUtilsTests.swift | 2 +- Tests/VSK007_KeyStorageWrapperTests.swift | 2 +- 39 files changed, 254 insertions(+), 108 deletions(-) diff --git a/.swiftlint.yml b/.swiftlint.yml index feaa2f9..c526aae 100644 --- a/.swiftlint.yml +++ b/.swiftlint.yml @@ -1,9 +1,18 @@ disabled_rules: - redundant_optional_initialization - statement_position - - void_return - nesting - - explicit_enum_raw_value + - compiler_protocol_init + - sorted_imports + - discouraged_optional_collection + - attributes + - multiline_arguments_brackets + - explicit_type_interface + - multiline_parameters_brackets + - multiline_parameters + - closure_body_length + - no_grouping_extension + - function_body_length opt_in_rules: - array_init @@ -36,6 +45,86 @@ opt_in_rules: - unneeded_parentheses_in_closure_argument - vertical_parameter_alignment_on_call - yoda_condition + - closing_brace + - closure_parameter_position + - collection_alignment + - colon + - comma + - control_statement + - convenience_type + - cyclomatic_complexity + - discouraged_direct_init + - discouraged_optional_boolean + - empty_enum_arguments + - empty_parameters + - empty_parentheses_with_trailing_closure + - empty_string + - empty_xctest_method + - explicit_self + - fallthrough + - file_length + - for_where + - force_cast + - force_try + - function_body_length + - function_parameter_count + - identical_operands + - identifier_name + - implicit_getter + - implicit_return + - inert_defer + - is_disjoint + - large_tuple + - leading_whitespace + - legacy_constant + - legacy_constructor + - legacy_random + - let_var_whitespace + - line_length + - lower_acl_than_parent + - mark + - missing_docs + - modifier_order + - multiline_arguments + - multiline_function_chains + - multiline_literal_brackets + - multiple_closures_with_trailing_closure + - number_separator + - opening_brace + - operator_whitespace + - pattern_matching_keywords + - private_over_fileprivate + - protocol_property_accessors_order + - redundant_discardable_let + - redundant_string_enum_value + - redundant_type_annotation + - redundant_void_return + - return_arrow_whitespace + - shorthand_operator + - single_test_class + - static_operator + - switch_case_alignment + - switch_case_on_newline + - syntactic_sugar + - todo + - trailing_closure + - trailing_comma + - trailing_newline + - trailing_semicolon + - trailing_whitespace + - type_body_length + - type_name + - unavailable_function + - unneeded_break_in_switch + - unused_closure_parameter + - unused_enumerated + - unused_import + - unused_optional_binding + - unused_private_declaration + - vertical_parameter_alignment + - vertical_whitespace + - void_return + - weak_delegate excluded: - Carthage @@ -48,7 +137,7 @@ warning_threshold: 15 file_header: required_pattern: | \/\/ - \/\/ Copyright \(C\) 2015-2018 Virgil Security Inc. + \/\/ Copyright \(C\) 2015-2019 Virgil Security Inc. \/\/ \/\/ All rights reserved. \/\/ diff --git a/KeyknoxTestApp iOS/AppDelegate.swift b/KeyknoxTestApp iOS/AppDelegate.swift index 268cfae..4dab409 100644 --- a/KeyknoxTestApp iOS/AppDelegate.swift +++ b/KeyknoxTestApp iOS/AppDelegate.swift @@ -1,5 +1,5 @@ // -// Copyright (C) 2015-2018 Virgil Security Inc. +// Copyright (C) 2015-2019 Virgil Security Inc. // // All rights reserved. // diff --git a/KeyknoxTestApp iOS/ViewController.swift b/KeyknoxTestApp iOS/ViewController.swift index b2f2f32..ed0d1d1 100644 --- a/KeyknoxTestApp iOS/ViewController.swift +++ b/KeyknoxTestApp iOS/ViewController.swift @@ -1,5 +1,5 @@ // -// Copyright (C) 2015-2018 Virgil Security Inc. +// Copyright (C) 2015-2019 Virgil Security Inc. // // All rights reserved. // diff --git a/KeyknoxTestApp tvOS/AppDelegate.swift b/KeyknoxTestApp tvOS/AppDelegate.swift index ebb6b48..3af23c4 100644 --- a/KeyknoxTestApp tvOS/AppDelegate.swift +++ b/KeyknoxTestApp tvOS/AppDelegate.swift @@ -1,5 +1,5 @@ // -// Copyright (C) 2015-2018 Virgil Security Inc. +// Copyright (C) 2015-2019 Virgil Security Inc. // // All rights reserved. // diff --git a/KeyknoxTestApp tvOS/ViewController.swift b/KeyknoxTestApp tvOS/ViewController.swift index b2f2f32..ed0d1d1 100644 --- a/KeyknoxTestApp tvOS/ViewController.swift +++ b/KeyknoxTestApp tvOS/ViewController.swift @@ -1,5 +1,5 @@ // -// Copyright (C) 2015-2018 Virgil Security Inc. +// Copyright (C) 2015-2019 Virgil Security Inc. // // All rights reserved. // diff --git a/Source/Client/KeyknoxClient.swift b/Source/Client/KeyknoxClient.swift index 21b881f..59ccc3e 100644 --- a/Source/Client/KeyknoxClient.swift +++ b/Source/Client/KeyknoxClient.swift @@ -1,5 +1,5 @@ // -// Copyright (C) 2015-2018 Virgil Security Inc. +// Copyright (C) 2015-2019 Virgil Security Inc. // // All rights reserved. // @@ -58,19 +58,19 @@ import VirgilSDK /// - Parameters: /// - serviceUrl: URL of service client will use /// - connection: custom HTTPConnection - public override init(serviceUrl: URL = KeyknoxClient.defaultURL, connection: HttpConnectionProtocol) { + override public init(serviceUrl: URL = KeyknoxClient.defaultURL, connection: HttpConnectionProtocol) { super.init(serviceUrl: serviceUrl, connection: connection) } /// Initializes a new `KeyknoxClient` instance - @objc convenience public init() { + @objc public convenience init() { self.init(serviceUrl: KeyknoxClient.defaultURL) } /// Initializes a new `KeyknoxClient` instance /// /// - Parameter serviceUrl: URL of service client will use - @objc convenience public init(serviceUrl: URL) { + @objc public convenience init(serviceUrl: URL) { self.init(serviceUrl: serviceUrl, connection: HttpConnection()) } diff --git a/Source/Client/KeyknoxClientProtocol.swift b/Source/Client/KeyknoxClientProtocol.swift index 4a898f2..4ca1007 100644 --- a/Source/Client/KeyknoxClientProtocol.swift +++ b/Source/Client/KeyknoxClientProtocol.swift @@ -1,5 +1,5 @@ // -// Copyright (C) 2015-2018 Virgil Security Inc. +// Copyright (C) 2015-2019 Virgil Security Inc. // // All rights reserved. // diff --git a/Source/Client/KeynoxClient+Queries.swift b/Source/Client/KeynoxClient+Queries.swift index daf1805..066b1f7 100644 --- a/Source/Client/KeynoxClient+Queries.swift +++ b/Source/Client/KeynoxClient+Queries.swift @@ -1,5 +1,5 @@ // -// Copyright (C) 2015-2018 Virgil Security Inc. +// Copyright (C) 2015-2019 Virgil Security Inc. // // All rights reserved. // diff --git a/Source/Client/Models/KeyknoxData.swift b/Source/Client/Models/KeyknoxData.swift index 730a6cc..c90336e 100644 --- a/Source/Client/Models/KeyknoxData.swift +++ b/Source/Client/Models/KeyknoxData.swift @@ -1,5 +1,5 @@ // -// Copyright (C) 2015-2018 Virgil Security Inc. +// Copyright (C) 2015-2019 Virgil Security Inc. // // All rights reserved. // diff --git a/Source/Client/Models/KeyknoxValue.swift b/Source/Client/Models/KeyknoxValue.swift index 28ed6b5..1e8ee0f 100644 --- a/Source/Client/Models/KeyknoxValue.swift +++ b/Source/Client/Models/KeyknoxValue.swift @@ -1,5 +1,5 @@ // -// Copyright (C) 2015-2018 Virgil Security Inc. +// Copyright (C) 2015-2019 Virgil Security Inc. // // All rights reserved. // @@ -51,8 +51,10 @@ import Foundation @objc public let keyknoxHash: Data internal convenience init(keyknoxData: KeyknoxData, keyknoxHash: Data) { - self.init(meta: keyknoxData.meta, value: keyknoxData.value, - version: keyknoxData.version, keyknoxHash: keyknoxHash) + self.init(meta: keyknoxData.meta, + value: keyknoxData.value, + version: keyknoxData.version, + keyknoxHash: keyknoxHash) } internal init(meta: Data, value: Data, version: String, keyknoxHash: Data) { diff --git a/Source/CloudKeyStorage/CloudEntry.swift b/Source/CloudKeyStorage/CloudEntry.swift index db6f49f..dc8c2c4 100644 --- a/Source/CloudKeyStorage/CloudEntry.swift +++ b/Source/CloudKeyStorage/CloudEntry.swift @@ -1,5 +1,5 @@ // -// Copyright (C) 2015-2018 Virgil Security Inc. +// Copyright (C) 2015-2019 Virgil Security Inc. // // All rights reserved. // @@ -71,6 +71,8 @@ import Foundation super.init() } + // swiftlint:disable explicit_enum_raw_value + /// CodingKeys /// /// - name: name @@ -85,8 +87,11 @@ import Foundation case modificationDate = "modification_date" case meta } + + // swiftlint:enable explicit_enum_raw_value } +// swiftlint:disable missing_docs // MARK: - Equatable implementation public extension CloudEntry { static func == (lhs: CloudEntry, rhs: CloudEntry) -> Bool { diff --git a/Source/CloudKeyStorage/CloudEntrySerializer.swift b/Source/CloudKeyStorage/CloudEntrySerializer.swift index f36abd4..dc935c9 100644 --- a/Source/CloudKeyStorage/CloudEntrySerializer.swift +++ b/Source/CloudKeyStorage/CloudEntrySerializer.swift @@ -1,5 +1,5 @@ // -// Copyright (C) 2015-2018 Virgil Security Inc. +// Copyright (C) 2015-2019 Virgil Security Inc. // // All rights reserved. // diff --git a/Source/CloudKeyStorage/CloudKeyStorage+Obj-C.swift b/Source/CloudKeyStorage/CloudKeyStorage+Obj-C.swift index 3e55574..d0405c0 100644 --- a/Source/CloudKeyStorage/CloudKeyStorage+Obj-C.swift +++ b/Source/CloudKeyStorage/CloudKeyStorage+Obj-C.swift @@ -1,5 +1,5 @@ // -// Copyright (C) 2015-2018 Virgil Security Inc. +// Copyright (C) 2015-2019 Virgil Security Inc. // // All rights reserved. // diff --git a/Source/CloudKeyStorage/CloudKeyStorage.swift b/Source/CloudKeyStorage/CloudKeyStorage.swift index 13166ba..38de302 100644 --- a/Source/CloudKeyStorage/CloudKeyStorage.swift +++ b/Source/CloudKeyStorage/CloudKeyStorage.swift @@ -1,5 +1,5 @@ // -// Copyright (C) 2015-2018 Virgil Security Inc. +// Copyright (C) 2015-2019 Virgil Security Inc. // // All rights reserved. // @@ -68,10 +68,11 @@ import VirgilSDK /// - publicKeys: Public keys used for encryption and signature verification /// - privateKey: Private key used for decryption and signature verification /// - Throws: Rethrows from KeyknoxManager - @objc convenience public init(accessTokenProvider: AccessTokenProvider, + @objc public convenience init(accessTokenProvider: AccessTokenProvider, publicKeys: [PublicKey], privateKey: PrivateKey) throws { let keyknoxManager = try KeyknoxManager(accessTokenProvider: accessTokenProvider, - publicKeys: publicKeys, privateKey: privateKey) + publicKeys: publicKeys, + privateKey: privateKey) self.init(keyknoxManager: keyknoxManager) } @@ -92,8 +93,11 @@ extension CloudKeyStorage: CloudKeyStorageProtocol { var cloudEntries = [CloudEntry]() for entry in keyEntries { let now = Date() - let cloudEntry = CloudEntry(name: entry.name, data: entry.data, - creationDate: now, modificationDate: now, meta: entry.meta) + let cloudEntry = CloudEntry(name: entry.name, + data: entry.data, + creationDate: now, + modificationDate: now, + meta: entry.meta) cloudEntries.append(cloudEntry) self.cache[entry.name] = cloudEntry @@ -102,7 +106,8 @@ extension CloudKeyStorage: CloudKeyStorageProtocol { let data = try self.cloudEntrySerializer.serialize(dict: self.cache) let response = try self.keyknoxManager.pushValue(data, previousHash: self.decryptedKeyknoxData?.keyknoxHash) - .startSync().getResult() + .startSync() + .getResult() self.cache = try self.cloudEntrySerializer.deserialize(data: response.value) self.decryptedKeyknoxData = response @@ -172,8 +177,11 @@ extension CloudKeyStorage: CloudKeyStorageProtocol { let now = Date() let creationDate = self.cache[name]?.creationDate ?? now - let cloudEntry = CloudEntry(name: name, data: data, - creationDate: creationDate, modificationDate: now, meta: meta) + let cloudEntry = CloudEntry(name: name, + data: data, + creationDate: creationDate, + modificationDate: now, + meta: meta) self.cache[name] = cloudEntry @@ -181,7 +189,8 @@ extension CloudKeyStorage: CloudKeyStorageProtocol { let response = try self.keyknoxManager .pushValue(data, previousHash: self.decryptedKeyknoxData?.keyknoxHash) - .startSync().getResult() + .startSync() + .getResult() self.cache = try self.cloudEntrySerializer.deserialize(data: response.value) self.decryptedKeyknoxData = response @@ -271,7 +280,8 @@ extension CloudKeyStorage: CloudKeyStorageProtocol { let response = try self.keyknoxManager .pushValue(data, previousHash: self.decryptedKeyknoxData?.keyknoxHash) - .startSync().getResult() + .startSync() + .getResult() self.cache = try self.cloudEntrySerializer.deserialize(data: response.value) self.decryptedKeyknoxData = response @@ -331,8 +341,10 @@ extension CloudKeyStorage: CloudKeyStorageProtocol { let response = try self.keyknoxManager .updateRecipients(value: decryptedKeyknoxData.value, previousHash: decryptedKeyknoxData.keyknoxHash, - newPublicKeys: newPublicKeys, newPrivateKey: newPrivateKey) - .startSync().getResult() + newPublicKeys: newPublicKeys, + newPrivateKey: newPrivateKey) + .startSync() + .getResult() self.cache = try self.cloudEntrySerializer.deserialize(data: response.value) self.decryptedKeyknoxData = response diff --git a/Source/CloudKeyStorage/CloudKeyStorageError.swift b/Source/CloudKeyStorage/CloudKeyStorageError.swift index 762e4c5..8acf79e 100644 --- a/Source/CloudKeyStorage/CloudKeyStorageError.swift +++ b/Source/CloudKeyStorage/CloudKeyStorageError.swift @@ -1,5 +1,5 @@ // -// Copyright (C) 2015-2018 Virgil Security Inc. +// Copyright (C) 2015-2019 Virgil Security Inc. // // All rights reserved. // @@ -43,8 +43,8 @@ import Foundation /// - entryAlreadyExists: Entry already exists /// - cloudStorageOutOfSync: Sync this storage before any other operations @objc(VSKCloudKeyStorageError) public enum CloudKeyStorageError: Int, Error { - case entryNotFound - case entrySavingError - case entryAlreadyExists - case cloudStorageOutOfSync + case entryNotFound = 1 + case entrySavingError = 2 + case entryAlreadyExists = 3 + case cloudStorageOutOfSync = 4 } diff --git a/Source/CloudKeyStorage/CloudKeyStorageProtocol.swift b/Source/CloudKeyStorage/CloudKeyStorageProtocol.swift index fcab987..5981236 100644 --- a/Source/CloudKeyStorage/CloudKeyStorageProtocol.swift +++ b/Source/CloudKeyStorage/CloudKeyStorageProtocol.swift @@ -1,5 +1,5 @@ // -// Copyright (C) 2015-2018 Virgil Security Inc. +// Copyright (C) 2015-2019 Virgil Security Inc. // // All rights reserved. // diff --git a/Source/CloudKeyStorage/KeyEntry.swift b/Source/CloudKeyStorage/KeyEntry.swift index 6505fcb..e56a58f 100644 --- a/Source/CloudKeyStorage/KeyEntry.swift +++ b/Source/CloudKeyStorage/KeyEntry.swift @@ -1,5 +1,5 @@ // -// Copyright (C) 2015-2018 Virgil Security Inc. +// Copyright (C) 2015-2019 Virgil Security Inc. // // All rights reserved. // diff --git a/Source/Crypto/KeyknoxCrypto.swift b/Source/Crypto/KeyknoxCrypto.swift index 0b424a6..d1d3121 100644 --- a/Source/Crypto/KeyknoxCrypto.swift +++ b/Source/Crypto/KeyknoxCrypto.swift @@ -1,5 +1,5 @@ // -// Copyright (C) 2015-2018 Virgil Security Inc. +// Copyright (C) 2015-2019 Virgil Security Inc. // // All rights reserved. // @@ -102,7 +102,8 @@ extension KeyknoxCrypto: KeyknoxCryptoProtocol { do { decryptedData = try cipher.decryptData(encryptedKeyknoxValue.value, recipientId: virgilPrivateKey.identifier, - privateKey: privateKeyData, keyPassword: nil) + privateKey: privateKeyData, + keyPassword: nil) } catch { throw KeyknoxCryptoError.decryptionFailed @@ -128,7 +129,8 @@ extension KeyknoxCrypto: KeyknoxCryptoProtocol { throw KeyknoxCryptoError.signatureVerificationFailed } - return DecryptedKeyknoxValue(meta: meta, value: decryptedData, + return DecryptedKeyknoxValue(meta: meta, + value: decryptedData, version: encryptedKeyknoxValue.version, keyknoxHash: encryptedKeyknoxValue.keyknoxHash) } @@ -166,7 +168,7 @@ extension KeyknoxCrypto: KeyknoxCryptoProtocol { try cipher.setData(virgilPrivateKey.identifier, forKey: VirgilCrypto.CustomParamKeySignerId) try cipher.setData(signature, forKey: VirgilCrypto.CustomParamKeySignature) try virgilPublicKeys - .map { return ($0.identifier, self.crypto.exportPublicKey($0)) } + .map { ($0.identifier, self.crypto.exportPublicKey($0)) } .forEach { try cipher.addKeyRecipient($0, publicKey: $1) } let encryptedData = try cipher.encryptData(data, embedContentInfo: false) let meta = try cipher.contentInfo() diff --git a/Source/Crypto/KeyknoxCryptoProtocol.swift b/Source/Crypto/KeyknoxCryptoProtocol.swift index 9aebdbf..6537cb4 100644 --- a/Source/Crypto/KeyknoxCryptoProtocol.swift +++ b/Source/Crypto/KeyknoxCryptoProtocol.swift @@ -1,5 +1,5 @@ // -// Copyright (C) 2015-2018 Virgil Security Inc. +// Copyright (C) 2015-2019 Virgil Security Inc. // // All rights reserved. // diff --git a/Source/KeyknoxManager/KeyknoxManager+Obj-C.swift b/Source/KeyknoxManager/KeyknoxManager+Obj-C.swift index d7d869d..d7a3db3 100644 --- a/Source/KeyknoxManager/KeyknoxManager+Obj-C.swift +++ b/Source/KeyknoxManager/KeyknoxManager+Obj-C.swift @@ -1,5 +1,5 @@ // -// Copyright (C) 2015-2018 Virgil Security Inc. +// Copyright (C) 2015-2019 Virgil Security Inc. // // All rights reserved. // @@ -90,8 +90,10 @@ extension KeyknoxManager { newPublicKeys: [PublicKey]? = nil, newPrivateKey: PrivateKey? = nil, completion: @escaping (DecryptedKeyknoxValue?, Error?) -> Void) { - self.updateRecipients(value: value, previousHash: previousHash, + self.updateRecipients(value: value, + previousHash: previousHash, newPublicKeys: newPublicKeys, - newPrivateKey: newPrivateKey).start(completion: completion) + newPrivateKey: newPrivateKey) + .start(completion: completion) } } diff --git a/Source/KeyknoxManager/KeyknoxManager+Operations.swift b/Source/KeyknoxManager/KeyknoxManager+Operations.swift index c2de832..a45d1c3 100644 --- a/Source/KeyknoxManager/KeyknoxManager+Operations.swift +++ b/Source/KeyknoxManager/KeyknoxManager+Operations.swift @@ -1,5 +1,5 @@ // -// Copyright (C) 2015-2018 Virgil Security Inc. +// Copyright (C) 2015-2019 Virgil Security Inc. // // All rights reserved. // @@ -61,7 +61,8 @@ extension KeyknoxManager { let data: (Data, Data) = try operation.findDependencyResult() let encryptedKeyknoxData: EncryptedKeyknoxValue = try operation.findDependencyResult() - let response = try self.keyknoxClient.pushValue(meta: data.0, value: data.1, + let response = try self.keyknoxClient.pushValue(meta: data.0, + value: data.1, previousHash: encryptedKeyknoxData.keyknoxHash, token: token.stringRepresentation()) @@ -83,7 +84,8 @@ extension KeyknoxManager { let token: AccessToken = try operation.findDependencyResult() let data: (Data, Data) = try operation.findDependencyResult() - let response = try self.keyknoxClient.pushValue(meta: data.0, value: data.1, + let response = try self.keyknoxClient.pushValue(meta: data.0, + value: data.1, previousHash: previousHash, token: token.stringRepresentation()) @@ -124,7 +126,8 @@ extension KeyknoxManager { let keyknoxData: EncryptedKeyknoxValue = try operation.findDependencyResult() let result = try self.crypto.decrypt(encryptedKeyknoxValue: keyknoxData, - privateKey: self.privateKey, publicKeys: self.publicKeys) + privateKey: self.privateKey, + publicKeys: self.publicKeys) completion(result, nil) } @@ -150,7 +153,8 @@ extension KeyknoxManager { self.privateKey = newPrivateKey } - completion(try self.crypto.encrypt(data: data, privateKey: self.privateKey, + completion(try self.crypto.encrypt(data: data, + privateKey: self.privateKey, publicKeys: self.publicKeys), nil) } catch { diff --git a/Source/KeyknoxManager/KeyknoxManager+Queries.swift b/Source/KeyknoxManager/KeyknoxManager+Queries.swift index bb33f93..32a360a 100644 --- a/Source/KeyknoxManager/KeyknoxManager+Queries.swift +++ b/Source/KeyknoxManager/KeyknoxManager+Queries.swift @@ -1,5 +1,5 @@ // -// Copyright (C) 2015-2018 Virgil Security Inc. +// Copyright (C) 2015-2019 Virgil Security Inc. // // All rights reserved. // @@ -48,7 +48,7 @@ extension KeyknoxManager { /// - Returns: CallbackOperation open func pushValue(_ value: Data, previousHash: Data?) -> GenericOperation { let makeAggregateOperation: (Bool) -> GenericOperation = { force in - return CallbackOperation { _, completion in + CallbackOperation { _, completion in self.queue.async { let tokenContext = TokenContext(service: "keyknox", operation: "put", forceReload: force) let getTokenOperation = OperationUtils.makeGetTokenOperation( @@ -65,8 +65,14 @@ extension KeyknoxManager { pushValueOperation.addDependency(getTokenOperation) decryptOperation.addDependency(pushValueOperation) - let operations = [getTokenOperation, extractDataOperations, - encryptOperation, pushValueOperation, decryptOperation] + let operations = [ + getTokenOperation, + extractDataOperations, + encryptOperation, + pushValueOperation, + decryptOperation + ] + let completionOperation = OperationUtils.makeCompletionOperation(completion: completion) operations.forEach { completionOperation.addDependency($0) @@ -91,7 +97,7 @@ extension KeyknoxManager { /// - Returns: CallbackOperation open func pullValue() -> GenericOperation { let makeAggregateOperation: (Bool) -> GenericOperation = { force in - return CallbackOperation { _, completion in + CallbackOperation { _, completion in self.queue.async { let tokenContext = TokenContext(service: "keyknox", operation: "get", forceReload: force) let getTokenOperation = OperationUtils.makeGetTokenOperation( @@ -127,7 +133,7 @@ extension KeyknoxManager { /// - Returns: GenericOperation open func resetValue() -> GenericOperation { let makeAggregateOperation: (Bool) -> GenericOperation = { force in - return CallbackOperation { _, completion in + CallbackOperation { _, completion in self.queue.async { let tokenContext = TokenContext(service: "keyknox", operation: "delete", forceReload: force) let getTokenOperation = OperationUtils.makeGetTokenOperation( @@ -166,7 +172,7 @@ extension KeyknoxManager { open func updateRecipients(newPublicKeys: [PublicKey]? = nil, newPrivateKey: PrivateKey? = nil) -> GenericOperation { let makeAggregateOperation: (Bool) -> GenericOperation = { force in - return CallbackOperation { _, completion in + CallbackOperation { _, completion in self.queue.async { guard (newPublicKeys != nil && !(newPublicKeys?.isEmpty ?? true)) || newPrivateKey != nil else { @@ -228,8 +234,16 @@ extension KeyknoxManager { pushValueOperation.addDependency(encryptOperation) decryptOperation2.addDependency(pushValueOperation) - let operations = [getTokenOperation, pullValueOperation, decryptOperation, - extractDataOperation, encryptOperation, pushValueOperation, decryptOperation2] + let operations = [ + getTokenOperation, + pullValueOperation, + decryptOperation, + extractDataOperation, + encryptOperation, + pushValueOperation, + decryptOperation2 + ] + operations.forEach { completionOperation.addDependency($0) } @@ -260,7 +274,7 @@ extension KeyknoxManager { newPublicKeys: [PublicKey]? = nil, newPrivateKey: PrivateKey? = nil) -> GenericOperation { let makeAggregateOperation: (Bool) -> GenericOperation = { force in - return CallbackOperation { _, completion in + CallbackOperation { _, completion in self.queue.async { guard !value.isEmpty else { completion(nil, KeyknoxManagerError.dataIsEmpty) @@ -283,8 +297,14 @@ extension KeyknoxManager { pushValueOperation.addDependency(encryptOperation) decryptOperation.addDependency(pushValueOperation) - let operations = [extractDataOperation, encryptOperation, getTokenOperation, - pushValueOperation, decryptOperation] + let operations = [ + extractDataOperation, + encryptOperation, + getTokenOperation, + pushValueOperation, + decryptOperation + ] + let completionOperation = OperationUtils.makeCompletionOperation(completion: completion) operations.forEach { completionOperation.addDependency($0) diff --git a/Source/KeyknoxManager/KeyknoxManager.swift b/Source/KeyknoxManager/KeyknoxManager.swift index 72a5ef8..1f45713 100644 --- a/Source/KeyknoxManager/KeyknoxManager.swift +++ b/Source/KeyknoxManager/KeyknoxManager.swift @@ -1,5 +1,5 @@ // -// Copyright (C) 2015-2018 Virgil Security Inc. +// Copyright (C) 2015-2019 Virgil Security Inc. // // All rights reserved. // @@ -48,10 +48,10 @@ import VirgilCryptoAPI @objc public let keyknoxClient: KeyknoxClientProtocol /// Public keys used for encryption and signature verification - @objc internal(set) public var publicKeys: [PublicKey] + @objc public internal(set) var publicKeys: [PublicKey] /// Private key used for decryption and signing - @objc internal(set) public var privateKey: PrivateKey + @objc public internal(set) var privateKey: PrivateKey /// KeyknoxCryptoProtocol implementation public let crypto: KeyknoxCryptoProtocol @@ -105,7 +105,8 @@ import VirgilCryptoAPI retryOnUnauthorized: Bool = false) throws { try self.init(accessTokenProvider: accessTokenProvider, keyknoxClient: keyknoxClient, - publicKeys: publicKeys, privateKey: privateKey, + publicKeys: publicKeys, + privateKey: privateKey, crypto: KeyknoxCrypto(), retryOnUnauthorized: retryOnUnauthorized) } diff --git a/Source/KeyknoxManager/KeyknoxManagerError.swift b/Source/KeyknoxManager/KeyknoxManagerError.swift index ae7aee2..0017859 100644 --- a/Source/KeyknoxManager/KeyknoxManagerError.swift +++ b/Source/KeyknoxManager/KeyknoxManagerError.swift @@ -1,5 +1,5 @@ // -// Copyright (C) 2015-2018 Virgil Security Inc. +// Copyright (C) 2015-2019 Virgil Security Inc. // // All rights reserved. // @@ -43,8 +43,8 @@ import Foundation /// - serverRespondedWithTamperedValue: Value pushed to Keyknox and returned from Keyknox doesn't match /// - dataIsEmpty: Data is empty @objc(VSKKeyknoxManagerError) public enum KeyknoxManagerError: Int, Error { - case noPublicKeys = 0 - case keysShouldBeUpdated = 1 - case serverRespondedWithTamperedValue = 2 - case dataIsEmpty + case noPublicKeys = 1 + case keysShouldBeUpdated = 2 + case serverRespondedWithTamperedValue = 3 + case dataIsEmpty = 4 } diff --git a/Source/SyncKeyStorage/KeychainStorageProtocol.swift b/Source/SyncKeyStorage/KeychainStorageProtocol.swift index 572ab34..bc04c10 100644 --- a/Source/SyncKeyStorage/KeychainStorageProtocol.swift +++ b/Source/SyncKeyStorage/KeychainStorageProtocol.swift @@ -1,5 +1,5 @@ // -// Copyright (C) 2015-2018 Virgil Security Inc. +// Copyright (C) 2015-2019 Virgil Security Inc. // // All rights reserved. // diff --git a/Source/SyncKeyStorage/KeychainStorageWrapper.swift b/Source/SyncKeyStorage/KeychainStorageWrapper.swift index c633c7c..ec3fadf 100644 --- a/Source/SyncKeyStorage/KeychainStorageWrapper.swift +++ b/Source/SyncKeyStorage/KeychainStorageWrapper.swift @@ -1,5 +1,5 @@ // -// Copyright (C) 2015-2018 Virgil Security Inc. +// Copyright (C) 2015-2019 Virgil Security Inc. // // All rights reserved. // diff --git a/Source/SyncKeyStorage/KeychainUtils.swift b/Source/SyncKeyStorage/KeychainUtils.swift index 847cecf..4bd12ad 100644 --- a/Source/SyncKeyStorage/KeychainUtils.swift +++ b/Source/SyncKeyStorage/KeychainUtils.swift @@ -1,5 +1,5 @@ // -// Copyright (C) 2015-2018 Virgil Security Inc. +// Copyright (C) 2015-2019 Virgil Security Inc. // // All rights reserved. // @@ -80,9 +80,9 @@ internal final class KeychainUtils { ] if let meta = cloudEntry.meta { - try additionalDict.merge(meta, uniquingKeysWith: { _, _ in + try additionalDict.merge(meta) { _, _ in throw SyncKeyStorageError.invalidKeysInEntryMeta - }) + } } return additionalDict diff --git a/Source/SyncKeyStorage/SyncKeyStorage+Obj-C.swift b/Source/SyncKeyStorage/SyncKeyStorage+Obj-C.swift index 02cdf20..c875fd7 100644 --- a/Source/SyncKeyStorage/SyncKeyStorage+Obj-C.swift +++ b/Source/SyncKeyStorage/SyncKeyStorage+Obj-C.swift @@ -1,5 +1,5 @@ // -// Copyright (C) 2015-2018 Virgil Security Inc. +// Copyright (C) 2015-2019 Virgil Security Inc. // // All rights reserved. // diff --git a/Source/SyncKeyStorage/SyncKeyStorage+SyncHelpers.swift b/Source/SyncKeyStorage/SyncKeyStorage+SyncHelpers.swift index b8d83d9..2c62609 100644 --- a/Source/SyncKeyStorage/SyncKeyStorage+SyncHelpers.swift +++ b/Source/SyncKeyStorage/SyncKeyStorage+SyncHelpers.swift @@ -1,5 +1,5 @@ // -// Copyright (C) 2015-2018 Virgil Security Inc. +// Copyright (C) 2015-2019 Virgil Security Inc. // // All rights reserved. // diff --git a/Source/SyncKeyStorage/SyncKeyStorage.swift b/Source/SyncKeyStorage/SyncKeyStorage.swift index e445725..351a256 100644 --- a/Source/SyncKeyStorage/SyncKeyStorage.swift +++ b/Source/SyncKeyStorage/SyncKeyStorage.swift @@ -1,5 +1,5 @@ // -// Copyright (C) 2015-2018 Virgil Security Inc. +// Copyright (C) 2015-2019 Virgil Security Inc. // // All rights reserved. // @@ -88,10 +88,11 @@ import VirgilCryptoAPI /// - publicKeys: Public keys used for encryption and signature verification /// - privateKey: Private key used for decryption and signature generation /// - Throws: Rethrows from CloudKeyStorage and KeychainStorageParams - @objc convenience public init(identity: String, accessTokenProvider: AccessTokenProvider, + @objc public convenience init(identity: String, accessTokenProvider: AccessTokenProvider, publicKeys: [PublicKey], privateKey: PrivateKey) throws { let cloudKeyStorage = try CloudKeyStorage(accessTokenProvider: accessTokenProvider, - publicKeys: publicKeys, privateKey: privateKey) + publicKeys: publicKeys, + privateKey: privateKey) try self.init(identity: identity, cloudKeyStorage: cloudKeyStorage) } @@ -121,8 +122,12 @@ extension SyncKeyStorage { throw SyncKeyStorageError.cloudEntryNotFoundWhileUpdating } - let cloudEntry = try self.cloudKeyStorage.updateEntry(withName: name, data: data, - meta: meta).startSync().getResult() + let cloudEntry = try self.cloudKeyStorage.updateEntry(withName: name, + data: data, + meta: meta) + .startSync() + .getResult() + let meta = try self.keychainUtils.createMetaForKeychain(from: cloudEntry) try self.keychainStorage.updateEntry(withName: name, data: data, meta: meta) @@ -299,8 +304,12 @@ extension SyncKeyStorage { syncOperation.addDependency(retrieveCloudEntriesOperation) syncOperation.addDependency(retrieveKeychainEntriesOperation) - let operations = [retrieveCloudEntriesOperation, retrieveKeychainEntriesOperation, - syncOperation] + let operations = [ + retrieveCloudEntriesOperation, + retrieveKeychainEntriesOperation, + syncOperation + ] + let completionOperation = OperationUtils.makeCompletionOperation(completion: completion) operations.forEach { completionOperation.addDependency($0) diff --git a/Source/SyncKeyStorage/SyncKeyStorageError.swift b/Source/SyncKeyStorage/SyncKeyStorageError.swift index bd09edd..7d0c3e5 100644 --- a/Source/SyncKeyStorage/SyncKeyStorageError.swift +++ b/Source/SyncKeyStorage/SyncKeyStorageError.swift @@ -1,5 +1,5 @@ // -// Copyright (C) 2015-2018 Virgil Security Inc. +// Copyright (C) 2015-2019 Virgil Security Inc. // // All rights reserved. // @@ -51,16 +51,16 @@ import Foundation /// - inconsistentStateError: Inconsistent state error /// - entrySavingError: Error while saving entry @objc(VSKSyncKeyStorageError) public enum SyncKeyStorageError: Int, Error { - case keychainEntryNotFoundWhileUpdating - case cloudEntryNotFoundWhileUpdating - case cloudEntryNotFoundWhileDeleting - case keychainEntryNotFoundWhileComparing - case keychainEntryAlreadyExistsWhileStoring - case cloudEntryAlreadyExistsWhileStoring - case invalidModificationDateInKeychainEntry - case invalidCreationDateInKeychainEntry - case noMetaInKeychainEntry - case invalidKeysInEntryMeta - case inconsistentStateError - case entrySavingError + case keychainEntryNotFoundWhileUpdating = 1 + case cloudEntryNotFoundWhileUpdating = 2 + case cloudEntryNotFoundWhileDeleting = 3 + case keychainEntryNotFoundWhileComparing = 4 + case keychainEntryAlreadyExistsWhileStoring = 5 + case cloudEntryAlreadyExistsWhileStoring = 6 + case invalidModificationDateInKeychainEntry = 7 + case invalidCreationDateInKeychainEntry = 8 + case noMetaInKeychainEntry = 9 + case invalidKeysInEntryMeta = 10 + case inconsistentStateError = 11 + case entrySavingError = 12 } diff --git a/Tests/TestConfig.swift b/Tests/TestConfig.swift index f9c3669..c0bd21a 100644 --- a/Tests/TestConfig.swift +++ b/Tests/TestConfig.swift @@ -1,5 +1,5 @@ // -// Copyright (C) 2015-2018 Virgil Security Inc. +// Copyright (C) 2015-2019 Virgil Security Inc. // // All rights reserved. // diff --git a/Tests/VSK001_ClientTests.m b/Tests/VSK001_ClientTests.m index 1c8edc8..c810ccb 100644 --- a/Tests/VSK001_ClientTests.m +++ b/Tests/VSK001_ClientTests.m @@ -1,5 +1,5 @@ // -// Copyright (C) 2015-2018 Virgil Security Inc. +// Copyright (C) 2015-2019 Virgil Security Inc. // // All rights reserved. // diff --git a/Tests/VSK002_KeyknoxManagerTests.m b/Tests/VSK002_KeyknoxManagerTests.m index 5871c56..58ed7b9 100644 --- a/Tests/VSK002_KeyknoxManagerTests.m +++ b/Tests/VSK002_KeyknoxManagerTests.m @@ -1,5 +1,5 @@ // -// Copyright (C) 2015-2018 Virgil Security Inc. +// Copyright (C) 2015-2019 Virgil Security Inc. // // All rights reserved. // diff --git a/Tests/VSK003_CloudKeyStorageTests.m b/Tests/VSK003_CloudKeyStorageTests.m index 34d2456..0e32cd2 100644 --- a/Tests/VSK003_CloudKeyStorageTests.m +++ b/Tests/VSK003_CloudKeyStorageTests.m @@ -1,5 +1,5 @@ // -// Copyright (C) 2015-2018 Virgil Security Inc. +// Copyright (C) 2015-2019 Virgil Security Inc. // // All rights reserved. // diff --git a/Tests/VSK004_SyncKeyStorageTests.swift b/Tests/VSK004_SyncKeyStorageTests.swift index 27766dc..bf2c721 100644 --- a/Tests/VSK004_SyncKeyStorageTests.swift +++ b/Tests/VSK004_SyncKeyStorageTests.swift @@ -1,5 +1,5 @@ // -// Copyright (C) 2015-2018 Virgil Security Inc. +// Copyright (C) 2015-2019 Virgil Security Inc. // // All rights reserved. // diff --git a/Tests/VSK005_CloudEntrySerializerTests.swift b/Tests/VSK005_CloudEntrySerializerTests.swift index a2110f8..3fecf94 100644 --- a/Tests/VSK005_CloudEntrySerializerTests.swift +++ b/Tests/VSK005_CloudEntrySerializerTests.swift @@ -1,5 +1,5 @@ // -// Copyright (C) 2015-2018 Virgil Security Inc. +// Copyright (C) 2015-2019 Virgil Security Inc. // // All rights reserved. // diff --git a/Tests/VSK006_SyncKeyStorageKeychainUtilsTests.swift b/Tests/VSK006_SyncKeyStorageKeychainUtilsTests.swift index ac9d01a..5f7ce9b 100644 --- a/Tests/VSK006_SyncKeyStorageKeychainUtilsTests.swift +++ b/Tests/VSK006_SyncKeyStorageKeychainUtilsTests.swift @@ -1,5 +1,5 @@ // -// Copyright (C) 2015-2018 Virgil Security Inc. +// Copyright (C) 2015-2019 Virgil Security Inc. // // All rights reserved. // diff --git a/Tests/VSK007_KeyStorageWrapperTests.swift b/Tests/VSK007_KeyStorageWrapperTests.swift index 8fc9817..23ae1bb 100644 --- a/Tests/VSK007_KeyStorageWrapperTests.swift +++ b/Tests/VSK007_KeyStorageWrapperTests.swift @@ -1,5 +1,5 @@ // -// Copyright (C) 2015-2018 Virgil Security Inc. +// Copyright (C) 2015-2019 Virgil Security Inc. // // All rights reserved. // From a525093c937289e1d3cc6fa0fd0cbe35c71c6051 Mon Sep 17 00:00:00 2001 From: Oleksandr Deundiak Date: Wed, 16 Jan 2019 14:53:10 +0200 Subject: [PATCH 11/18] Travis fixes --- .travis.yml | 2 +- VirgilSDKKeyknox.xcodeproj/project.pbxproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 317462d..015621a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -74,7 +74,7 @@ script: # Build with carthage - if [ $PUBLISH_CARTHAGE == "YES" ]; then - carthage build --no-skip-current --no-use-binaries; + carthage build --no-skip-current; fi # Check pod lib diff --git a/VirgilSDKKeyknox.xcodeproj/project.pbxproj b/VirgilSDKKeyknox.xcodeproj/project.pbxproj index ab6aa46..56a2a8c 100644 --- a/VirgilSDKKeyknox.xcodeproj/project.pbxproj +++ b/VirgilSDKKeyknox.xcodeproj/project.pbxproj @@ -434,10 +434,10 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 424A7EC721EF4E2B006BED3F /* VirgilSDK.framework in Frameworks */, 424A7EC421EF4E2B006BED3F /* VirgilCryptoApiImpl.framework in Frameworks */, 424A7EC521EF4E2B006BED3F /* VirgilCrypto.framework in Frameworks */, 424A7EC621EF4E2B006BED3F /* VSCCrypto.framework in Frameworks */, - 424A7EC721EF4E2B006BED3F /* VirgilSDK.framework in Frameworks */, 424A7EC821EF4E2B006BED3F /* VirgilCryptoAPI.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; From 38015a9c6eb81729da008f5ce490498202e9c174 Mon Sep 17 00:00:00 2001 From: Oleksandr Deundiak Date: Wed, 16 Jan 2019 14:59:23 +0200 Subject: [PATCH 12/18] Mac tests fixes --- VirgilSDKKeyknox.xcodeproj/project.pbxproj | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/VirgilSDKKeyknox.xcodeproj/project.pbxproj b/VirgilSDKKeyknox.xcodeproj/project.pbxproj index 56a2a8c..0ce11d3 100644 --- a/VirgilSDKKeyknox.xcodeproj/project.pbxproj +++ b/VirgilSDKKeyknox.xcodeproj/project.pbxproj @@ -82,6 +82,11 @@ 424A7F0621EF4F78006BED3F /* VirgilCryptoApiImpl.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 424A7EB821EF4E1F006BED3F /* VirgilCryptoApiImpl.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 424A7F0721EF4F78006BED3F /* VirgilSDK.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 424A7EB621EF4E1E006BED3F /* VirgilSDK.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 424A7F0821EF4F78006BED3F /* VSCCrypto.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 424A7EB521EF4E1E006BED3F /* VSCCrypto.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 424A7F0D21EF621E006BED3F /* VirgilCrypto.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 424A7EC021EF4E2B006BED3F /* VirgilCrypto.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 424A7F0E21EF621E006BED3F /* VirgilCryptoAPI.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 424A7EC321EF4E2B006BED3F /* VirgilCryptoAPI.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 424A7F0F21EF621E006BED3F /* VirgilCryptoApiImpl.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 424A7EBF21EF4E2B006BED3F /* VirgilCryptoApiImpl.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 424A7F1021EF621E006BED3F /* VirgilSDK.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 424A7EC221EF4E2B006BED3F /* VirgilSDK.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 424A7F1121EF621E006BED3F /* VSCCrypto.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 424A7EC121EF4E2B006BED3F /* VSCCrypto.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 424B9C2120EBCDDB00415ED4 /* KeyknoxManager+Operations.swift in Sources */ = {isa = PBXBuildFile; fileRef = 424B9C2020EBCDDB00415ED4 /* KeyknoxManager+Operations.swift */; }; 424B9C2220EBCDDB00415ED4 /* KeyknoxManager+Operations.swift in Sources */ = {isa = PBXBuildFile; fileRef = 424B9C2020EBCDDB00415ED4 /* KeyknoxManager+Operations.swift */; }; 424B9C2320EBCDDB00415ED4 /* KeyknoxManager+Operations.swift in Sources */ = {isa = PBXBuildFile; fileRef = 424B9C2020EBCDDB00415ED4 /* KeyknoxManager+Operations.swift */; }; @@ -300,6 +305,20 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 424A7F0C21EF6214006BED3F /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + 424A7F0D21EF621E006BED3F /* VirgilCrypto.framework in CopyFiles */, + 424A7F0E21EF621E006BED3F /* VirgilCryptoAPI.framework in CopyFiles */, + 424A7F0F21EF621E006BED3F /* VirgilCryptoApiImpl.framework in CopyFiles */, + 424A7F1021EF621E006BED3F /* VirgilSDK.framework in CopyFiles */, + 424A7F1121EF621E006BED3F /* VSCCrypto.framework in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 42D0585B20EB76A000FC544E /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; @@ -863,6 +882,7 @@ 42D0582820EAA6E100FC544E /* Sources */, 42D0582920EAA6E100FC544E /* Frameworks */, 42D0582A20EAA6E100FC544E /* Resources */, + 424A7F0C21EF6214006BED3F /* CopyFiles */, ); buildRules = ( ); From 8dfaf5f9e54d9e327e05ef39283bd5120c7923fc Mon Sep 17 00:00:00 2001 From: Oleksandr Deundiak Date: Wed, 16 Jan 2019 16:53:32 +0200 Subject: [PATCH 13/18] Replaced KeychainStorageWrapper with VirgilSDK.SandboxedKeychainStorage --- Cartfile | 2 +- Cartfile.resolved | 2 +- .../KeychainStorageProtocol.swift | 88 ------------ .../KeychainStorageWrapper.swift | 129 ------------------ Source/SyncKeyStorage/SyncKeyStorage.swift | 2 +- VirgilSDKKeyknox.xcodeproj/project.pbxproj | 20 --- 6 files changed, 3 insertions(+), 240 deletions(-) delete mode 100644 Source/SyncKeyStorage/KeychainStorageProtocol.swift delete mode 100644 Source/SyncKeyStorage/KeychainStorageWrapper.swift diff --git a/Cartfile b/Cartfile index 6af2161..5456ef0 100644 --- a/Cartfile +++ b/Cartfile @@ -1,2 +1,2 @@ -github "VirgilSecurity/virgil-sdk-x" ~> 5.4 +github "VirgilSecurity/virgil-sdk-x" "develop" github "VirgilSecurity/virgil-crypto-x" ~> 3.2 \ No newline at end of file diff --git a/Cartfile.resolved b/Cartfile.resolved index 70eaa5a..93162ed 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -1,3 +1,3 @@ github "VirgilSecurity/virgil-crypto-x" "3.2.2" github "VirgilSecurity/virgil-cryptoapi-x" "1.0.4" -github "VirgilSecurity/virgil-sdk-x" "5.6.1" +github "VirgilSecurity/virgil-sdk-x" "093ee1bd928176956da984bddb3db36e5d5c8368" diff --git a/Source/SyncKeyStorage/KeychainStorageProtocol.swift b/Source/SyncKeyStorage/KeychainStorageProtocol.swift deleted file mode 100644 index bc04c10..0000000 --- a/Source/SyncKeyStorage/KeychainStorageProtocol.swift +++ /dev/null @@ -1,88 +0,0 @@ -// -// Copyright (C) 2015-2019 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 VirgilSDK - -/// Protocol with Keychain operations -public protocol KeychainStorageProtocol { - /// Stores key in Keychain - /// - /// - Parameters: - /// - data: Data - /// - name: Name - /// - meta: Meta - /// - Returns: Stored Keychain entry - /// - Throws: Depends on implementation - func store(data: Data, withName name: String, meta: [String: String]?) throws -> KeychainEntry - - /// Updates entry - /// - /// - Parameters: - /// - name: Name - /// - data: New data - /// - meta: New meta - /// - Throws: Depends on implementation - func updateEntry(withName name: String, data: Data, meta: [String: String]?) throws - - /// Retrieves entry from Keychain - /// - /// - Parameter name: Name - /// - Returns: Retrieved Keychain entry - /// - Throws: Depends on implementation - func retrieveEntry(withName name: String) throws -> KeychainEntry - - /// Retrieves all entries from Keychain - /// - /// - Returns: All Keychain entries - /// - Throws: Depends on implementation - func retrieveAllEntries() throws -> [KeychainEntry] - - /// Deletes keychain entry - /// - /// - Parameter name: Name - /// - Throws: Depends on implementation - func deleteEntry(withName name: String) throws - - /// Checks if entry exists in Keychain - /// - /// - Parameter name: Name - /// - Returns: true if entry exists, false - otherwise - /// - Throws: Depends on implementation - func existsEntry(withName name: String) throws -> Bool -} - -extension KeychainStorage: KeychainStorageProtocol { } diff --git a/Source/SyncKeyStorage/KeychainStorageWrapper.swift b/Source/SyncKeyStorage/KeychainStorageWrapper.swift deleted file mode 100644 index ec3fadf..0000000 --- a/Source/SyncKeyStorage/KeychainStorageWrapper.swift +++ /dev/null @@ -1,129 +0,0 @@ -// -// Copyright (C) 2015-2019 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 VirgilSDK - -/// Declares error types and codes for KeychainStorageWrapper -/// -/// - errorConvertingKeychainEntry: Invalid Keychain entry -@objc(VSKKeychainStorageWrapperError) public enum KeychainStorageWrapperError: Int, Error { - case errorConvertingKeychainEntry = 0 -} - -internal final class KeychainStorageWrapper { - internal let keychainStorage: KeychainStorageProtocol - internal let identity: String - - internal init(identity: String, keychainStorage: KeychainStorageProtocol) { - self.identity = identity - self.keychainStorage = keychainStorage - } - - private func keychainPrefix() -> String { - return "VIRGIL.IDENTITY=\(self.identity)." - } - - internal func keychainName(fromEntryName entryName: String) -> String { - return "\(self.keychainPrefix())\(entryName)" - } - - internal func entryName(fromKeychainName keychainName: String) -> String? { - guard keychainName.hasPrefix(self.keychainPrefix()) else { - return nil - } - - return keychainName.replacingOccurrences(of: self.keychainPrefix(), with: "") - } -} - -extension KeychainStorageWrapper: KeychainStorageProtocol { - private func mapKeychainEntry(_ keychainEntry: KeychainEntry) -> KeychainEntry? { - guard let entryName = self.entryName(fromKeychainName: keychainEntry.name) else { - return nil - } - - return KeychainEntry(data: keychainEntry.data, name: entryName, meta: keychainEntry.meta, - creationDate: keychainEntry.creationDate, - modificationDate: keychainEntry.modificationDate) - } - - private func mapKeychainEntries(_ keychainEntries: [KeychainEntry]) -> [KeychainEntry] { - return keychainEntries.compactMap { - return self.mapKeychainEntry($0) - } - } - - internal func store(data: Data, withName name: String, meta: [String: String]?) throws -> KeychainEntry { - let keychainName = self.keychainName(fromEntryName: name) - - return try self.keychainStorage.store(data: data, withName: keychainName, meta: meta) - } - - internal func updateEntry(withName name: String, data: Data, meta: [String: String]?) throws { - let keychainName = self.keychainName(fromEntryName: name) - - try self.keychainStorage.updateEntry(withName: keychainName, data: data, meta: meta) - } - - internal func retrieveEntry(withName name: String) throws -> KeychainEntry { - let keychainName = self.keychainName(fromEntryName: name) - - let keychainEntry = try self.keychainStorage.retrieveEntry(withName: keychainName) - - guard let entry = self.mapKeychainEntry(keychainEntry) else { - throw KeychainStorageWrapperError.errorConvertingKeychainEntry - } - - return entry - } - - internal func retrieveAllEntries() throws -> [KeychainEntry] { - return self.mapKeychainEntries(try self.keychainStorage.retrieveAllEntries()) - } - - internal func deleteEntry(withName name: String) throws { - let keychainName = self.keychainName(fromEntryName: name) - - try self.keychainStorage.deleteEntry(withName: keychainName) - } - - internal func existsEntry(withName name: String) throws -> Bool { - let keychainName = self.keychainName(fromEntryName: name) - - return try self.keychainStorage.existsEntry(withName: keychainName) - } -} diff --git a/Source/SyncKeyStorage/SyncKeyStorage.swift b/Source/SyncKeyStorage/SyncKeyStorage.swift index 351a256..dbd82b8 100644 --- a/Source/SyncKeyStorage/SyncKeyStorage.swift +++ b/Source/SyncKeyStorage/SyncKeyStorage.swift @@ -60,7 +60,7 @@ import VirgilCryptoAPI public init(identity: String, keychainStorage: KeychainStorageProtocol, cloudKeyStorage: CloudKeyStorageProtocol) { self.identity = identity - self.keychainStorage = KeychainStorageWrapper(identity: identity, keychainStorage: keychainStorage) + self.keychainStorage = SandboxedKeychainStorage(identity: identity, keychainStorage: keychainStorage) self.cloudKeyStorage = cloudKeyStorage self.keychainUtils = KeychainUtils() diff --git a/VirgilSDKKeyknox.xcodeproj/project.pbxproj b/VirgilSDKKeyknox.xcodeproj/project.pbxproj index 0ce11d3..d1e405e 100644 --- a/VirgilSDKKeyknox.xcodeproj/project.pbxproj +++ b/VirgilSDKKeyknox.xcodeproj/project.pbxproj @@ -123,8 +123,6 @@ 428B161F20E11E590041CA75 /* SyncKeyStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 425EF95720C8171B00CE1D4F /* SyncKeyStorage.swift */; }; 428B162020E11E590041CA75 /* SyncKeyStorage+Obj-C.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42011EBB20CFEA3A00B84755 /* SyncKeyStorage+Obj-C.swift */; }; 428B162120E11E590041CA75 /* KeychainUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 428B15BE20D7F5DD0041CA75 /* KeychainUtils.swift */; }; - 428B162220E11E590041CA75 /* KeychainStorageWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 428B15FE20DBCEFE0041CA75 /* KeychainStorageWrapper.swift */; }; - 428B162320E11E590041CA75 /* KeychainStorageProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 428B160B20DBD99A0041CA75 /* KeychainStorageProtocol.swift */; }; 428B162820E392DE0041CA75 /* Cloud.json in Resources */ = {isa = PBXBuildFile; fileRef = 421A612320D41AFF00BBF05D /* Cloud.json */; }; 42B5E02520C011380067F13E /* KeyknoxClientProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42B5E01E20C011380067F13E /* KeyknoxClientProtocol.swift */; }; 42B5E02620C011380067F13E /* KeyknoxClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42B5E01F20C011380067F13E /* KeyknoxClient.swift */; }; @@ -148,18 +146,12 @@ 42D057D120EAA24800FC544E /* SyncKeyStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 425EF95720C8171B00CE1D4F /* SyncKeyStorage.swift */; }; 42D057D220EAA24800FC544E /* SyncKeyStorage+Obj-C.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42011EBB20CFEA3A00B84755 /* SyncKeyStorage+Obj-C.swift */; }; 42D057D320EAA24800FC544E /* KeychainUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 428B15BE20D7F5DD0041CA75 /* KeychainUtils.swift */; }; - 42D057D420EAA24800FC544E /* KeychainStorageWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 428B15FE20DBCEFE0041CA75 /* KeychainStorageWrapper.swift */; }; - 42D057D520EAA24800FC544E /* KeychainStorageProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 428B160B20DBD99A0041CA75 /* KeychainStorageProtocol.swift */; }; 42D057D620EAA24900FC544E /* SyncKeyStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 425EF95720C8171B00CE1D4F /* SyncKeyStorage.swift */; }; 42D057D720EAA24900FC544E /* SyncKeyStorage+Obj-C.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42011EBB20CFEA3A00B84755 /* SyncKeyStorage+Obj-C.swift */; }; 42D057D820EAA24900FC544E /* KeychainUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 428B15BE20D7F5DD0041CA75 /* KeychainUtils.swift */; }; - 42D057D920EAA24900FC544E /* KeychainStorageWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 428B15FE20DBCEFE0041CA75 /* KeychainStorageWrapper.swift */; }; - 42D057DA20EAA24900FC544E /* KeychainStorageProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 428B160B20DBD99A0041CA75 /* KeychainStorageProtocol.swift */; }; 42D057DB20EAA24900FC544E /* SyncKeyStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 425EF95720C8171B00CE1D4F /* SyncKeyStorage.swift */; }; 42D057DC20EAA24900FC544E /* SyncKeyStorage+Obj-C.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42011EBB20CFEA3A00B84755 /* SyncKeyStorage+Obj-C.swift */; }; 42D057DD20EAA24900FC544E /* KeychainUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 428B15BE20D7F5DD0041CA75 /* KeychainUtils.swift */; }; - 42D057DE20EAA24900FC544E /* KeychainStorageWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 428B15FE20DBCEFE0041CA75 /* KeychainStorageWrapper.swift */; }; - 42D057DF20EAA24900FC544E /* KeychainStorageProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 428B160B20DBD99A0041CA75 /* KeychainStorageProtocol.swift */; }; 42D057E020EAA24D00FC544E /* CloudKeyStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 425EF95120C8156D00CE1D4F /* CloudKeyStorage.swift */; }; 42D057E120EAA24D00FC544E /* CloudKeyStorage+Obj-C.swift in Sources */ = {isa = PBXBuildFile; fileRef = 425EF95420C8160800CE1D4F /* CloudKeyStorage+Obj-C.swift */; }; 42D057E220EAA24D00FC544E /* CloudEntry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42011DBD20CACC5400B84755 /* CloudEntry.swift */; }; @@ -389,9 +381,7 @@ 428B15BB20D7F0AB0041CA75 /* VSK006_SyncKeyStorageKeychainUtilsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VSK006_SyncKeyStorageKeychainUtilsTests.swift; sourceTree = ""; }; 428B15BE20D7F5DD0041CA75 /* KeychainUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeychainUtils.swift; sourceTree = ""; }; 428B15D820D925FD0041CA75 /* KeyknoxValue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyknoxValue.swift; sourceTree = ""; }; - 428B15FE20DBCEFE0041CA75 /* KeychainStorageWrapper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeychainStorageWrapper.swift; sourceTree = ""; }; 428B160920DBD87B0041CA75 /* CloudKeyStorageProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CloudKeyStorageProtocol.swift; sourceTree = ""; }; - 428B160B20DBD99A0041CA75 /* KeychainStorageProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeychainStorageProtocol.swift; sourceTree = ""; }; 428B161C20DD0C070041CA75 /* KeyEntry.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyEntry.swift; sourceTree = ""; }; 42B5DFF520C005300067F13E /* VirgilSDKKeyknox.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = VirgilSDKKeyknox.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 42B5DFF920C005300067F13E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -576,8 +566,6 @@ 424B9C4020EBCF1A00415ED4 /* SyncKeyStorage+SyncHelpers.swift */, 42011EBB20CFEA3A00B84755 /* SyncKeyStorage+Obj-C.swift */, 428B15BE20D7F5DD0041CA75 /* KeychainUtils.swift */, - 428B15FE20DBCEFE0041CA75 /* KeychainStorageWrapper.swift */, - 428B160B20DBD99A0041CA75 /* KeychainStorageProtocol.swift */, ); path = SyncKeyStorage; sourceTree = ""; @@ -1122,10 +1110,8 @@ 428B161D20DD0C070041CA75 /* KeyEntry.swift in Sources */, 42B5E02520C011380067F13E /* KeyknoxClientProtocol.swift in Sources */, 424B9C4120EBCF1A00415ED4 /* SyncKeyStorage+SyncHelpers.swift in Sources */, - 428B162220E11E590041CA75 /* KeychainStorageWrapper.swift in Sources */, 424B9CC420EE28ED00415ED4 /* KeyknoxManager+Queries.swift in Sources */, 425EF8BC20C549F500CE1D4F /* KeyknoxManager+Obj-C.swift in Sources */, - 428B162320E11E590041CA75 /* KeychainStorageProtocol.swift in Sources */, 424B9C5020EBD06700415ED4 /* SyncKeyStorageError.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1143,7 +1129,6 @@ 42D057F220EAA25400FC544E /* KeyknoxManager.swift in Sources */, 42D057D120EAA24800FC544E /* SyncKeyStorage.swift in Sources */, 42D057E320EAA24D00FC544E /* CloudEntrySerializer.swift in Sources */, - 42D057D520EAA24800FC544E /* KeychainStorageProtocol.swift in Sources */, 424B9C4C20EBD05300415ED4 /* KeyknoxManagerError.swift in Sources */, 424B9C4720EBD03500415ED4 /* CloudKeyStorageError.swift in Sources */, 42D057CC20EAA24400FC544E /* KeyknoxCrypto.swift in Sources */, @@ -1157,7 +1142,6 @@ 424B9C4220EBCF1A00415ED4 /* SyncKeyStorage+SyncHelpers.swift in Sources */, 42D057E120EAA24D00FC544E /* CloudKeyStorage+Obj-C.swift in Sources */, 424B9CC520EE28ED00415ED4 /* KeyknoxManager+Queries.swift in Sources */, - 42D057D420EAA24800FC544E /* KeychainStorageWrapper.swift in Sources */, 42D057E420EAA24D00FC544E /* CloudKeyStorageProtocol.swift in Sources */, 424B9C5120EBD06700415ED4 /* SyncKeyStorageError.swift in Sources */, ); @@ -1176,7 +1160,6 @@ 42D057F420EAA25500FC544E /* KeyknoxManager.swift in Sources */, 42D057D620EAA24900FC544E /* SyncKeyStorage.swift in Sources */, 42D057E920EAA24E00FC544E /* CloudEntrySerializer.swift in Sources */, - 42D057DA20EAA24900FC544E /* KeychainStorageProtocol.swift in Sources */, 424B9C4D20EBD05300415ED4 /* KeyknoxManagerError.swift in Sources */, 424B9C4820EBD03500415ED4 /* CloudKeyStorageError.swift in Sources */, 42D057CE20EAA24500FC544E /* KeyknoxCrypto.swift in Sources */, @@ -1190,7 +1173,6 @@ 424B9C4320EBCF1A00415ED4 /* SyncKeyStorage+SyncHelpers.swift in Sources */, 42D057E720EAA24E00FC544E /* CloudKeyStorage+Obj-C.swift in Sources */, 424B9CC620EE28ED00415ED4 /* KeyknoxManager+Queries.swift in Sources */, - 42D057D920EAA24900FC544E /* KeychainStorageWrapper.swift in Sources */, 42D057EA20EAA24E00FC544E /* CloudKeyStorageProtocol.swift in Sources */, 424B9C5220EBD06700415ED4 /* SyncKeyStorageError.swift in Sources */, ); @@ -1209,7 +1191,6 @@ 42D057F620EAA25500FC544E /* KeyknoxManager.swift in Sources */, 42D057DB20EAA24900FC544E /* SyncKeyStorage.swift in Sources */, 42D057EF20EAA24F00FC544E /* CloudEntrySerializer.swift in Sources */, - 42D057DF20EAA24900FC544E /* KeychainStorageProtocol.swift in Sources */, 424B9C4E20EBD05300415ED4 /* KeyknoxManagerError.swift in Sources */, 424B9C4920EBD03500415ED4 /* CloudKeyStorageError.swift in Sources */, 42D057D020EAA24500FC544E /* KeyknoxCrypto.swift in Sources */, @@ -1223,7 +1204,6 @@ 424B9C4420EBCF1A00415ED4 /* SyncKeyStorage+SyncHelpers.swift in Sources */, 42D057ED20EAA24F00FC544E /* CloudKeyStorage+Obj-C.swift in Sources */, 424B9CC720EE28ED00415ED4 /* KeyknoxManager+Queries.swift in Sources */, - 42D057DE20EAA24900FC544E /* KeychainStorageWrapper.swift in Sources */, 42D057F020EAA24F00FC544E /* CloudKeyStorageProtocol.swift in Sources */, 424B9C5320EBD06700415ED4 /* SyncKeyStorageError.swift in Sources */, ); From bb3594e02a82107e4d3a3778fd011203c0774f62 Mon Sep 17 00:00:00 2001 From: Oleksandr Deundiak Date: Wed, 16 Jan 2019 17:00:52 +0200 Subject: [PATCH 14/18] Added makeLocalStorage method to SyncKeyStorage --- Source/SyncKeyStorage/SyncKeyStorage.swift | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Source/SyncKeyStorage/SyncKeyStorage.swift b/Source/SyncKeyStorage/SyncKeyStorage.swift index dbd82b8..81d4e07 100644 --- a/Source/SyncKeyStorage/SyncKeyStorage.swift +++ b/Source/SyncKeyStorage/SyncKeyStorage.swift @@ -50,6 +50,16 @@ import VirgilCryptoAPI internal let keychainUtils: KeychainUtils private let queue = DispatchQueue(label: "SyncKeyStorageQueue") + + /// Creates local key storage isntance, to read keys withoud connecting to the Cloud + /// + /// - Parameters: + /// - identity: User's identity to separate keys in Keychain + /// - keychainStorage: KeychainStorageProtocol implementation + /// - Returns: returns KeychainStorageProtocol + public static func makeLocalStorage(identity: String, keychainStorage: KeychainStorageProtocol) -> KeychainStorageProtocol { + return SandboxedKeychainStorage(identity: identity, keychainStorage: keychainStorage) + } /// Init /// From 8351e4097c279a194f1853ed049222118799990f Mon Sep 17 00:00:00 2001 From: Oleksandr Deundiak Date: Wed, 16 Jan 2019 17:04:21 +0200 Subject: [PATCH 15/18] Fixed tests --- Tests/VSK004_SyncKeyStorageTests.swift | 2 +- Tests/VSK007_KeyStorageWrapperTests.swift | 152 --------------------- VirgilSDKKeyknox.xcodeproj/project.pbxproj | 8 -- 3 files changed, 1 insertion(+), 161 deletions(-) delete mode 100644 Tests/VSK007_KeyStorageWrapperTests.swift diff --git a/Tests/VSK004_SyncKeyStorageTests.swift b/Tests/VSK004_SyncKeyStorageTests.swift index bf2c721..606a8a6 100644 --- a/Tests/VSK004_SyncKeyStorageTests.swift +++ b/Tests/VSK004_SyncKeyStorageTests.swift @@ -78,7 +78,7 @@ class VSK004_SyncKeyStorageTests: XCTestCase { self.keychainStorage = KeychainStorage(storageParams: params) try! self.keychainStorage.deleteAllEntries() - self.keychainStorageWrapper = KeychainStorageWrapper(identity: identity, keychainStorage: self.keychainStorage) + self.keychainStorageWrapper = SandboxedKeychainStorage(identity: identity, keychainStorage: self.keychainStorage) } func test01_KTC29_syncStorage() { diff --git a/Tests/VSK007_KeyStorageWrapperTests.swift b/Tests/VSK007_KeyStorageWrapperTests.swift deleted file mode 100644 index 23ae1bb..0000000 --- a/Tests/VSK007_KeyStorageWrapperTests.swift +++ /dev/null @@ -1,152 +0,0 @@ -// -// Copyright (C) 2015-2019 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 -@testable import VirgilSDKKeyknox -import VirgilSDK -import XCTest - -class VSK007_KeyStorageWrapperTests: XCTestCase { - private var keychainStorageWrapper: KeychainStorageProtocol! - private var keychainStorage: KeychainStorage! - - override func setUp() { - super.setUp() - - #if os(macOS) - let params = KeychainStorageParams(appName: "Tests", trustedApplications: []) - #elseif os(iOS) || os(tvOS) - let params = try! KeychainStorageParams.makeKeychainStorageParams() - #endif - self.keychainStorage = KeychainStorage(storageParams: params) - try! self.keychainStorage.deleteAllEntries() - - self.keychainStorageWrapper = KeychainStorageWrapper(identity: "identity", keychainStorage: self.keychainStorage) - } - - func test001() { - XCTAssert(try! self.keychainStorageWrapper.retrieveAllEntries().count == 0) - XCTAssert(try! self.keychainStorage.retrieveAllEntries().count == 0) - - let name = NSUUID().uuidString - let wrapperName = "VIRGIL.IDENTITY=identity.\(name)" - let data1 = NSUUID().uuidString.data(using: .utf8)! - let data2 = NSUUID().uuidString.data(using: .utf8)! - - _ = try! self.keychainStorageWrapper.store(data: data1, withName: name, meta: nil) - - XCTAssert(try! self.keychainStorageWrapper.retrieveAllEntries().count == 1) - XCTAssert(try! self.keychainStorage.retrieveAllEntries().count == 1) - - let entry1 = try! self.keychainStorageWrapper.retrieveEntry(withName: name) - XCTAssert(entry1.name == name) - XCTAssert(entry1.data == data1) - - _ = try! self.keychainStorage.store(data: data2, withName: name, meta: nil) - - let wrappedEntries = try! self.keychainStorageWrapper.retrieveAllEntries() - XCTAssert(wrappedEntries.count == 1) - XCTAssert(wrappedEntries[0].name == name) - XCTAssert(wrappedEntries[0].data == data1) - - let entries = try! self.keychainStorage.retrieveAllEntries() - XCTAssert(entries.count == 2) - XCTAssert(entries[1].name == name) - XCTAssert(entries[1].data == data2) - XCTAssert(entries[0].name == wrapperName) - XCTAssert(entries[0].data == data1) - - let entry2 = try! self.keychainStorageWrapper.retrieveEntry(withName: name) - XCTAssert(entry2.name == name) - XCTAssert(entry2.data == data1) - - try! self.keychainStorageWrapper.deleteEntry(withName: name) - XCTAssert(try! self.keychainStorageWrapper.retrieveAllEntries().count == 0) - XCTAssert(try! self.keychainStorage.retrieveAllEntries().count == 1) - - do { - _ = try self.keychainStorageWrapper.retrieveEntry(withName: name) - XCTFail() - } - catch { } - - do { - _ = try self.keychainStorage.retrieveEntry(withName: wrapperName) - XCTFail() - } - catch { } - - let entry3 = try! self.keychainStorage.retrieveEntry(withName: name) - XCTAssert(entry3.name == name) - XCTAssert(entry3.data == data2) - } - - func test002() { - let name1 = NSUUID().uuidString - let name2 = NSUUID().uuidString - let data1 = NSUUID().uuidString.data(using: .utf8)! - let data2 = NSUUID().uuidString.data(using: .utf8)! - - _ = try! self.keychainStorageWrapper.store(data: data1, withName: name1, meta: nil) - _ = try! self.keychainStorage.store(data: data2, withName: name2, meta: nil) - - XCTAssert(try self.keychainStorageWrapper.existsEntry(withName: name1)) - XCTAssert(!(try self.keychainStorageWrapper.existsEntry(withName: name2))) - } - - func test003() { - let name1 = NSUUID().uuidString - let name2 = NSUUID().uuidString - let data1 = NSUUID().uuidString.data(using: .utf8)! - let data2 = NSUUID().uuidString.data(using: .utf8)! - let data3 = NSUUID().uuidString.data(using: .utf8)! - - _ = try! self.keychainStorageWrapper.store(data: data1, withName: name1, meta: nil) - _ = try! self.keychainStorage.store(data: data2, withName: name2, meta: nil) - - _ = try! self.keychainStorageWrapper.updateEntry(withName: name1, data: data3, meta: nil) - - do { - _ = try self.keychainStorageWrapper.updateEntry(withName: name2, data: data3, meta: nil) - XCTFail() - } - catch { } - - let entry = try! self.keychainStorageWrapper.retrieveEntry(withName: name1) - XCTAssert(entry.name == name1) - XCTAssert(entry.data == data3) - } -} diff --git a/VirgilSDKKeyknox.xcodeproj/project.pbxproj b/VirgilSDKKeyknox.xcodeproj/project.pbxproj index d1e405e..5a791a4 100644 --- a/VirgilSDKKeyknox.xcodeproj/project.pbxproj +++ b/VirgilSDKKeyknox.xcodeproj/project.pbxproj @@ -128,7 +128,6 @@ 42B5E02620C011380067F13E /* KeyknoxClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42B5E01F20C011380067F13E /* KeyknoxClient.swift */; }; 42B5E02720C011380067F13E /* KeynoxClient+Queries.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42B5E02020C011380067F13E /* KeynoxClient+Queries.swift */; }; 42B5E02820C011380067F13E /* KeyknoxData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42B5E02220C011380067F13E /* KeyknoxData.swift */; }; - 42D056A520EA5B5D00FC544E /* VSK007_KeyStorageWrapperTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42D056A420EA5B5D00FC544E /* VSK007_KeyStorageWrapperTests.swift */; }; 42D056CA20EA5FC900FC544E /* VSK001_ClientTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 42B5E0B620C01C9B0067F13E /* VSK001_ClientTests.m */; }; 42D056CB20EA5FCC00FC544E /* VSK002_KeyknoxManagerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 425EF8B820C5488C00CE1D4F /* VSK002_KeyknoxManagerTests.m */; }; 42D056CC20EA5FCC00FC544E /* VSK003_CloudKeyStorageTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 425EF8CF20C5A03200CE1D4F /* VSK003_CloudKeyStorageTests.m */; }; @@ -201,7 +200,6 @@ 42D0583D20EAA6EF00FC544E /* VSK004_SyncKeyStorageTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42011DE320CACFEE00B84755 /* VSK004_SyncKeyStorageTests.swift */; }; 42D0583E20EAA6EF00FC544E /* VSK005_CloudEntrySerializerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 421A612120D4071500BBF05D /* VSK005_CloudEntrySerializerTests.swift */; }; 42D0583F20EAA6EF00FC544E /* VSK006_SyncKeyStorageKeychainUtilsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 428B15BB20D7F0AB0041CA75 /* VSK006_SyncKeyStorageKeychainUtilsTests.swift */; }; - 42D0584020EAA6EF00FC544E /* VSK007_KeyStorageWrapperTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42D056A420EA5B5D00FC544E /* VSK007_KeyStorageWrapperTests.swift */; }; 42D0584F20EB755900FC544E /* Cloud.json in Resources */ = {isa = PBXBuildFile; fileRef = 421A612320D41AFF00BBF05D /* Cloud.json */; }; 42D0585020EB755900FC544E /* TestConfig.plist in Resources */ = {isa = PBXBuildFile; fileRef = 42B5E0BA20C01E5A0067F13E /* TestConfig.plist */; }; 42D0585120EB755900FC544E /* TestConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42B5E0BB20C01E5A0067F13E /* TestConfig.swift */; }; @@ -211,7 +209,6 @@ 42D0585520EB755900FC544E /* VSK004_SyncKeyStorageTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42011DE320CACFEE00B84755 /* VSK004_SyncKeyStorageTests.swift */; }; 42D0585620EB755900FC544E /* VSK005_CloudEntrySerializerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 421A612120D4071500BBF05D /* VSK005_CloudEntrySerializerTests.swift */; }; 42D0585720EB755900FC544E /* VSK006_SyncKeyStorageKeychainUtilsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 428B15BB20D7F0AB0041CA75 /* VSK006_SyncKeyStorageKeychainUtilsTests.swift */; }; - 42D0585820EB755900FC544E /* VSK007_KeyStorageWrapperTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42D056A420EA5B5D00FC544E /* VSK007_KeyStorageWrapperTests.swift */; }; 42D0585C20EB76BD00FC544E /* VirgilSDKKeyknox.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 42D0576220EAA0CC00FC544E /* VirgilSDKKeyknox.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; /* End PBXBuildFile section */ @@ -392,7 +389,6 @@ 42B5E0B620C01C9B0067F13E /* VSK001_ClientTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VSK001_ClientTests.m; sourceTree = ""; }; 42B5E0BA20C01E5A0067F13E /* TestConfig.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = TestConfig.plist; sourceTree = ""; }; 42B5E0BB20C01E5A0067F13E /* TestConfig.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestConfig.swift; sourceTree = ""; }; - 42D056A420EA5B5D00FC544E /* VSK007_KeyStorageWrapperTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VSK007_KeyStorageWrapperTests.swift; sourceTree = ""; }; 42D0571F20EA9FBC00FC544E /* VirgilSDKKeyknox.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = VirgilSDKKeyknox.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 42D0576220EAA0CC00FC544E /* VirgilSDKKeyknox.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = VirgilSDKKeyknox.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 42D0578220EAA16500FC544E /* VirgilSDKKeyknox.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = VirgilSDKKeyknox.framework; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -618,7 +614,6 @@ 42011DE320CACFEE00B84755 /* VSK004_SyncKeyStorageTests.swift */, 421A612120D4071500BBF05D /* VSK005_CloudEntrySerializerTests.swift */, 428B15BB20D7F0AB0041CA75 /* VSK006_SyncKeyStorageKeychainUtilsTests.swift */, - 42D056A420EA5B5D00FC544E /* VSK007_KeyStorageWrapperTests.swift */, ); path = Tests; sourceTree = ""; @@ -1078,7 +1073,6 @@ 42D056CB20EA5FCC00FC544E /* VSK002_KeyknoxManagerTests.m in Sources */, 42D056CA20EA5FC900FC544E /* VSK001_ClientTests.m in Sources */, 42011EA020CE901900B84755 /* TestConfig.swift in Sources */, - 42D056A520EA5B5D00FC544E /* VSK007_KeyStorageWrapperTests.swift in Sources */, 428B161E20E118AD0041CA75 /* VSK006_SyncKeyStorageKeychainUtilsTests.swift in Sources */, 42D056CC20EA5FCC00FC544E /* VSK003_CloudKeyStorageTests.m in Sources */, 42D056CD20EA5FCC00FC544E /* VSK005_CloudEntrySerializerTests.swift in Sources */, @@ -1227,7 +1221,6 @@ 42D0583E20EAA6EF00FC544E /* VSK005_CloudEntrySerializerTests.swift in Sources */, 42D0583F20EAA6EF00FC544E /* VSK006_SyncKeyStorageKeychainUtilsTests.swift in Sources */, 42D0583920EAA6EF00FC544E /* TestConfig.swift in Sources */, - 42D0584020EAA6EF00FC544E /* VSK007_KeyStorageWrapperTests.swift in Sources */, 42D0583B20EAA6EF00FC544E /* VSK002_KeyknoxManagerTests.m in Sources */, 42D0583C20EAA6EF00FC544E /* VSK003_CloudKeyStorageTests.m in Sources */, ); @@ -1239,7 +1232,6 @@ files = ( 42D0585520EB755900FC544E /* VSK004_SyncKeyStorageTests.swift in Sources */, 42D0585120EB755900FC544E /* TestConfig.swift in Sources */, - 42D0585820EB755900FC544E /* VSK007_KeyStorageWrapperTests.swift in Sources */, 42D0585320EB755900FC544E /* VSK002_KeyknoxManagerTests.m in Sources */, 42D0585720EB755900FC544E /* VSK006_SyncKeyStorageKeychainUtilsTests.swift in Sources */, 42D0585620EB755900FC544E /* VSK005_CloudEntrySerializerTests.swift in Sources */, From 44a6d5d7e520e91e6a68c4f44d2793cdf0110d9f Mon Sep 17 00:00:00 2001 From: Oleksandr Deundiak Date: Wed, 16 Jan 2019 17:29:56 +0200 Subject: [PATCH 16/18] Updated travis.yml --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 015621a..3b4bc13 100644 --- a/.travis.yml +++ b/.travis.yml @@ -78,7 +78,7 @@ script: fi # Check pod lib - - if [ $POD_LIB_LINT == "YES" ]; then + - if [ -n "$TRAVIS_TAG" ] && [ $POD_LIB_LINT == "YES" ]; then gem install cocoapods --pre; pod repo update; pod lib lint; From 0ff1614801dacdab68e2f9160d0e18f20e127cba Mon Sep 17 00:00:00 2001 From: Oleksandr Deundiak Date: Thu, 17 Jan 2019 18:21:55 +0200 Subject: [PATCH 17/18] Updated dependencies --- Cartfile | 2 +- Cartfile.resolved | 2 +- VirgilSDKKeyknox.podspec | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cartfile b/Cartfile index 5456ef0..89d9663 100644 --- a/Cartfile +++ b/Cartfile @@ -1,2 +1,2 @@ -github "VirgilSecurity/virgil-sdk-x" "develop" +github "VirgilSecurity/virgil-sdk-x" ~> 5.7 github "VirgilSecurity/virgil-crypto-x" ~> 3.2 \ No newline at end of file diff --git a/Cartfile.resolved b/Cartfile.resolved index 93162ed..1c91332 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -1,3 +1,3 @@ github "VirgilSecurity/virgil-crypto-x" "3.2.2" github "VirgilSecurity/virgil-cryptoapi-x" "1.0.4" -github "VirgilSecurity/virgil-sdk-x" "093ee1bd928176956da984bddb3db36e5d5c8368" +github "VirgilSecurity/virgil-sdk-x" "5.7.0" diff --git a/VirgilSDKKeyknox.podspec b/VirgilSDKKeyknox.podspec index 4445c16..ceaf2c0 100644 --- a/VirgilSDKKeyknox.podspec +++ b/VirgilSDKKeyknox.podspec @@ -11,6 +11,6 @@ Pod::Spec.new do |s| s.tvos.deployment_target = "9.0" s.watchos.deployment_target = "2.0" s.source_files = 'Source/**/*.{swift}' - s.dependency "VirgilSDK", "~> 5.3" + s.dependency "VirgilSDK", "~> 5.7" s.dependency "VirgilCryptoApiImpl", "~> 3.0" end \ No newline at end of file From 074f7727aaf0a94bfe9d0f1be6f84441da5bd06a Mon Sep 17 00:00:00 2001 From: Oleksandr Deundiak Date: Thu, 17 Jan 2019 18:22:04 +0200 Subject: [PATCH 18/18] Added virgil-agent --- Source/Client/KeyknoxClient.swift | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Source/Client/KeyknoxClient.swift b/Source/Client/KeyknoxClient.swift index 59ccc3e..1343839 100644 --- a/Source/Client/KeyknoxClient.swift +++ b/Source/Client/KeyknoxClient.swift @@ -71,7 +71,11 @@ import VirgilSDK /// /// - Parameter serviceUrl: URL of service client will use @objc public convenience init(serviceUrl: URL) { - self.init(serviceUrl: serviceUrl, connection: HttpConnection()) + let version = VersionUtils.getVersion(bundleIdentitifer: "com.virgilsecurity.VirgilSDKKeyknox") + + let connection = HttpConnection(adapters: [VirgilAgentAdapter(product: "keyknox", version: version)]) + + self.init(serviceUrl: serviceUrl, connection: connection) } /// Handles error from Keyknox Service