2
0

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:
Maarten Billemont 2012-05-07 22:18:01 +02:00
parent 98080ceb51
commit f622b2c7d4
22 changed files with 560 additions and 270 deletions

3
.gitmodules vendored
View File

@ -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

@ -1 +1 @@
Subproject commit 9336e50d3b896bac1478fe4ac8313387a85114c2
Subproject commit a78cd7daf1fae0fc9e86702de9b9f6d5782ae352

1
External/iCloudStoreManager vendored Submodule

@ -0,0 +1 @@
Subproject commit 303b3a3e5c092c21d8e0c92cbe9145b6492b6c7b

View File

@ -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 = (

View File

@ -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 = (

View File

@ -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;

View File

@ -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()];

View 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

View 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

View 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

View 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

View File

@ -7,7 +7,7 @@
//
#import "MPElementGeneratedEntity.h"
#import "MPAppDelegate_Key.h"
#import "MPAppDelegate_Shared.h"
@implementation MPElementGeneratedEntity

View File

@ -7,7 +7,7 @@
//
#import "MPElementStoredEntity.h"
#import "MPAppDelegate_Key.h"
#import "MPAppDelegate_Shared.h"
@interface MPElementStoredEntity ()

View File

@ -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;
}

View File

@ -7,7 +7,7 @@
//
#import "MPPasswordWindowController.h"
#import "MPAppDelegate_Key.h"
#import "MPAppDelegate_Shared.h"
#import "MPElementEntity.h"
#import "MPElementGeneratedEntity.h"

View File

@ -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>

View File

@ -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;

View File

@ -7,7 +7,7 @@
//
#import "MPGuideViewController.h"
#import "MPAppDelegate_Key.h"
#import "MPAppDelegate_Shared.h"
@implementation MPGuideViewController
@synthesize scrollView;

View File

@ -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];

View File

@ -7,7 +7,7 @@
//
#import "MPSearchDelegate.h"
#import "MPAppDelegate_Key.h"
#import "MPAppDelegate_Shared.h"
#import "MPElementGeneratedEntity.h"
@interface MPSearchDelegate (Private)

View File

@ -9,7 +9,7 @@
#import <QuartzCore/QuartzCore.h>
#import "MPUnlockViewController.h"
#import "MPAppDelegate_Key.h"
#import "MPAppDelegate_Shared.h"
typedef enum {
MPLockscreenIdle,

View File

@ -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>