iCloud fixes.
[UPDATED] Moved shared MPAppDelegate code into separate files depending on the code's responsibility. [UPDATED] iCloud implementation removed in favor of iCloudStoreManager's managed implementation. [FIXED] iCloud configuration made AppStore friendly.
This commit is contained in:
parent
98080ceb51
commit
f622b2c7d4
3
.gitmodules
vendored
3
.gitmodules
vendored
@ -4,3 +4,6 @@
|
||||
[submodule "External/InAppSettingsKit"]
|
||||
path = External/InAppSettingsKit
|
||||
url = git://github.com/futuretap/InAppSettingsKit.git
|
||||
[submodule "External/iCloudStoreManager"]
|
||||
path = External/iCloudStoreManager
|
||||
url = git://github.com/alekseyn/iCloudStoreManager.git
|
||||
|
2
External/Pearl
vendored
2
External/Pearl
vendored
@ -1 +1 @@
|
||||
Subproject commit 9336e50d3b896bac1478fe4ac8313387a85114c2
|
||||
Subproject commit a78cd7daf1fae0fc9e86702de9b9f6d5782ae352
|
1
External/iCloudStoreManager
vendored
Submodule
1
External/iCloudStoreManager
vendored
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 303b3a3e5c092c21d8e0c92cbe9145b6492b6c7b
|
@ -654,6 +654,12 @@
|
||||
DA60116515057F10008E9AB6 /* tip_location_wood@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DA600EE315057F10008E9AB6 /* tip_location_wood@2x.png */; };
|
||||
DA60116715057FDD008E9AB6 /* iTunesArtwork-Rounded.png in Resources */ = {isa = PBXBuildFile; fileRef = DA60116615057FDD008E9AB6 /* iTunesArtwork-Rounded.png */; };
|
||||
DA60116C15060F28008E9AB6 /* Pearl.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = DAB8D9D81503940100CED3BC /* Pearl.dylib */; };
|
||||
DA79A9E3155821BB00BAA07A /* MPAppDelegate_Shared.m in Sources */ = {isa = PBXBuildFile; fileRef = DA79A9E0155821BB00BAA07A /* MPAppDelegate_Shared.m */; };
|
||||
DA79A9E4155821BB00BAA07A /* MPAppDelegate_Store.m in Sources */ = {isa = PBXBuildFile; fileRef = DA79A9E2155821BB00BAA07A /* MPAppDelegate_Store.m */; };
|
||||
DA79A9EC155821E500BAA07A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA79A9EB155821E500BAA07A /* Foundation.framework */; };
|
||||
DA79AA201558221200BAA07A /* UbiquityStoreManager.h in Headers */ = {isa = PBXBuildFile; fileRef = DA79AA111558221200BAA07A /* UbiquityStoreManager.h */; };
|
||||
DA79AA211558221200BAA07A /* UbiquityStoreManager.m in Sources */ = {isa = PBXBuildFile; fileRef = DA79AA121558221200BAA07A /* UbiquityStoreManager.m */; };
|
||||
DA79AA2415582F3900BAA07A /* libiCloudStoreManager.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DA79A9EA155821E500BAA07A /* libiCloudStoreManager.a */; };
|
||||
DAB8D98D150374AD00CED3BC /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DAB8D98C150374AD00CED3BC /* Cocoa.framework */; };
|
||||
DAB8D9C8150375C800CED3BC /* MasterPassword.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = DAB8D9B2150375C800CED3BC /* MasterPassword.xcdatamodeld */; };
|
||||
DAB8D9C9150375C800CED3BC /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D9B5150375C800CED3BC /* Credits.rtf */; };
|
||||
@ -694,8 +700,6 @@
|
||||
DAB8DA2E1503972100CED3BC /* PearlStrings.m in Sources */ = {isa = PBXBuildFile; fileRef = DAB8D9FF1503972100CED3BC /* PearlStrings.m */; };
|
||||
DAB8DA2F1503972100CED3BC /* PearlStringUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = DAB8DA001503972100CED3BC /* PearlStringUtils.h */; };
|
||||
DAB8DA301503972100CED3BC /* PearlStringUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = DAB8DA011503972100CED3BC /* PearlStringUtils.m */; };
|
||||
DAB8DA311503972100CED3BC /* PearlWebUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = DAB8DA021503972100CED3BC /* PearlWebUtils.h */; };
|
||||
DAB8DA321503972100CED3BC /* PearlWebUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = DAB8DA031503972100CED3BC /* PearlWebUtils.m */; };
|
||||
DAB8DA331503972100CED3BC /* Pearl-Crypto.h in Headers */ = {isa = PBXBuildFile; fileRef = DAB8DA091503972100CED3BC /* Pearl-Crypto.h */; };
|
||||
DAB8DA341503972100CED3BC /* PearlCryptUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = DAB8DA0A1503972100CED3BC /* PearlCryptUtils.h */; };
|
||||
DAB8DA351503972100CED3BC /* PearlCryptUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = DAB8DA0B1503972100CED3BC /* PearlCryptUtils.m */; };
|
||||
@ -1374,6 +1378,14 @@
|
||||
DA600EE215057F10008E9AB6 /* tip_location_wood.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = tip_location_wood.png; sourceTree = "<group>"; };
|
||||
DA600EE315057F10008E9AB6 /* tip_location_wood@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "tip_location_wood@2x.png"; sourceTree = "<group>"; };
|
||||
DA60116615057FDD008E9AB6 /* iTunesArtwork-Rounded.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "iTunesArtwork-Rounded.png"; sourceTree = "<group>"; };
|
||||
DA79A9DF155821BB00BAA07A /* MPAppDelegate_Shared.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPAppDelegate_Shared.h; sourceTree = "<group>"; };
|
||||
DA79A9E0155821BB00BAA07A /* MPAppDelegate_Shared.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPAppDelegate_Shared.m; sourceTree = "<group>"; };
|
||||
DA79A9E1155821BB00BAA07A /* MPAppDelegate_Store.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPAppDelegate_Store.h; sourceTree = "<group>"; };
|
||||
DA79A9E2155821BB00BAA07A /* MPAppDelegate_Store.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPAppDelegate_Store.m; sourceTree = "<group>"; };
|
||||
DA79A9EA155821E500BAA07A /* libiCloudStoreManager.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libiCloudStoreManager.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
DA79A9EB155821E500BAA07A /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
|
||||
DA79AA111558221200BAA07A /* UbiquityStoreManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UbiquityStoreManager.h; sourceTree = "<group>"; };
|
||||
DA79AA121558221200BAA07A /* UbiquityStoreManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UbiquityStoreManager.m; sourceTree = "<group>"; };
|
||||
DAB8D988150374AD00CED3BC /* MasterPassword.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MasterPassword.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
DAB8D98C150374AD00CED3BC /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
|
||||
DAB8D98F150374AD00CED3BC /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };
|
||||
@ -1426,8 +1438,6 @@
|
||||
DAB8D9FF1503972100CED3BC /* PearlStrings.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PearlStrings.m; sourceTree = "<group>"; };
|
||||
DAB8DA001503972100CED3BC /* PearlStringUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PearlStringUtils.h; sourceTree = "<group>"; };
|
||||
DAB8DA011503972100CED3BC /* PearlStringUtils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PearlStringUtils.m; sourceTree = "<group>"; };
|
||||
DAB8DA021503972100CED3BC /* PearlWebUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PearlWebUtils.h; sourceTree = "<group>"; };
|
||||
DAB8DA031503972100CED3BC /* PearlWebUtils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PearlWebUtils.m; sourceTree = "<group>"; };
|
||||
DAB8DA041503972100CED3BC /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = "<group>"; };
|
||||
DAB8DA071503972100CED3BC /* en */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Pearl.strings; sourceTree = "<group>"; };
|
||||
DAB8DA091503972100CED3BC /* Pearl-Crypto.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "Pearl-Crypto.h"; sourceTree = "<group>"; };
|
||||
@ -2219,8 +2229,8 @@
|
||||
DAF56D4A1503C74200996D85 /* info.pem */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = info.pem; sourceTree = "<group>"; };
|
||||
DAF56D4B1503C74200996D85 /* infokey.pem */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = infokey.pem; sourceTree = "<group>"; };
|
||||
DAF56D4C1503C74200996D85 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
|
||||
DAF56D4E1503C74200996D85 /* a1 */ = {isa = PBXFileReference; lastKnownFileType = file; path = a1; sourceTree = "<group>"; };
|
||||
DAF56D4F1503C74200996D85 /* a2 */ = {isa = PBXFileReference; lastKnownFileType = file; path = a2; sourceTree = "<group>"; };
|
||||
DAF56D4E1503C74200996D85 /* a1 */ = {isa = PBXFileReference; lastKnownFileType = text; path = a1; sourceTree = "<group>"; };
|
||||
DAF56D4F1503C74200996D85 /* a2 */ = {isa = PBXFileReference; lastKnownFileType = text; path = a2; sourceTree = "<group>"; };
|
||||
DAF56D501503C74200996D85 /* cert.p7c */ = {isa = PBXFileReference; lastKnownFileType = file; path = cert.p7c; sourceTree = "<group>"; };
|
||||
DAF56D511503C74200996D85 /* smime.p7m */ = {isa = PBXFileReference; lastKnownFileType = file; path = smime.p7m; sourceTree = "<group>"; };
|
||||
DAF56D521503C74200996D85 /* smime.p7s */ = {isa = PBXFileReference; lastKnownFileType = file; path = smime.p7s; sourceTree = "<group>"; };
|
||||
@ -2525,10 +2535,19 @@
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
DA79A9E7155821E500BAA07A /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
DA79A9EC155821E500BAA07A /* Foundation.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
DAB8D985150374AD00CED3BC /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
DA79AA2415582F3900BAA07A /* libiCloudStoreManager.a in Frameworks */,
|
||||
DA44255715546C580052177D /* Carbon.framework in Frameworks */,
|
||||
DADEA5D51503EEDF00FD084E /* Security.framework in Frameworks */,
|
||||
DAFE4A6415039CDC003ABA7C /* Pearl.dylib in Frameworks */,
|
||||
@ -3260,6 +3279,16 @@
|
||||
path = Tooltips;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
DA79A9F61558221200BAA07A /* iCloudStoreManager */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
DA79AA111558221200BAA07A /* UbiquityStoreManager.h */,
|
||||
DA79AA121558221200BAA07A /* UbiquityStoreManager.m */,
|
||||
);
|
||||
name = iCloudStoreManager;
|
||||
path = External/iCloudStoreManager/iCloudStoreManager;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
DAB8D97D150374AC00CED3BC = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@ -3268,6 +3297,7 @@
|
||||
DAB8D9DA1503940100CED3BC /* Pearl */,
|
||||
DAF56A071503C64400996D85 /* scrypt */,
|
||||
DAF571EE1503C75C00996D85 /* openssl */,
|
||||
DA79A9F61558221200BAA07A /* iCloudStoreManager */,
|
||||
DAB8D98B150374AD00CED3BC /* Frameworks */,
|
||||
DAB8D989150374AD00CED3BC /* Products */,
|
||||
);
|
||||
@ -3278,6 +3308,7 @@
|
||||
children = (
|
||||
DAB8D988150374AD00CED3BC /* MasterPassword.app */,
|
||||
DAB8D9D81503940100CED3BC /* Pearl.dylib */,
|
||||
DA79A9EA155821E500BAA07A /* libiCloudStoreManager.a */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
@ -3289,6 +3320,7 @@
|
||||
DA44255615546C570052177D /* Carbon.framework */,
|
||||
DADEA5D31503EEA700FD084E /* Security.framework */,
|
||||
DAB8D98C150374AD00CED3BC /* Cocoa.framework */,
|
||||
DA79A9EB155821E500BAA07A /* Foundation.framework */,
|
||||
DAB8D98E150374AD00CED3BC /* Other Frameworks */,
|
||||
);
|
||||
name = Frameworks;
|
||||
@ -3312,6 +3344,10 @@
|
||||
DAB8D9B4150375C800CED3BC /* Mac */,
|
||||
DA600C2C150565FC008E9AB6 /* MPAppDelegate_Key.h */,
|
||||
DA600C2B150565FC008E9AB6 /* MPAppDelegate_Key.m */,
|
||||
DA79A9DF155821BB00BAA07A /* MPAppDelegate_Shared.h */,
|
||||
DA79A9E0155821BB00BAA07A /* MPAppDelegate_Shared.m */,
|
||||
DA79A9E1155821BB00BAA07A /* MPAppDelegate_Store.h */,
|
||||
DA79A9E2155821BB00BAA07A /* MPAppDelegate_Store.m */,
|
||||
DA600C29150565FC008E9AB6 /* MPConfig.h */,
|
||||
DA600C2A150565FC008E9AB6 /* MPConfig.m */,
|
||||
DAB8D9C0150375C800CED3BC /* MPElementStoredEntity.m */,
|
||||
@ -3401,8 +3437,6 @@
|
||||
DAB8D9FF1503972100CED3BC /* PearlStrings.m */,
|
||||
DAB8DA001503972100CED3BC /* PearlStringUtils.h */,
|
||||
DAB8DA011503972100CED3BC /* PearlStringUtils.m */,
|
||||
DAB8DA021503972100CED3BC /* PearlWebUtils.h */,
|
||||
DAB8DA031503972100CED3BC /* PearlWebUtils.m */,
|
||||
DAB8DA041503972100CED3BC /* README */,
|
||||
DAB8DA051503972100CED3BC /* Resources */,
|
||||
);
|
||||
@ -5159,6 +5193,14 @@
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXHeadersBuildPhase section */
|
||||
DA79A9E8155821E500BAA07A /* Headers */ = {
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
DA79AA201558221200BAA07A /* UbiquityStoreManager.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
DAB8D9D61503940100CED3BC /* Headers */ = {
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
@ -5178,7 +5220,6 @@
|
||||
DAB8DA2C1503972100CED3BC /* PearlResettable.h in Headers */,
|
||||
DAB8DA2D1503972100CED3BC /* PearlStrings.h in Headers */,
|
||||
DAB8DA2F1503972100CED3BC /* PearlStringUtils.h in Headers */,
|
||||
DAB8DA311503972100CED3BC /* PearlWebUtils.h in Headers */,
|
||||
DAB8DA331503972100CED3BC /* Pearl-Crypto.h in Headers */,
|
||||
DAB8DA341503972100CED3BC /* PearlCryptUtils.h in Headers */,
|
||||
DAB8DA361503972100CED3BC /* PearlKeyChain.h in Headers */,
|
||||
@ -5190,6 +5231,23 @@
|
||||
/* End PBXHeadersBuildPhase section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
DA79A9E9155821E500BAA07A /* iCloudStoreManager */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = DA79A9F3155821E500BAA07A /* Build configuration list for PBXNativeTarget "iCloudStoreManager" */;
|
||||
buildPhases = (
|
||||
DA79A9E6155821E500BAA07A /* Sources */,
|
||||
DA79A9E7155821E500BAA07A /* Frameworks */,
|
||||
DA79A9E8155821E500BAA07A /* Headers */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = iCloudStoreManager;
|
||||
productName = iCloudStoreManager;
|
||||
productReference = DA79A9EA155821E500BAA07A /* libiCloudStoreManager.a */;
|
||||
productType = "com.apple.product-type.library.static";
|
||||
};
|
||||
DAB8D987150374AD00CED3BC /* MasterPassword */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = DAB8D9A9150374AD00CED3BC /* Build configuration list for PBXNativeTarget "MasterPassword" */;
|
||||
@ -5250,6 +5308,7 @@
|
||||
targets = (
|
||||
DAB8D987150374AD00CED3BC /* MasterPassword */,
|
||||
DAB8D9D71503940100CED3BC /* Pearl */,
|
||||
DA79A9E9155821E500BAA07A /* iCloudStoreManager */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
@ -5927,6 +5986,14 @@
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
DA79A9E6155821E500BAA07A /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
DA79AA211558221200BAA07A /* UbiquityStoreManager.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
DAB8D984150374AD00CED3BC /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
@ -5941,6 +6008,8 @@
|
||||
DA600BEB150420AC008E9AB6 /* MPPasswordWindowController.m in Sources */,
|
||||
DA600C2D150565FC008E9AB6 /* MPConfig.m in Sources */,
|
||||
DA600C2E150565FC008E9AB6 /* MPAppDelegate_Key.m in Sources */,
|
||||
DA79A9E3155821BB00BAA07A /* MPAppDelegate_Shared.m in Sources */,
|
||||
DA79A9E4155821BB00BAA07A /* MPAppDelegate_Store.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@ -5961,7 +6030,6 @@
|
||||
DAB8DA2B1503972100CED3BC /* PearlObjectUtils.m in Sources */,
|
||||
DAB8DA2E1503972100CED3BC /* PearlStrings.m in Sources */,
|
||||
DAB8DA301503972100CED3BC /* PearlStringUtils.m in Sources */,
|
||||
DAB8DA321503972100CED3BC /* PearlWebUtils.m in Sources */,
|
||||
DAB8DA351503972100CED3BC /* PearlCryptUtils.m in Sources */,
|
||||
DAB8DA371503972100CED3BC /* PearlKeyChain.m in Sources */,
|
||||
DAB8DA391503972100CED3BC /* PearlRSAKey.m in Sources */,
|
||||
@ -6007,12 +6075,25 @@
|
||||
/* End PBXVariantGroup section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
DA79A9F4155821E500BAA07A /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
DA79A9F5155821E500BAA07A /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
DAB8D9A7150374AD00CED3BC /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_OBJCPP_ARC_ABI = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
@ -6044,6 +6125,7 @@
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_OBJCPP_ARC_ABI = YES;
|
||||
COPY_PHASE_STRIP = YES;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
@ -6090,7 +6172,6 @@
|
||||
DAB8D9E11503940100CED3BC /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_OBJC_ARC = NO;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
@ -6106,7 +6187,6 @@
|
||||
DAB8D9E21503940100CED3BC /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_OBJC_ARC = NO;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
@ -6122,6 +6202,14 @@
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
DA79A9F3155821E500BAA07A /* Build configuration list for PBXNativeTarget "iCloudStoreManager" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
DA79A9F4155821E500BAA07A /* Debug */,
|
||||
DA79A9F5155821E500BAA07A /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
};
|
||||
DAB8D982150374AC00CED3BC /* Build configuration list for PBXProject "MasterPassword-Mac" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
|
@ -8,7 +8,12 @@
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
DA04E33E14B1E70400ECA4F3 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA04E33D14B1E70400ECA4F3 /* MobileCoreServices.framework */; };
|
||||
DA1A144414E4950C00BCFFBE /* libscryptenc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DA1A143814E494DE00BCFFBE /* libscryptenc.a */; };
|
||||
DA4425CC1557BED40052177D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA5BFA4A147E415C00F98B1E /* Foundation.framework */; };
|
||||
DA4426001557BF260052177D /* UbiquityStoreManager.h in Headers */ = {isa = PBXBuildFile; fileRef = DA4425F11557BF260052177D /* UbiquityStoreManager.h */; };
|
||||
DA4426011557BF260052177D /* UbiquityStoreManager.m in Sources */ = {isa = PBXBuildFile; fileRef = DA4425F21557BF260052177D /* UbiquityStoreManager.m */; };
|
||||
DA4426081557C1990052177D /* MPAppDelegate_Shared.m in Sources */ = {isa = PBXBuildFile; fileRef = DA4426051557C1990052177D /* MPAppDelegate_Shared.m */; };
|
||||
DA4426091557C1990052177D /* MPAppDelegate_Store.m in Sources */ = {isa = PBXBuildFile; fileRef = DA4426071557C1990052177D /* MPAppDelegate_Store.m */; };
|
||||
DA44260A1557D9E40052177D /* libiCloudStoreManager.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DA4425CB1557BED40052177D /* libiCloudStoreManager.a */; };
|
||||
DA5BFA49147E415C00F98B1E /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA5BFA48147E415C00F98B1E /* UIKit.framework */; };
|
||||
DA5BFA4B147E415C00F98B1E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA5BFA4A147E415C00F98B1E /* Foundation.framework */; };
|
||||
DA5BFA4D147E415C00F98B1E /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA5BFA4C147E415C00F98B1E /* CoreGraphics.framework */; };
|
||||
@ -17,6 +22,9 @@
|
||||
DA600C2815056428008E9AB6 /* MPConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = DA600C2715056427008E9AB6 /* MPConfig.m */; };
|
||||
DA672D2F14F92C6B004A189C /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = DA672D2E14F92C6B004A189C /* libz.dylib */; };
|
||||
DA672D3014F9413D004A189C /* libPearl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DAC77CAD148291A600BCF976 /* libPearl.a */; };
|
||||
DA79A9B91557DB4C00BAA07A /* libjrswizzle.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DAC6326C148680650075AEA5 /* libjrswizzle.a */; };
|
||||
DA79A9BA1557DB4C00BAA07A /* libuicolor-utilities.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DAC6325D1486805C0075AEA5 /* libuicolor-utilities.a */; };
|
||||
DA79A9BC1557DB6F00BAA07A /* libscryptenc-ios.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DA79A9BB1557DB6F00BAA07A /* libscryptenc-ios.a */; };
|
||||
DA95D59D14DF063C008D1B94 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA5BFA4A147E415C00F98B1E /* Foundation.framework */; };
|
||||
DA95D5CF14DF0691008D1B94 /* IASKAppSettingsViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = DA95D5A814DF0691008D1B94 /* IASKAppSettingsViewController.h */; };
|
||||
DA95D5D014DF0691008D1B94 /* IASKAppSettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = DA95D5A914DF0691008D1B94 /* IASKAppSettingsViewController.m */; };
|
||||
@ -714,8 +722,6 @@
|
||||
DABB981615100B4000B05417 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DABB981515100B4000B05417 /* SystemConfiguration.framework */; };
|
||||
DAC6325E1486805C0075AEA5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA5BFA4A147E415C00F98B1E /* Foundation.framework */; };
|
||||
DAC6326D148680650075AEA5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA5BFA4A147E415C00F98B1E /* Foundation.framework */; };
|
||||
DAC63277148680700075AEA5 /* libuicolor-utilities.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DAC6325D1486805C0075AEA5 /* libuicolor-utilities.a */; };
|
||||
DAC63278148680740075AEA5 /* libjrswizzle.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DAC6326C148680650075AEA5 /* libjrswizzle.a */; };
|
||||
DAC6327B1486809A0075AEA5 /* JRSwizzle.h in Headers */ = {isa = PBXBuildFile; fileRef = DAC632791486809A0075AEA5 /* JRSwizzle.h */; };
|
||||
DAC6327C1486809A0075AEA5 /* JRSwizzle.m in Sources */ = {isa = PBXBuildFile; fileRef = DAC6327A1486809A0075AEA5 /* JRSwizzle.m */; };
|
||||
DAC632891486D9690075AEA5 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DAC632871486D95D0075AEA5 /* Security.framework */; };
|
||||
@ -815,27 +821,34 @@
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
DA1A143714E494DE00BCFFBE /* PBXContainerItemProxy */ = {
|
||||
DA79A9CD1557DDC800BAA07A /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = DA1A142714E494DA00BCFFBE /* scrypt.xcodeproj */;
|
||||
containerPortal = DA79A9BD1557DDC700BAA07A /* scrypt.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = D2AAC07E0554694100DB518D;
|
||||
remoteInfo = scryptenc;
|
||||
};
|
||||
DA1A143914E494DE00BCFFBE /* PBXContainerItemProxy */ = {
|
||||
DA79A9CF1557DDC800BAA07A /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = DA1A142714E494DA00BCFFBE /* scrypt.xcodeproj */;
|
||||
containerPortal = DA79A9BD1557DDC700BAA07A /* scrypt.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = A0511C5A127770FD00DE46C4;
|
||||
remoteInfo = scryptcrypto;
|
||||
};
|
||||
DA1A143B14E494DE00BCFFBE /* PBXContainerItemProxy */ = {
|
||||
DA79A9D11557DDC800BAA07A /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = DA1A142714E494DA00BCFFBE /* scrypt.xcodeproj */;
|
||||
containerPortal = DA79A9BD1557DDC700BAA07A /* scrypt.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = DA67FE5D14E4834300DB7CC9;
|
||||
remoteInfo = util;
|
||||
};
|
||||
DA79A9D91557DDEB00BAA07A /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = DA79A9BD1557DDC700BAA07A /* scrypt.xcodeproj */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = A0511DED127788EC00DE46C4;
|
||||
remoteInfo = "Makefile-scrypt";
|
||||
};
|
||||
DAC63283148681200075AEA5 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = DA5BFA3B147E415C00F98B1E /* Project object */;
|
||||
@ -854,7 +867,13 @@
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
DA04E33D14B1E70400ECA4F3 /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = System/Library/Frameworks/MobileCoreServices.framework; sourceTree = SDKROOT; };
|
||||
DA1A142714E494DA00BCFFBE /* scrypt.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = scrypt.xcodeproj; path = External/Pearl/External/iOSPorts/ports/security/scrypt/scrypt.xcodeproj; sourceTree = "<group>"; };
|
||||
DA4425CB1557BED40052177D /* libiCloudStoreManager.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libiCloudStoreManager.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
DA4425F11557BF260052177D /* UbiquityStoreManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UbiquityStoreManager.h; sourceTree = "<group>"; };
|
||||
DA4425F21557BF260052177D /* UbiquityStoreManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UbiquityStoreManager.m; sourceTree = "<group>"; };
|
||||
DA4426041557C1990052177D /* MPAppDelegate_Shared.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPAppDelegate_Shared.h; sourceTree = "<group>"; };
|
||||
DA4426051557C1990052177D /* MPAppDelegate_Shared.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPAppDelegate_Shared.m; sourceTree = "<group>"; };
|
||||
DA4426061557C1990052177D /* MPAppDelegate_Store.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPAppDelegate_Store.h; sourceTree = "<group>"; };
|
||||
DA4426071557C1990052177D /* MPAppDelegate_Store.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPAppDelegate_Store.m; sourceTree = "<group>"; };
|
||||
DA5BFA44147E415C00F98B1E /* MasterPassword.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MasterPassword.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
DA5BFA48147E415C00F98B1E /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
|
||||
DA5BFA4A147E415C00F98B1E /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
|
||||
@ -865,6 +884,8 @@
|
||||
DA600C2615056427008E9AB6 /* MPConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MPConfig.h; path = MasterPassword/MPConfig.h; sourceTree = SOURCE_ROOT; };
|
||||
DA600C2715056427008E9AB6 /* MPConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MPConfig.m; path = MasterPassword/MPConfig.m; sourceTree = SOURCE_ROOT; };
|
||||
DA672D2E14F92C6B004A189C /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; };
|
||||
DA79A9BB1557DB6F00BAA07A /* libscryptenc-ios.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libscryptenc-ios.a"; sourceTree = "<group>"; };
|
||||
DA79A9BD1557DDC700BAA07A /* scrypt.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = scrypt.xcodeproj; path = External/Pearl/External/iOSPorts/ports/security/scrypt/scrypt.xcodeproj; sourceTree = "<group>"; };
|
||||
DA95D59C14DF063C008D1B94 /* libInAppSettingsKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libInAppSettingsKit.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
DA95D5A814DF0691008D1B94 /* IASKAppSettingsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKAppSettingsViewController.h; sourceTree = "<group>"; };
|
||||
DA95D5A914DF0691008D1B94 /* IASKAppSettingsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKAppSettingsViewController.m; sourceTree = "<group>"; };
|
||||
@ -1680,10 +1701,21 @@
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
DA4425C81557BED40052177D /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
DA4425CC1557BED40052177D /* Foundation.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
DA5BFA41147E415C00F98B1E /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
DA79A9B91557DB4C00BAA07A /* libjrswizzle.a in Frameworks */,
|
||||
DA79A9BA1557DB4C00BAA07A /* libuicolor-utilities.a in Frameworks */,
|
||||
DA44260A1557D9E40052177D /* libiCloudStoreManager.a in Frameworks */,
|
||||
DAD312C21552A22700A3F9ED /* libsqlite3.dylib in Frameworks */,
|
||||
DAD312BF1552A1BD00A3F9ED /* libLocalytics.a in Frameworks */,
|
||||
DABB981615100B4000B05417 /* SystemConfiguration.framework in Frameworks */,
|
||||
@ -1700,6 +1732,7 @@
|
||||
DA5BFA4F147E415C00F98B1E /* CoreData.framework in Frameworks */,
|
||||
DAD3126715528C9C00A3F9ED /* Crashlytics.framework in Frameworks */,
|
||||
DAD3126915528C9C00A3F9ED /* libTestFlight.a in Frameworks */,
|
||||
DA79A9BC1557DB6F00BAA07A /* libscryptenc-ios.a in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@ -1731,9 +1764,6 @@
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
DA1A144414E4950C00BCFFBE /* libscryptenc.a in Frameworks */,
|
||||
DAC63278148680740075AEA5 /* libjrswizzle.a in Frameworks */,
|
||||
DAC63277148680700075AEA5 /* libuicolor-utilities.a in Frameworks */,
|
||||
DAC77CAE148291A600BCF976 /* Foundation.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
@ -1749,20 +1779,20 @@
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
DA1A142814E494DA00BCFFBE /* Products */ = {
|
||||
DA4425D71557BF260052177D /* iCloudStoreManager */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
DA1A143814E494DE00BCFFBE /* libscryptenc.a */,
|
||||
DA1A143A14E494DE00BCFFBE /* libscryptcrypto.a */,
|
||||
DA1A143C14E494DE00BCFFBE /* libutil.a */,
|
||||
DA4425F11557BF260052177D /* UbiquityStoreManager.h */,
|
||||
DA4425F21557BF260052177D /* UbiquityStoreManager.m */,
|
||||
);
|
||||
name = Products;
|
||||
name = iCloudStoreManager;
|
||||
path = External/iCloudStoreManager/iCloudStoreManager;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
DA5BFA39147E415C00F98B1E = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
DA1A142714E494DA00BCFFBE /* scrypt.xcodeproj */,
|
||||
DA79A9BD1557DDC700BAA07A /* scrypt.xcodeproj */,
|
||||
DA5BFA50147E415C00F98B1E /* MasterPassword */,
|
||||
DAB8D46F15036BF600CED3BC /* Resources */,
|
||||
DABB980A150FF40100B05417 /* SendToMac */,
|
||||
@ -1773,6 +1803,7 @@
|
||||
DAD3125E15528C9C00A3F9ED /* Crashlytics */,
|
||||
DAD3126115528C9C00A3F9ED /* TestFlight */,
|
||||
DAD3127315528CD200A3F9ED /* Localytics */,
|
||||
DA4425D71557BF260052177D /* iCloudStoreManager */,
|
||||
DA5BFA47147E415C00F98B1E /* Frameworks */,
|
||||
DA5BFA45147E415C00F98B1E /* Products */,
|
||||
);
|
||||
@ -1787,6 +1818,7 @@
|
||||
DAC6326C148680650075AEA5 /* libjrswizzle.a */,
|
||||
DA95D59C14DF063C008D1B94 /* libInAppSettingsKit.a */,
|
||||
DAD3127115528CD200A3F9ED /* libLocalytics.a */,
|
||||
DA4425CB1557BED40052177D /* libiCloudStoreManager.a */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
@ -1816,6 +1848,10 @@
|
||||
DAB8D43E15036BCF00CED3BC /* iOS */,
|
||||
DA600C2415054F3A008E9AB6 /* MPAppDelegate_Key.h */,
|
||||
DA600C2315054F3A008E9AB6 /* MPAppDelegate_Key.m */,
|
||||
DA4426041557C1990052177D /* MPAppDelegate_Shared.h */,
|
||||
DA4426051557C1990052177D /* MPAppDelegate_Shared.m */,
|
||||
DA4426061557C1990052177D /* MPAppDelegate_Store.h */,
|
||||
DA4426071557C1990052177D /* MPAppDelegate_Store.m */,
|
||||
DA600C2615056427008E9AB6 /* MPConfig.h */,
|
||||
DA600C2715056427008E9AB6 /* MPConfig.m */,
|
||||
DAB8D45515036BCF00CED3BC /* MPElementStoredEntity.m */,
|
||||
@ -1830,6 +1866,16 @@
|
||||
path = MasterPassword;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
DA79A9BE1557DDC700BAA07A /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
DA79A9CE1557DDC800BAA07A /* libscryptenc.a */,
|
||||
DA79A9D01557DDC800BAA07A /* libscryptcrypto.a */,
|
||||
DA79A9D21557DDC800BAA07A /* libutil.a */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
DA95D59E14DF063C008D1B94 /* InAppSettingsKit */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@ -2796,6 +2842,7 @@
|
||||
DAFE45FC15039823003ABA7C /* Pearl-Crypto */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
DA79A9BB1557DB6F00BAA07A /* libscryptenc-ios.a */,
|
||||
DAFE45FD15039823003ABA7C /* Pearl-Crypto.h */,
|
||||
DAFE45FE15039823003ABA7C /* PearlCryptUtils.h */,
|
||||
DAFE45FF15039823003ABA7C /* PearlCryptUtils.m */,
|
||||
@ -2863,6 +2910,14 @@
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXHeadersBuildPhase section */
|
||||
DA4425C91557BED40052177D /* Headers */ = {
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
DA4426001557BF260052177D /* UbiquityStoreManager.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
DA95D59A14DF063C008D1B94 /* Headers */ = {
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
@ -2961,6 +3016,23 @@
|
||||
/* End PBXHeadersBuildPhase section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
DA4425CA1557BED40052177D /* iCloudStoreManager */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = DA4425D31557BED40052177D /* Build configuration list for PBXNativeTarget "iCloudStoreManager" */;
|
||||
buildPhases = (
|
||||
DA4425C71557BED40052177D /* Sources */,
|
||||
DA4425C81557BED40052177D /* Frameworks */,
|
||||
DA4425C91557BED40052177D /* Headers */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = iCloudStoreManager;
|
||||
productName = iCloudStoreManager;
|
||||
productReference = DA4425CB1557BED40052177D /* libiCloudStoreManager.a */;
|
||||
productType = "com.apple.product-type.library.static";
|
||||
};
|
||||
DA5BFA43147E415C00F98B1E /* MasterPassword */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = DA5BFA6D147E415C00F98B1E /* Build configuration list for PBXNativeTarget "MasterPassword" */;
|
||||
@ -2974,6 +3046,7 @@
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
DA79A9DA1557DDEB00BAA07A /* PBXTargetDependency */,
|
||||
);
|
||||
name = MasterPassword;
|
||||
productName = MasterPassword;
|
||||
@ -3090,8 +3163,8 @@
|
||||
projectDirPath = "";
|
||||
projectReferences = (
|
||||
{
|
||||
ProductGroup = DA1A142814E494DA00BCFFBE /* Products */;
|
||||
ProjectRef = DA1A142714E494DA00BCFFBE /* scrypt.xcodeproj */;
|
||||
ProductGroup = DA79A9BE1557DDC700BAA07A /* Products */;
|
||||
ProjectRef = DA79A9BD1557DDC700BAA07A /* scrypt.xcodeproj */;
|
||||
},
|
||||
);
|
||||
projectRoot = "";
|
||||
@ -3102,30 +3175,31 @@
|
||||
DAC6326B148680650075AEA5 /* jrswizzle */,
|
||||
DA95D59B14DF063C008D1B94 /* InAppSettingsKit */,
|
||||
DAD3127015528CD200A3F9ED /* Localytics */,
|
||||
DA4425CA1557BED40052177D /* iCloudStoreManager */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXReferenceProxy section */
|
||||
DA1A143814E494DE00BCFFBE /* libscryptenc.a */ = {
|
||||
DA79A9CE1557DDC800BAA07A /* libscryptenc.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
path = libscryptenc.a;
|
||||
remoteRef = DA1A143714E494DE00BCFFBE /* PBXContainerItemProxy */;
|
||||
remoteRef = DA79A9CD1557DDC800BAA07A /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
DA1A143A14E494DE00BCFFBE /* libscryptcrypto.a */ = {
|
||||
DA79A9D01557DDC800BAA07A /* libscryptcrypto.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
path = libscryptcrypto.a;
|
||||
remoteRef = DA1A143914E494DE00BCFFBE /* PBXContainerItemProxy */;
|
||||
remoteRef = DA79A9CF1557DDC800BAA07A /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
DA1A143C14E494DE00BCFFBE /* libutil.a */ = {
|
||||
DA79A9D21557DDC800BAA07A /* libutil.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
path = libutil.a;
|
||||
remoteRef = DA1A143B14E494DE00BCFFBE /* PBXContainerItemProxy */;
|
||||
remoteRef = DA79A9D11557DDC800BAA07A /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
/* End PBXReferenceProxy section */
|
||||
@ -3825,6 +3899,14 @@
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
DA4425C71557BED40052177D /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
DA4426011557BF260052177D /* UbiquityStoreManager.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
DA5BFA40147E415C00F98B1E /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
@ -3844,6 +3926,8 @@
|
||||
DAB8D46E15036BCF00CED3BC /* MPElementGeneratedEntity.m in Sources */,
|
||||
DA600C2515054F3A008E9AB6 /* MPAppDelegate_Key.m in Sources */,
|
||||
DA600C2815056428008E9AB6 /* MPConfig.m in Sources */,
|
||||
DA4426081557C1990052177D /* MPAppDelegate_Shared.m in Sources */,
|
||||
DA4426091557C1990052177D /* MPAppDelegate_Store.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@ -3939,6 +4023,11 @@
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
DA79A9DA1557DDEB00BAA07A /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
name = "Makefile-scrypt";
|
||||
targetProxy = DA79A9D91557DDEB00BAA07A /* PBXContainerItemProxy */;
|
||||
};
|
||||
DAC63284148681200075AEA5 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = DAC6325C1486805C0075AEA5 /* uicolor-utilities */;
|
||||
@ -3971,6 +4060,27 @@
|
||||
/* End PBXVariantGroup section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
DA4425D41557BED40052177D /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
DA4425D51557BED40052177D /* AdHoc */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
};
|
||||
name = AdHoc;
|
||||
};
|
||||
DA4425D61557BED40052177D /* AppStore */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
};
|
||||
name = AppStore;
|
||||
};
|
||||
DA5BFA6B147E415C00F98B1E /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
@ -4100,6 +4210,7 @@
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"$(SRCROOT)/TestFlight\"",
|
||||
"\"$(SRCROOT)/External/Pearl/Pearl-Crypto\"",
|
||||
);
|
||||
};
|
||||
name = Debug;
|
||||
@ -4118,6 +4229,7 @@
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"$(SRCROOT)/TestFlight\"",
|
||||
"\"$(SRCROOT)/External/Pearl/Pearl-Crypto\"",
|
||||
);
|
||||
};
|
||||
name = AdHoc;
|
||||
@ -4216,6 +4328,7 @@
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"$(SRCROOT)/TestFlight\"",
|
||||
"\"$(SRCROOT)/External/Pearl/Pearl-Crypto\"",
|
||||
);
|
||||
};
|
||||
name = AppStore;
|
||||
@ -4369,6 +4482,16 @@
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
DA4425D31557BED40052177D /* Build configuration list for PBXNativeTarget "iCloudStoreManager" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
DA4425D41557BED40052177D /* Debug */,
|
||||
DA4425D51557BED40052177D /* AdHoc */,
|
||||
DA4425D61557BED40052177D /* AppStore */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = AdHoc;
|
||||
};
|
||||
DA5BFA3E147E415C00F98B1E /* Build configuration list for PBXProject "MasterPassword-iOS" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
|
@ -8,34 +8,8 @@
|
||||
|
||||
#import "MPAppDelegate.h"
|
||||
|
||||
@interface MPAppDelegate () {
|
||||
|
||||
NSPersistentStoreCoordinator *_persistentStoreCoordinator;
|
||||
NSManagedObjectModel *_managedObjectModel;
|
||||
NSManagedObjectContext *_managedObjectContext;
|
||||
}
|
||||
|
||||
@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;
|
||||
@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;
|
||||
@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;
|
||||
|
||||
@property (strong, nonatomic) NSData *key;
|
||||
@property (strong, nonatomic) NSData *keyHash;
|
||||
@property (strong, nonatomic) NSString *keyHashHex;
|
||||
|
||||
@end
|
||||
|
||||
@interface MPAppDelegate (Key)
|
||||
|
||||
+ (MPAppDelegate *)get;
|
||||
|
||||
- (NSURL *)applicationFilesDirectory;
|
||||
|
||||
+ (NSManagedObjectModel *)managedObjectModel;
|
||||
+ (NSManagedObjectContext *)managedObjectContext;
|
||||
- (void)saveContext;
|
||||
- (void)printStore;
|
||||
|
||||
- (void)loadStoredKey;
|
||||
- (IBAction)signOut:(id)sender;
|
||||
|
||||
|
@ -7,7 +7,7 @@
|
||||
//
|
||||
|
||||
#import "MPConfig.h"
|
||||
#import "MPAppDelegate_Key.h"
|
||||
#import "MPAppDelegate_Shared.h"
|
||||
#import "MPElementEntity.h"
|
||||
|
||||
@implementation MPAppDelegate (Key)
|
||||
@ -36,181 +36,6 @@ static NSDictionary *keyHashQuery() {
|
||||
return MPKeyHashQuery;
|
||||
}
|
||||
|
||||
- (NSURL *)applicationFilesDirectory {
|
||||
|
||||
#if __IPHONE_OS_VERSION_MIN_REQUIRED
|
||||
return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
|
||||
#else
|
||||
NSURL *appSupportURL = [[[NSFileManager defaultManager] URLsForDirectory:NSApplicationSupportDirectory inDomains:NSUserDomainMask] lastObject];
|
||||
NSURL *applicationFilesDirectory = [appSupportURL URLByAppendingPathComponent:@"com.lyndir.lhunath.MasterPassword"];
|
||||
|
||||
NSError *error = nil;
|
||||
[[NSFileManager defaultManager] createDirectoryAtURL:applicationFilesDirectory withIntermediateDirectories:YES attributes:nil error:&error];
|
||||
if (error)
|
||||
err(@"Couldn't create application directory: %@, error occurred: %@", applicationFilesDirectory, error);
|
||||
|
||||
return applicationFilesDirectory;
|
||||
#endif
|
||||
}
|
||||
|
||||
#pragma mark - Core Data stack
|
||||
|
||||
+ (NSManagedObjectContext *)managedObjectContext {
|
||||
|
||||
return [[self get] managedObjectContext];
|
||||
}
|
||||
|
||||
+ (NSManagedObjectModel *)managedObjectModel {
|
||||
|
||||
return [[self get] managedObjectModel];
|
||||
}
|
||||
|
||||
- (NSManagedObjectModel *)managedObjectModel {
|
||||
|
||||
if (_managedObjectModel)
|
||||
return _managedObjectModel;
|
||||
|
||||
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"MasterPassword" withExtension:@"momd"];
|
||||
return _managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
|
||||
}
|
||||
|
||||
- (NSManagedObjectContext *)managedObjectContext {
|
||||
|
||||
if (_managedObjectContext)
|
||||
return _managedObjectContext;
|
||||
|
||||
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
|
||||
if (coordinator) {
|
||||
// Put concurrency type on main queue, because otherwise updates break updating the search table UI.
|
||||
_managedObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType/*NSPrivateQueueConcurrencyType*/];
|
||||
_managedObjectContext.persistentStoreCoordinator = coordinator;
|
||||
|
||||
[[NSNotificationCenter defaultCenter] addObserverForName:NSPersistentStoreDidImportUbiquitousContentChangesNotification
|
||||
object:coordinator
|
||||
queue:nil
|
||||
usingBlock:^(NSNotification *note) {
|
||||
dbg(@"Ubiquitous content change: %@", note);
|
||||
|
||||
[_managedObjectContext performBlock:^{
|
||||
[_managedObjectContext mergeChangesFromContextDidSaveNotification:note];
|
||||
[self printStore];
|
||||
|
||||
[[NSNotificationCenter defaultCenter] postNotification:
|
||||
[NSNotification notificationWithName:MPNotificationStoreUpdated
|
||||
object:self userInfo:[note userInfo]]];
|
||||
}];
|
||||
}];
|
||||
}
|
||||
|
||||
return _managedObjectContext;
|
||||
}
|
||||
|
||||
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
|
||||
|
||||
if (_persistentStoreCoordinator)
|
||||
return _persistentStoreCoordinator;
|
||||
|
||||
NSString *contentName = @"store";
|
||||
NSURL *storeURL = [[self applicationFilesDirectory] URLByAppendingPathComponent:@"MasterPassword.sqlite"];
|
||||
NSURL *contentURL = [[[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil]
|
||||
URLByAppendingPathComponent:@"logs" isDirectory:YES];
|
||||
|
||||
//#if DEBUG
|
||||
// dbg(@"Deleting store and content.");
|
||||
// NSError *storeRemovalError = nil, *contentRemovalError = nil;
|
||||
// [[NSFileManager defaultManager] removeItemAtURL:storeURL error:&storeRemovalError];
|
||||
// if (storeRemovalError)
|
||||
// err(@"Store removal error: %@", storeRemovalError);
|
||||
// else
|
||||
// [[NSFileManager defaultManager] removeItemAtURL:contentURL error:&contentRemovalError];
|
||||
// if (contentRemovalError)
|
||||
// err(@"Content removal error: %@", contentRemovalError);
|
||||
//#endif
|
||||
|
||||
_persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
|
||||
[_persistentStoreCoordinator lock];
|
||||
@try {
|
||||
NSError *error = nil;
|
||||
if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL
|
||||
options:[NSDictionary dictionaryWithObjectsAndKeys:
|
||||
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption,
|
||||
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
|
||||
#if __IPHONE_OS_VERSION_MIN_REQUIRED
|
||||
NSFileProtectionComplete, NSPersistentStoreFileProtectionKey,
|
||||
#endif
|
||||
contentURL, NSPersistentStoreUbiquitousContentURLKey,
|
||||
contentName, NSPersistentStoreUbiquitousContentNameKey,
|
||||
nil]
|
||||
error:&error]) {
|
||||
ftl(@"Unresolved error %@, %@", error, [error userInfo]);
|
||||
#if DEBUG
|
||||
[[NSFileManager defaultManager] removeItemAtURL:storeURL error:nil];
|
||||
wrn(@"Deleted datastore: %@", storeURL);
|
||||
#endif
|
||||
@throw error;
|
||||
}
|
||||
}
|
||||
@finally {
|
||||
[_persistentStoreCoordinator unlock];
|
||||
}
|
||||
|
||||
return _persistentStoreCoordinator;
|
||||
}
|
||||
|
||||
- (void)saveContext {
|
||||
|
||||
[self.managedObjectContext performBlock:^{
|
||||
NSError *error = nil;
|
||||
if ([self.managedObjectContext hasChanges] && ![self.managedObjectContext save:&error])
|
||||
err(@"Unresolved error %@", error);
|
||||
}];
|
||||
}
|
||||
|
||||
- (void)printStore {
|
||||
|
||||
if (!_managedObjectModel || !_managedObjectContext) {
|
||||
trc(@"Not printing store: store not initialized.");
|
||||
return;
|
||||
}
|
||||
|
||||
[self.managedObjectContext performBlock:^{
|
||||
trc(@"=== All entities ===");
|
||||
for(NSEntityDescription *entity in [_managedObjectModel entities]) {
|
||||
NSFetchRequest *request = [NSFetchRequest new];
|
||||
[request setEntity:entity];
|
||||
NSError *error;
|
||||
NSArray *results = [_managedObjectContext executeFetchRequest:request error:&error];
|
||||
for(NSManagedObject *o in results) {
|
||||
if ([o isKindOfClass:[MPElementEntity class]]) {
|
||||
MPElementEntity *e = (MPElementEntity *)o;
|
||||
trc(@"For descriptor: %@, found: %@: %@ (%@)", entity.name, [o class], e.name, e.mpHashHex);
|
||||
} else {
|
||||
trc(@"For descriptor: %@, found: %@", entity.name, [o class]);
|
||||
}
|
||||
}
|
||||
}
|
||||
trc(@"---");
|
||||
if ([MPAppDelegate get].keyHashHex) {
|
||||
trc(@"=== Known sites ===");
|
||||
NSFetchRequest *fetchRequest = [_managedObjectModel
|
||||
fetchRequestFromTemplateWithName:@"MPElements"
|
||||
substitutionVariables:[NSDictionary dictionaryWithObjectsAndKeys:
|
||||
@"", @"query",
|
||||
[MPAppDelegate get].keyHashHex, @"mpHashHex",
|
||||
nil]];
|
||||
[fetchRequest setSortDescriptors:
|
||||
[NSArray arrayWithObject:[[NSSortDescriptor alloc] initWithKey:@"uses" ascending:NO]]];
|
||||
|
||||
NSError *error = nil;
|
||||
for (MPElementEntity *e in [_managedObjectContext executeFetchRequest:fetchRequest error:&error]) {
|
||||
trc(@"Found site: %@ (%@): %@", e.name, e.mpHashHex, e);
|
||||
}
|
||||
trc(@"---");
|
||||
} else
|
||||
trc(@"Not printing sites: master password not set.");
|
||||
}];
|
||||
}
|
||||
|
||||
- (void)forgetKey {
|
||||
|
||||
dbg(@"Deleting master key and hash from key chain.");
|
||||
@ -245,17 +70,6 @@ static NSDictionary *keyHashQuery() {
|
||||
}
|
||||
}
|
||||
|
||||
+ (MPAppDelegate *)get {
|
||||
|
||||
#ifdef __IPHONE_OS_VERSION_MIN_REQUIRED
|
||||
return (MPAppDelegate *)[UIApplication sharedApplication].delegate;
|
||||
#elif defined (__MAC_OS_X_VERSION_MIN_REQUIRED)
|
||||
return (MPAppDelegate *)[NSApplication sharedApplication].delegate;
|
||||
#else
|
||||
#error Unsupported OS.
|
||||
#endif
|
||||
}
|
||||
|
||||
- (BOOL)tryMasterPassword:(NSString *)tryPassword {
|
||||
|
||||
NSData *keyHash = [PearlKeyChain dataOfItemForQuery:keyHashQuery()];
|
||||
|
27
MasterPassword/MPAppDelegate_Shared.h
Normal file
27
MasterPassword/MPAppDelegate_Shared.h
Normal file
@ -0,0 +1,27 @@
|
||||
//
|
||||
// MPAppDelegate_Shared.h
|
||||
// MasterPassword
|
||||
//
|
||||
// Created by Maarten Billemont on 24/11/11.
|
||||
// Copyright (c) 2011 Lyndir. All rights reserved.
|
||||
//
|
||||
|
||||
#import "MPAppDelegate.h"
|
||||
#import "MPAppDelegate_Key.h"
|
||||
#import "MPAppDelegate_Store.h"
|
||||
|
||||
@interface MPAppDelegate () {
|
||||
}
|
||||
|
||||
@property (strong, nonatomic) NSData *key;
|
||||
@property (strong, nonatomic) NSData *keyHash;
|
||||
@property (strong, nonatomic) NSString *keyHashHex;
|
||||
|
||||
@end
|
||||
|
||||
@interface MPAppDelegate (Shared)
|
||||
|
||||
+ (MPAppDelegate *)get;
|
||||
- (NSURL *)applicationFilesDirectory;
|
||||
|
||||
@end
|
41
MasterPassword/MPAppDelegate_Shared.m
Normal file
41
MasterPassword/MPAppDelegate_Shared.m
Normal file
@ -0,0 +1,41 @@
|
||||
//
|
||||
// MPAppDelegate.m
|
||||
// MasterPassword
|
||||
//
|
||||
// Created by Maarten Billemont on 24/11/11.
|
||||
// Copyright (c) 2011 Lyndir. All rights reserved.
|
||||
//
|
||||
|
||||
#import "MPAppDelegate_Shared.h"
|
||||
|
||||
@implementation MPAppDelegate (Shared)
|
||||
|
||||
+ (MPAppDelegate *)get {
|
||||
|
||||
#ifdef __IPHONE_OS_VERSION_MIN_REQUIRED
|
||||
return (MPAppDelegate *)[UIApplication sharedApplication].delegate;
|
||||
#elif defined (__MAC_OS_X_VERSION_MIN_REQUIRED)
|
||||
return (MPAppDelegate *)[NSApplication sharedApplication].delegate;
|
||||
#else
|
||||
#error Unsupported OS.
|
||||
#endif
|
||||
}
|
||||
|
||||
- (NSURL *)applicationFilesDirectory {
|
||||
|
||||
#if __IPHONE_OS_VERSION_MIN_REQUIRED
|
||||
return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
|
||||
#else
|
||||
NSURL *appSupportURL = [[[NSFileManager defaultManager] URLsForDirectory:NSApplicationSupportDirectory inDomains:NSUserDomainMask] lastObject];
|
||||
NSURL *applicationFilesDirectory = [appSupportURL URLByAppendingPathComponent:@"com.lyndir.lhunath.MasterPassword"];
|
||||
|
||||
NSError *error = nil;
|
||||
[[NSFileManager defaultManager] createDirectoryAtURL:applicationFilesDirectory withIntermediateDirectories:YES attributes:nil error:&error];
|
||||
if (error)
|
||||
err(@"Couldn't create application directory: %@, error occurred: %@", applicationFilesDirectory, error);
|
||||
|
||||
return applicationFilesDirectory;
|
||||
#endif
|
||||
}
|
||||
|
||||
@end
|
24
MasterPassword/MPAppDelegate_Store.h
Normal file
24
MasterPassword/MPAppDelegate_Store.h
Normal file
@ -0,0 +1,24 @@
|
||||
//
|
||||
// MPAppDelegate_Key.h
|
||||
// MasterPassword
|
||||
//
|
||||
// Created by Maarten Billemont on 24/11/11.
|
||||
// Copyright (c) 2011 Lyndir. All rights reserved.
|
||||
//
|
||||
|
||||
#import "MPAppDelegate_Shared.h"
|
||||
|
||||
#import "UbiquityStoreManager.h"
|
||||
|
||||
@interface MPAppDelegate (Store) <UbiquityStoreManagerDelegate>
|
||||
|
||||
+ (NSManagedObjectContext *)managedObjectContext;
|
||||
+ (NSManagedObjectModel *)managedObjectModel;
|
||||
- (NSManagedObjectContext *)managedObjectContext;
|
||||
- (NSManagedObjectModel *)managedObjectModel;
|
||||
|
||||
- (UbiquityStoreManager *)storeManager;
|
||||
- (void)saveContext;
|
||||
- (void)printStore;
|
||||
|
||||
@end
|
173
MasterPassword/MPAppDelegate_Store.m
Normal file
173
MasterPassword/MPAppDelegate_Store.m
Normal file
@ -0,0 +1,173 @@
|
||||
//
|
||||
// MPAppDelegate.m
|
||||
// MasterPassword
|
||||
//
|
||||
// Created by Maarten Billemont on 24/11/11.
|
||||
// Copyright (c) 2011 Lyndir. All rights reserved.
|
||||
//
|
||||
|
||||
#import "MPAppDelegate_Store.h"
|
||||
#import "MPElementEntity.h"
|
||||
|
||||
@implementation MPAppDelegate (Store)
|
||||
|
||||
+ (NSManagedObjectContext *)managedObjectContext {
|
||||
|
||||
return [[self get] managedObjectContext];
|
||||
}
|
||||
|
||||
+ (NSManagedObjectModel *)managedObjectModel {
|
||||
|
||||
return [[self get] managedObjectModel];
|
||||
}
|
||||
|
||||
- (NSManagedObjectModel *)managedObjectModel {
|
||||
|
||||
static NSManagedObjectModel *managedObjectModel = nil;
|
||||
if (managedObjectModel)
|
||||
return managedObjectModel;
|
||||
|
||||
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"MasterPassword" withExtension:@"momd"];
|
||||
return managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
|
||||
}
|
||||
|
||||
- (NSManagedObjectContext *)managedObjectContext {
|
||||
|
||||
static NSManagedObjectContext *managedObjectContext = nil;
|
||||
if (managedObjectContext)
|
||||
return managedObjectContext;
|
||||
|
||||
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
|
||||
assert(coordinator);
|
||||
|
||||
managedObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
|
||||
[managedObjectContext performBlockAndWait:^{
|
||||
managedObjectContext.persistentStoreCoordinator = coordinator;
|
||||
managedObjectContext.mergePolicy = NSMergeByPropertyObjectTrumpMergePolicy;
|
||||
}];
|
||||
|
||||
return managedObjectContext;
|
||||
}
|
||||
|
||||
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
|
||||
|
||||
// Wait until the storeManager is ready.
|
||||
for(__block BOOL isReady = [self storeManager].isReady; !isReady;)
|
||||
dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
|
||||
isReady = [self storeManager].isReady;
|
||||
});
|
||||
|
||||
assert([self storeManager].isReady);
|
||||
return [self storeManager].persistentStoreCoordinator;
|
||||
}
|
||||
|
||||
- (UbiquityStoreManager *)storeManager {
|
||||
|
||||
static UbiquityStoreManager *storeManager = nil;
|
||||
if (storeManager)
|
||||
return storeManager;
|
||||
|
||||
storeManager = [[UbiquityStoreManager alloc] initWithManagedObjectModel:[self managedObjectModel]
|
||||
localStoreURL:[[self applicationFilesDirectory] URLByAppendingPathComponent:@"MasterPassword.sqlite"]
|
||||
containerIdentifier:@"HL3Q45LX9N.com.lyndir.lhunath.MasterPassword.shared"
|
||||
#if TARGET_OS_IPHONE
|
||||
additionalStoreOptions:[NSDictionary dictionaryWithObject:NSFileProtectionComplete forKey:NSPersistentStoreFileProtectionKey]
|
||||
#else
|
||||
additionalStoreOptions:nil
|
||||
#endif
|
||||
];
|
||||
storeManager.delegate = self;
|
||||
#ifdef DEBUG
|
||||
storeManager.hardResetEnabled = YES;
|
||||
#endif
|
||||
#if TARGET_OS_IPHONE
|
||||
[[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationWillEnterForegroundNotification
|
||||
object:[UIApplication sharedApplication] queue:nil
|
||||
#else
|
||||
[[NSNotificationCenter defaultCenter] addObserverForName:NSApplicationWillBecomeActiveNotification
|
||||
object:[NSApplication sharedApplication] queue:nil
|
||||
#endif
|
||||
usingBlock:^(NSNotification *note) {
|
||||
[storeManager checkiCloudStatus];
|
||||
}];
|
||||
#if TARGET_OS_IPHONE
|
||||
[[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationWillTerminateNotification
|
||||
object:[UIApplication sharedApplication] queue:nil
|
||||
#else
|
||||
[[NSNotificationCenter defaultCenter] addObserverForName:NSApplicationWillTerminateNotification
|
||||
object:[NSApplication sharedApplication] queue:nil
|
||||
#endif
|
||||
usingBlock:^(NSNotification *note) {
|
||||
[self saveContext];
|
||||
}];
|
||||
|
||||
return storeManager;
|
||||
}
|
||||
|
||||
- (NSManagedObjectContext *)managedObjectContextForUbiquityStoreManager:(UbiquityStoreManager *)usm {
|
||||
|
||||
return self.managedObjectContext;
|
||||
}
|
||||
|
||||
- (void)ubiquityStoreManager:(UbiquityStoreManager *)manager didSwitchToiCloud:(BOOL)didSwitch {
|
||||
|
||||
dbg(@"didSwitchToiCloud:%@", [NSNumber numberWithBool:didSwitch]);
|
||||
//[masterViewController.iCloudSwitch setOn:didSwitch animated:YES];
|
||||
}
|
||||
|
||||
- (void)saveContext {
|
||||
|
||||
[self.managedObjectContext performBlock:^{
|
||||
NSError *error = nil;
|
||||
if ([self.managedObjectContext hasChanges])
|
||||
if (![self.managedObjectContext save:&error])
|
||||
err(@"Unresolved error %@", error);
|
||||
}];
|
||||
}
|
||||
|
||||
- (void)printStore {
|
||||
|
||||
if (![self managedObjectModel] || ![self managedObjectContext]) {
|
||||
trc(@"Not printing store: store not initialized.");
|
||||
return;
|
||||
}
|
||||
|
||||
[self.managedObjectContext performBlock:^{
|
||||
trc(@"=== All entities ===");
|
||||
for(NSEntityDescription *entity in [[self managedObjectModel] entities]) {
|
||||
NSFetchRequest *request = [NSFetchRequest new];
|
||||
[request setEntity:entity];
|
||||
NSError *error;
|
||||
NSArray *results = [[self managedObjectContext] executeFetchRequest:request error:&error];
|
||||
for(NSManagedObject *o in results) {
|
||||
if ([o isKindOfClass:[MPElementEntity class]]) {
|
||||
MPElementEntity *e = (MPElementEntity *)o;
|
||||
trc(@"For descriptor: %@, found: %@: %@ (%@)", entity.name, [o class], e.name, e.mpHashHex);
|
||||
} else {
|
||||
trc(@"For descriptor: %@, found: %@", entity.name, [o class]);
|
||||
}
|
||||
}
|
||||
}
|
||||
trc(@"---");
|
||||
if ([MPAppDelegate get].keyHashHex) {
|
||||
trc(@"=== Known sites ===");
|
||||
NSFetchRequest *fetchRequest = [[self managedObjectModel]
|
||||
fetchRequestFromTemplateWithName:@"MPElements"
|
||||
substitutionVariables:[NSDictionary dictionaryWithObjectsAndKeys:
|
||||
@"", @"query",
|
||||
[MPAppDelegate get].keyHashHex, @"mpHashHex",
|
||||
nil]];
|
||||
[fetchRequest setSortDescriptors:
|
||||
[NSArray arrayWithObject:[[NSSortDescriptor alloc] initWithKey:@"uses" ascending:NO]]];
|
||||
|
||||
NSError *error = nil;
|
||||
for (MPElementEntity *e in [[self managedObjectContext] executeFetchRequest:fetchRequest error:&error]) {
|
||||
trc(@"Found site: %@ (%@): %@", e.name, e.mpHashHex, e);
|
||||
}
|
||||
trc(@"---");
|
||||
} else
|
||||
trc(@"Not printing sites: master password not set.");
|
||||
}];
|
||||
}
|
||||
|
||||
@end
|
@ -7,7 +7,7 @@
|
||||
//
|
||||
|
||||
#import "MPElementGeneratedEntity.h"
|
||||
#import "MPAppDelegate_Key.h"
|
||||
#import "MPAppDelegate_Shared.h"
|
||||
|
||||
|
||||
@implementation MPElementGeneratedEntity
|
||||
|
@ -7,7 +7,7 @@
|
||||
//
|
||||
|
||||
#import "MPElementStoredEntity.h"
|
||||
#import "MPAppDelegate_Key.h"
|
||||
#import "MPAppDelegate_Shared.h"
|
||||
|
||||
@interface MPElementStoredEntity ()
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
// Copyright (c) 2012 Lyndir. All rights reserved.
|
||||
//
|
||||
|
||||
#import "MPAppDelegate_Key.h"
|
||||
#import "MPAppDelegate_Shared.h"
|
||||
#import "MPConfig.h"
|
||||
#import "MPElementEntity.h"
|
||||
#import <Carbon/Carbon.h>
|
||||
@ -26,7 +26,6 @@
|
||||
@synthesize statusMenu;
|
||||
@synthesize passwordWindow;
|
||||
|
||||
@dynamic persistentStoreCoordinator, managedObjectModel, managedObjectContext;
|
||||
@synthesize key;
|
||||
@synthesize keyHash;
|
||||
@synthesize keyHashHex;
|
||||
@ -90,6 +89,8 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven
|
||||
status = RegisterEventHotKey(35 /* p */, controlKey + cmdKey, MPShowHotKey, GetApplicationEventTarget(), 0, &hotKeyRef);
|
||||
if(status != noErr)
|
||||
err(@"Error registering hotkey: %d", status);
|
||||
|
||||
[[self storeManager] useiCloudStore:YES];
|
||||
}
|
||||
|
||||
- (void)applicationDidBecomeActive:(NSNotification *)notification {
|
||||
@ -168,7 +169,7 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven
|
||||
{
|
||||
// Save changes in the application's managed object context before the application terminates.
|
||||
|
||||
if (!_managedObjectContext) {
|
||||
if (![self managedObjectContext]) {
|
||||
return NSTerminateNow;
|
||||
}
|
||||
|
||||
|
@ -7,7 +7,7 @@
|
||||
//
|
||||
|
||||
#import "MPPasswordWindowController.h"
|
||||
#import "MPAppDelegate_Key.h"
|
||||
#import "MPAppDelegate_Shared.h"
|
||||
#import "MPElementEntity.h"
|
||||
#import "MPElementGeneratedEntity.h"
|
||||
|
||||
|
@ -4,8 +4,11 @@
|
||||
<dict>
|
||||
<key>com.apple.developer.ubiquity-container-identifiers</key>
|
||||
<array>
|
||||
<string>$(TeamIdentifierPrefix)com.lyndir.lhunath.MasterPassword</string>
|
||||
<string>$(TeamIdentifierPrefix)com.lyndir.lhunath.MasterPassword.Mac</string>
|
||||
<string>$(TeamIdentifierPrefix)com.lyndir.lhunath.MasterPassword.shared</string>
|
||||
</array>
|
||||
<key>com.apple.developer.ubiquity-kvstore-identifier</key>
|
||||
<string>$(TeamIdentifierPrefix)com.lyndir.lhunath.MasterPassword.shared</string>
|
||||
<key>com.apple.security.app-sandbox</key>
|
||||
<true/>
|
||||
</dict>
|
||||
|
@ -6,8 +6,7 @@
|
||||
// Copyright (c) 2011 Lyndir. All rights reserved.
|
||||
//
|
||||
|
||||
#import "MPAppDelegate.h"
|
||||
#import "MPAppDelegate_Key.h"
|
||||
#import "MPAppDelegate_Shared.h"
|
||||
|
||||
#import "MPMainViewController.h"
|
||||
#import "IASKSettingsReader.h"
|
||||
@ -31,10 +30,6 @@
|
||||
|
||||
@implementation MPAppDelegate
|
||||
|
||||
@synthesize managedObjectModel = __managedObjectModel;
|
||||
@synthesize managedObjectContext = __managedObjectContext;
|
||||
@synthesize persistentStoreCoordinator = __persistentStoreCoordinator;
|
||||
|
||||
@synthesize key;
|
||||
@synthesize keyHash;
|
||||
@synthesize keyHashHex;
|
||||
|
@ -7,7 +7,7 @@
|
||||
//
|
||||
|
||||
#import "MPGuideViewController.h"
|
||||
#import "MPAppDelegate_Key.h"
|
||||
#import "MPAppDelegate_Shared.h"
|
||||
|
||||
@implementation MPGuideViewController
|
||||
@synthesize scrollView;
|
||||
|
@ -7,7 +7,7 @@
|
||||
//
|
||||
|
||||
#import "MPMainViewController.h"
|
||||
#import "MPAppDelegate_Key.h"
|
||||
#import "MPAppDelegate_Shared.h"
|
||||
#import "MPElementGeneratedEntity.h"
|
||||
#import "MPElementStoredEntity.h"
|
||||
#import "IASKAppSettingsViewController.h"
|
||||
@ -411,6 +411,22 @@
|
||||
case 5:
|
||||
#else
|
||||
case 4:
|
||||
#endif
|
||||
#ifdef DEBUG
|
||||
{
|
||||
[[MPAppDelegate get].storeManager hardResetCloudStorage];
|
||||
}
|
||||
#ifdef ADHOC
|
||||
case 6: {
|
||||
[[MPAppDelegate get].storeManager useiCloudStore:![MPAppDelegate get].storeManager.iCloudEnabled];
|
||||
}
|
||||
case 7:
|
||||
#else
|
||||
case 5: {
|
||||
[[MPAppDelegate get].storeManager useiCloudStore:![MPAppDelegate get].storeManager.iCloudEnabled];
|
||||
}
|
||||
case 6:
|
||||
#endif
|
||||
#endif
|
||||
{
|
||||
[[MPAppDelegate get] signOut:self];
|
||||
@ -425,6 +441,10 @@
|
||||
[self isHelpVisible]? @"Hide Help": @"Show Help", @"FAQ", @"Tutorial", @"Settings",
|
||||
#ifdef ADHOC
|
||||
@"Feedback",
|
||||
#endif
|
||||
#ifdef DEBUG
|
||||
@"Reset iCloud",
|
||||
@"Toggle iCloud",
|
||||
#endif
|
||||
@"Sign Out",
|
||||
nil];
|
||||
|
@ -7,7 +7,7 @@
|
||||
//
|
||||
|
||||
#import "MPSearchDelegate.h"
|
||||
#import "MPAppDelegate_Key.h"
|
||||
#import "MPAppDelegate_Shared.h"
|
||||
#import "MPElementGeneratedEntity.h"
|
||||
|
||||
@interface MPSearchDelegate (Private)
|
||||
|
@ -9,7 +9,7 @@
|
||||
#import <QuartzCore/QuartzCore.h>
|
||||
|
||||
#import "MPUnlockViewController.h"
|
||||
#import "MPAppDelegate_Key.h"
|
||||
#import "MPAppDelegate_Shared.h"
|
||||
|
||||
typedef enum {
|
||||
MPLockscreenIdle,
|
||||
|
@ -5,7 +5,10 @@
|
||||
<key>com.apple.developer.ubiquity-container-identifiers</key>
|
||||
<array>
|
||||
<string>$(TeamIdentifierPrefix)com.lyndir.lhunath.MasterPassword</string>
|
||||
<string>$(TeamIdentifierPrefix)com.lyndir.lhunath.MasterPassword.shared</string>
|
||||
</array>
|
||||
<key>com.apple.developer.ubiquity-kvstore-identifier</key>
|
||||
<string>$(TeamIdentifierPrefix)com.lyndir.lhunath.MasterPassword.shared</string>
|
||||
<key>keychain-access-groups</key>
|
||||
<array>
|
||||
<string>$(AppIdentifierPrefix)com.lyndir.lhunath.MasterPassword</string>
|
||||
|
Loading…
Reference in New Issue
Block a user