diff --git a/External/Pearl b/External/Pearl index c5bf46ad..6c9ea6ad 160000 --- a/External/Pearl +++ b/External/Pearl @@ -1 +1 @@ -Subproject commit c5bf46ad1f7e6f3117a4f48a643e277705c67de3 +Subproject commit 6c9ea6ad1fab826da7d71aa88391020dc16252bc diff --git a/MasterPassword/ObjC/MPAlgorithm.h b/MasterPassword/ObjC/MPAlgorithm.h index b7dd2e3b..c954a476 100644 --- a/MasterPassword/ObjC/MPAlgorithm.h +++ b/MasterPassword/ObjC/MPAlgorithm.h @@ -22,6 +22,23 @@ #define MPAlgorithmDefaultVersion 1 #define MPAlgorithmDefault MPAlgorithmForVersion(MPAlgorithmDefaultVersion) +id MPAlgorithmForVersion(NSUInteger version); +id MPAlgorithmDefaultForBundleVersion(NSString *bundleVersion); + +PearlEnum( MPAttacker, + MPAttacker5K, MPAttacker20M, MPAttacker5B ); + +typedef struct TimeToCrack { + unsigned long long hours; + unsigned long long days; + unsigned long long weeks; + unsigned long long months; + unsigned long long years; + unsigned long long universes; +} TimeToCrack; + +NSString *NSStringFromTimeToCrack(TimeToCrack timeToCrack); + @protocol MPAlgorithm @required @@ -56,7 +73,7 @@ usingKey:(MPKey *)elementKey; - (NSString *)exportContentForElement:(MPElementEntity *)element usingKey:(MPKey *)elementKey; -@end +- (BOOL)timeToCrack:(out TimeToCrack *)timeToCrack passwordOfType:(MPElementType)type byAttacker:(MPAttacker)attacker; +- (BOOL)timeToCrack:(out TimeToCrack *)timeToCrack passwordString:(NSString *)password byAttacker:(MPAttacker)attacker; -id MPAlgorithmForVersion(NSUInteger version); -id MPAlgorithmDefaultForBundleVersion(NSString *bundleVersion); +@end diff --git a/MasterPassword/ObjC/MPAlgorithm.m b/MasterPassword/ObjC/MPAlgorithm.m index 190c85e5..7b92652d 100644 --- a/MasterPassword/ObjC/MPAlgorithm.m +++ b/MasterPassword/ObjC/MPAlgorithm.m @@ -38,3 +38,21 @@ id MPAlgorithmDefaultForBundleVersion(NSString *bundleVersion) { return MPAlgorithmDefault; } + +NSString *NSStringFromTimeToCrack(TimeToCrack timeToCrack) { + + if (timeToCrack.universes > 1) + return strl( @"> age of the universe" ); + else if (timeToCrack.years > 1) + return strl( @"%d years", timeToCrack.years ); + else if (timeToCrack.months > 1) + return strl( @"%d months", timeToCrack.months ); + else if (timeToCrack.weeks > 1) + return strl( @"%d weeks", timeToCrack.weeks ); + else if (timeToCrack.days > 1) + return strl( @"%d days", timeToCrack.days ); + else if (timeToCrack.hours > 1) + return strl( @"%d hours", timeToCrack.hours ); + else + return strl( @"trivial" ); +} diff --git a/MasterPassword/ObjC/MPAlgorithmV0.h b/MasterPassword/ObjC/MPAlgorithmV0.h index 9204e0e4..ff081d8b 100644 --- a/MasterPassword/ObjC/MPAlgorithmV0.h +++ b/MasterPassword/ObjC/MPAlgorithmV0.h @@ -18,4 +18,11 @@ #import "MPAlgorithm.h" @interface MPAlgorithmV0 : NSObject + +- (NSDictionary *)allCiphers; +- (NSArray *)ciphersForType:(MPElementType)type; +- (NSArray *)cipherClasses; +- (NSArray *)cipherClassCharacters; +- (NSString *)charactersForCipherClass:(NSString *)cipherClass; + @end diff --git a/MasterPassword/ObjC/MPAlgorithmV0.m b/MasterPassword/ObjC/MPAlgorithmV0.m index 97d9dd39..569c92f6 100644 --- a/MasterPassword/ObjC/MPAlgorithmV0.m +++ b/MasterPassword/ObjC/MPAlgorithmV0.m @@ -17,6 +17,8 @@ #import "MPAlgorithmV0.h" #import "MPEntities.h" +#include +#include #define MP_N 32768 #define MP_r 8 @@ -24,7 +26,29 @@ #define MP_dkLen 64 #define MP_hash PearlHashSHA256 -@implementation MPAlgorithmV0 +/* An AMD HD 6990 calculates 3833M SHA-1 hashes per second at a cost of ~350$ per GPU */ +#define CRACKING_BCRYPTS_PER_SECOND 3833000000 +#define CRACKING_PRICE 350 + +@implementation MPAlgorithmV0 { + BN_CTX *ctx; +} + +- (id)init { + + if (!(self = [super init])) + return nil; + + ctx = BN_CTX_new(); + + return self; +} + +- (void)dealloc { + + BN_CTX_free( ctx ); + ctx = NULL; +} - (NSUInteger)version { @@ -268,12 +292,41 @@ return previousType; } -- (NSString *)generateContentNamed:(NSString *)name ofType:(MPElementType)type withCounter:(NSUInteger)counter usingKey:(MPKey *)key { +- (NSDictionary *)allCiphers { - static NSDictionary *MPTypes_ciphers = nil; - if (MPTypes_ciphers == nil) - MPTypes_ciphers = [NSDictionary dictionaryWithContentsOfURL: + static NSDictionary *ciphers = nil; + static dispatch_once_t once = 0; + dispatch_once( &once, ^{ + ciphers = [NSDictionary dictionaryWithContentsOfURL: [[NSBundle mainBundle] URLForResource:@"ciphers" withExtension:@"plist"]]; + } ); + + return ciphers; +} + +- (NSArray *)ciphersForType:(MPElementType)type { + + NSString *typeClass = [self classNameOfType:type]; + NSString *typeName = [self nameOfType:type]; + return [[[self allCiphers] valueForKey:typeClass] valueForKey:typeName]; +} + +- (NSArray *)cipherClasses { + + return [[[self allCiphers] valueForKey:@"MPCharacterClasses"] allKeys]; +} + +- (NSArray *)cipherClassCharacters { + + return [[[self allCiphers] valueForKey:@"MPCharacterClasses"] allValues]; +} + +- (NSString *)charactersForCipherClass:(NSString *)cipherClass { + + return [NSNullToNil( [NSNullToNil( [[self allCiphers] valueForKey:@"MPCharacterClasses"] ) valueForKey:cipherClass] ) copy]; +} + +- (NSString *)generateContentNamed:(NSString *)name ofType:(MPElementType)type withCounter:(NSUInteger)counter usingKey:(MPKey *)key { // Determine the seed whose bytes will be used for calculating a password uint32_t ncounter = htonl( counter ), nnameLength = htonl( name.length ); @@ -291,12 +344,9 @@ // Determine the cipher from the first seed byte. NSAssert( [seed length], @"Missing seed." ); - NSString *typeClass = [self classNameOfType:type]; - NSString *typeName = [self nameOfType:type]; - id classCiphers = [MPTypes_ciphers valueForKey:typeClass]; - NSArray *typeCiphers = [classCiphers valueForKey:typeName]; + NSArray *typeCiphers = [self ciphersForType:type]; NSString *cipher = typeCiphers[htons( seedBytes[0] ) % [typeCiphers count]]; - trc( @"type %@, ciphers: %@, selected: %@", typeName, typeCiphers, cipher ); + trc( @"type %@, ciphers: %@, selected: %@", [self nameOfType:type], typeCiphers, cipher ); // Encode the content, character by character, using subsequent seed bytes and the cipher. NSAssert( [seed length] >= [cipher length] + 1, @"Insufficient seed bytes to encode cipher." ); @@ -304,7 +354,7 @@ for (NSUInteger c = 0; c < [cipher length]; ++c) { uint16_t keyByte = htons( seedBytes[c + 1] ); NSString *cipherClass = [cipher substringWithRange:NSMakeRange( c, 1 )]; - NSString *cipherClassCharacters = [[MPTypes_ciphers valueForKey:@"MPCharacterClasses"] valueForKey:cipherClass]; + NSString *cipherClassCharacters = [self charactersForCipherClass:cipherClass]; NSString *character = [cipherClassCharacters substringWithRange:NSMakeRange( keyByte % [cipherClassCharacters length], 1 )]; trc( @"class %@ has characters: %@, index: %u, selected: %@", cipherClass, cipherClassCharacters, keyByte, character ); @@ -355,7 +405,7 @@ [PearlKeyChain deleteItemForQuery:elementQuery]; else [PearlKeyChain addOrUpdateItemForQuery:elementQuery withAttributes:@{ - (__bridge id)kSecValueData : encryptedContent, + (__bridge id)kSecValueData : encryptedContent, #if TARGET_OS_IPHONE (__bridge id)kSecAttrAccessible : (__bridge id)kSecAttrAccessibleWhenUnlockedThisDeviceOnly, #endif @@ -557,4 +607,134 @@ return [[NSString alloc] initWithBytes:decryptedContent.bytes length:decryptedContent.length encoding:NSUTF8StringEncoding]; } +- (BOOL)timeToCrack:(out TimeToCrack *)timeToCrack passwordOfType:(MPElementType)type byAttacker:(MPAttacker)attacker { + + if (!type) + return NO; + NSArray *ciphers = [self ciphersForType:type]; + if (!ciphers) + return NO; + + BIGNUM *permutations = BN_new(), *cipherPermutations = BN_new(); + for (NSString *cipher in ciphers) { + BN_one( cipherPermutations ); + + for (NSUInteger c = 0; c < [cipher length]; ++c) + BN_mul_word( cipherPermutations, + (BN_ULONG)[[self charactersForCipherClass:[cipher substringWithRange:NSMakeRange( c, 1 )]] length] ); + + BN_add( permutations, permutations, cipherPermutations ); + } + BN_free( cipherPermutations ); + + return [self timeToCrack:timeToCrack permutations:permutations forAttacker:attacker]; +} + +- (BOOL)timeToCrack:(out TimeToCrack *)timeToCrack passwordString:(NSString *)password byAttacker:(MPAttacker)attacker { + + BIGNUM *permutations = BN_new(); + BN_one( permutations ); + + NSMutableString *cipher = [NSMutableString new]; + for (NSUInteger c = 0; c < [password length]; ++c) { + NSString *passwordCharacter = [password substringWithRange:NSMakeRange( c, 1 )]; + + NSUInteger characterEntropy = 0; + for (NSString *cipherClass in @[ @"v", @"c", @"a", @"x" ]) { + NSString *charactersForClass = [self charactersForCipherClass:cipherClass]; + + if ([charactersForClass rangeOfString:passwordCharacter].location != NSNotFound) { + // Found class for password character. + characterEntropy = [charactersForClass length]; + [cipher appendString:cipherClass]; + break; + } + } + if (!characterEntropy) { + [cipher appendString:@"b"]; + characterEntropy = 256 /* a byte */; + } + + BN_mul_word( permutations, (BN_ULONG)characterEntropy ); + } + + return [self timeToCrack:timeToCrack permutations:permutations forAttacker:attacker]; +} + +- (BOOL)timeToCrack:(out TimeToCrack *)timeToCrack permutations:(BIGNUM *)permutations forAttacker:(MPAttacker)attacker { + + BN_div_word( permutations, CRACKING_BCRYPTS_PER_SECOND ); + switch (attacker) { + case MPAttacker5K: + BN_mul_word( permutations, (BN_ULONG)5000LLU ); + break; + case MPAttacker20M: + BN_mul_word( permutations, (BN_ULONG)20000000LLU ); + break; + case MPAttacker5B: + BN_mul_word( permutations, (BN_ULONG)5000000000LLU ); + break; + } + BN_div_word( permutations, CRACKING_PRICE ); + + BIGNUM *max = BN_new(); + BN_set_word( max, (BN_ULONG)-1 ); + + BIGNUM *hoursToCrack = BN_dup( permutations ); + BN_div_word( hoursToCrack, 3600 ); + if (BN_cmp( hoursToCrack, max ) < 0) + timeToCrack->hours = BN_get_word( hoursToCrack ); + else + timeToCrack->hours = (BN_ULONG)-1; + + BIGNUM *daysToCrack = BN_dup( hoursToCrack ); + BN_div_word( daysToCrack, 24 ); + if (BN_cmp( daysToCrack, max ) < 0) + timeToCrack->days = BN_get_word( daysToCrack ); + else + timeToCrack->days = (BN_ULONG)-1; + + BIGNUM *weeksToCrack = BN_dup( daysToCrack ); + BN_div_word( weeksToCrack, 7 ); + if (BN_cmp( weeksToCrack, max ) < 0) + timeToCrack->weeks = BN_get_word( weeksToCrack ); + else + timeToCrack->weeks = (BN_ULONG)-1; + + BIGNUM *monthsToCrack = BN_dup( daysToCrack ); + BN_div_word( monthsToCrack, 31 ); + if (BN_cmp( monthsToCrack, max ) < 0) + timeToCrack->months = BN_get_word( monthsToCrack ); + else + timeToCrack->months = (BN_ULONG)-1; + + BIGNUM *yearsToCrack = BN_dup( daysToCrack ); + BN_div_word( yearsToCrack, 356 ); + if (BN_cmp( yearsToCrack, max ) < 0) + timeToCrack->years = BN_get_word( yearsToCrack ); + else + timeToCrack->years = (BN_ULONG)-1; + + BIGNUM *universesToCrack = BN_dup( yearsToCrack ); + BN_div_word( universesToCrack, (BN_ULONG)14000000000LLU ); + if (BN_cmp( universesToCrack, max ) < 0) + timeToCrack->universes = BN_get_word( universesToCrack ); + else + timeToCrack->universes = (BN_ULONG)-1; + + for (unsigned long error = ERR_get_error(); error; error = ERR_get_error()) + err( @"bignum error: %lu", error ); + + BN_free( max ); + BN_free( permutations ); + BN_free( hoursToCrack ); + BN_free( daysToCrack ); + BN_free( weeksToCrack ); + BN_free( monthsToCrack ); + BN_free( yearsToCrack ); + BN_free( universesToCrack ); + + return YES; +} + @end diff --git a/MasterPassword/ObjC/MPAlgorithmV1.m b/MasterPassword/ObjC/MPAlgorithmV1.m index b2bad969..6ef54659 100644 --- a/MasterPassword/ObjC/MPAlgorithmV1.m +++ b/MasterPassword/ObjC/MPAlgorithmV1.m @@ -47,13 +47,6 @@ - (NSString *)generateContentNamed:(NSString *)name ofType:(MPElementType)type withCounter:(NSUInteger)counter usingKey:(MPKey *)key { - static __strong NSDictionary *MPTypes_ciphers = nil; - static dispatch_once_t once = 0; - dispatch_once( &once, ^{ - MPTypes_ciphers = [NSDictionary dictionaryWithContentsOfURL: - [[NSBundle mainBundle] URLForResource:@"ciphers" withExtension:@"plist"]]; - } ); - // Determine the seed whose bytes will be used for calculating a password uint32_t ncounter = htonl( counter ), nnameLength = htonl( name.length ); NSData *counterBytes = [NSData dataWithBytes:&ncounter length:sizeof( ncounter )]; @@ -72,7 +65,7 @@ // Determine the cipher from the first seed byte. NSAssert( [seed length], @"Missing seed." ); - NSArray *typeCiphers = [[MPTypes_ciphers valueForKey:[self classNameOfType:type]] valueForKey:[self nameOfType:type]]; + NSArray *typeCiphers = [self ciphersForType:type]; NSString *cipher = typeCiphers[seedBytes[0] % [typeCiphers count]]; trc( @"type %@, ciphers: %@, selected: %@", [self nameOfType:type], typeCiphers, cipher ); @@ -82,7 +75,7 @@ for (NSUInteger c = 0; c < [cipher length]; ++c) { uint16_t keyByte = seedBytes[c + 1]; NSString *cipherClass = [cipher substringWithRange:NSMakeRange( c, 1 )]; - NSString *cipherClassCharacters = [[MPTypes_ciphers valueForKey:@"MPCharacterClasses"] valueForKey:cipherClass]; + NSString *cipherClassCharacters = [self charactersForCipherClass:cipherClass]; NSString *character = [cipherClassCharacters substringWithRange:NSMakeRange( keyByte % [cipherClassCharacters length], 1 )]; trc( @"class %@ has characters: %@, index: %u, selected: %@", cipherClass, cipherClassCharacters, keyByte, character ); diff --git a/MasterPassword/ObjC/MPConfig.h b/MasterPassword/ObjC/MPConfig.h index 31cd30da..2a53f6f6 100644 --- a/MasterPassword/ObjC/MPConfig.h +++ b/MasterPassword/ObjC/MPConfig.h @@ -17,4 +17,6 @@ @property(nonatomic, retain) NSNumber *iCloudDecided; @property(nonatomic, retain) NSNumber *checkInconsistency; +@property(nonatomic, strong) NSNumber *attackHardware; + @end diff --git a/MasterPassword/ObjC/MPConfig.m b/MasterPassword/ObjC/MPConfig.m index a1bbda82..d8d899c0 100644 --- a/MasterPassword/ObjC/MPConfig.m +++ b/MasterPassword/ObjC/MPConfig.m @@ -10,7 +10,7 @@ @implementation MPConfig -@dynamic sendInfo, rememberLogin, iCloudDecided, checkInconsistency, hidePasswords; +@dynamic sendInfo, rememberLogin, iCloudDecided, checkInconsistency, hidePasswords, attackHardware; - (id)init { @@ -24,7 +24,8 @@ NSStringFromSelector( @selector( rememberLogin ) ) : @NO, NSStringFromSelector( @selector( hidePasswords ) ) : @NO, NSStringFromSelector( @selector( iCloudDecided ) ) : @NO, - NSStringFromSelector( @selector( checkInconsistency ) ) : @NO + NSStringFromSelector( @selector( checkInconsistency ) ) : @NO, + NSStringFromSelector( @selector( attackHardware ) ) : @(MPAttacker5K), }]; self.delegate = [MPAppDelegate_Shared get]; diff --git a/MasterPassword/ObjC/Mac/MPMacAppDelegate.m b/MasterPassword/ObjC/Mac/MPMacAppDelegate.m index 0c15b1ba..b00a4ca1 100644 --- a/MasterPassword/ObjC/Mac/MPMacAppDelegate.m +++ b/MasterPassword/ObjC/Mac/MPMacAppDelegate.m @@ -26,8 +26,8 @@ static EventHotKeyID MPLockHotKey = { .signature = 'lock', .id = 1 }; + (void)initialize { - static dispatch_once_t initialize = 0; - dispatch_once( &initialize, ^{ + static dispatch_once_t once = 0; + dispatch_once( &once, ^{ [MPMacConfig get]; #ifdef DEBUG diff --git a/MasterPassword/ObjC/iOS/MPPasswordCell.h b/MasterPassword/ObjC/iOS/MPPasswordCell.h index 0cbc7705..891c1957 100644 --- a/MasterPassword/ObjC/iOS/MPPasswordCell.h +++ b/MasterPassword/ObjC/iOS/MPPasswordCell.h @@ -25,7 +25,7 @@ typedef NS_ENUM ( NSUInteger, MPPasswordCellMode ) { MPPasswordCellModeSettings, }; -@interface MPPasswordCell : MPCell +@interface MPPasswordCell : MPCell - (void)setElement:(MPElementEntity *)element animated:(BOOL)animated; - (void)setTransientSite:(NSString *)siteName animated:(BOOL)animated; diff --git a/MasterPassword/ObjC/iOS/MPPasswordCell.m b/MasterPassword/ObjC/iOS/MPPasswordCell.m index 2c739ae1..ae5947c5 100644 --- a/MasterPassword/ObjC/iOS/MPPasswordCell.m +++ b/MasterPassword/ObjC/iOS/MPPasswordCell.m @@ -80,7 +80,8 @@ _elementOID = nil; self.loginModeButton.selected = NO; - [self setMode:MPPasswordCellModePassword animated:NO]; + self.mode = MPPasswordCellModePassword; + [self updateAnimated:NO]; } #pragma mark - State @@ -121,6 +122,24 @@ atScrollPosition:UICollectionViewScrollPositionCenteredVertically animated:YES]; } +- (IBAction)textFieldDidChange:(UITextField *)textField { + + if (textField == self.passwordField) { + NSString *password = self.passwordField.text; + [MPiOSAppDelegate managedObjectContextPerformBlock:^(NSManagedObjectContext *context) { + TimeToCrack timeToCrack; + MPElementEntity *element = [self elementInContext:context]; + id algorithm = element.algorithm?: MPAlgorithmDefault; + MPAttacker attackHardware = [[MPConfig get].attackHardware unsignedIntegerValue]; + if ([algorithm timeToCrack:&timeToCrack passwordOfType:[self elementInContext:context].type byAttacker:attackHardware] || + [algorithm timeToCrack:&timeToCrack passwordString:password byAttacker:attackHardware]) + PearlMainQueue( ^{ + self.strengthLabel.text = NSStringFromTimeToCrack( timeToCrack ); + } ); + }]; + } +} + - (void)textFieldDidEndEditing:(UITextField *)textField { if (textField == self.passwordField || textField == self.loginNameField) { @@ -207,7 +226,8 @@ if (self.loginModeButton.selected) { self.loginNameField.enabled = YES; [self.loginNameField becomeFirstResponder]; - } else if ([self elementInContext:[MPiOSAppDelegate managedObjectContextForMainThreadIfReady]].type & MPElementTypeClassStored) { + } + else if ([self elementInContext:[MPiOSAppDelegate managedObjectContextForMainThreadIfReady]].type & MPElementTypeClassStored) { self.passwordField.enabled = YES; [self.passwordField becomeFirstResponder]; } @@ -326,7 +346,7 @@ - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { - if (roundf( scrollView.contentOffset.x / self.bounds.size.width ) == 0.0f) + if (roundf( (float)(scrollView.contentOffset.x / self.bounds.size.width) ) == 0.0f) [self setMode:MPPasswordCellModePassword animated:YES]; else [self setMode:MPPasswordCellModeSettings animated:YES]; @@ -367,8 +387,8 @@ self.passwordField.enabled = NO; self.passwordField.secureTextEntry = [[MPiOSConfig get].hidePasswords boolValue]; self.passwordField.attributedPlaceholder = stra( - mainElement.type & MPElementTypeClassStored? strl( @"Set custom password" ): - mainElement.type & MPElementTypeClassGenerated? strl( @"Generating..." ): @"", @{ + mainElement.type & MPElementTypeClassStored? strl( @"No password" ): + mainElement.type & MPElementTypeClassGenerated? strl( @"..." ): @"", @{ NSForegroundColorAttributeName : [UIColor whiteColor] } ); [MPiOSAppDelegate managedObjectContextPerformBlock:^(NSManagedObjectContext *context) { @@ -380,8 +400,17 @@ else password = [[self elementInContext:context] resolveContentUsingKey:[MPiOSAppDelegate get].key]; + MPAttacker attackHardware = [[MPConfig get].attackHardware unsignedIntegerValue]; + TimeToCrack timeToCrack; + NSString *timeToCrackString = nil; + id algorithm = mainElement.algorithm?: MPAlgorithmDefault; + if ([algorithm timeToCrack:&timeToCrack passwordOfType:[self elementInContext:context].type byAttacker:attackHardware] || + [algorithm timeToCrack:&timeToCrack passwordString:password byAttacker:attackHardware]) + timeToCrackString = NSStringFromTimeToCrack( timeToCrack ); + PearlMainQueue( ^{ self.passwordField.text = password; + self.strengthLabel.text = timeToCrackString; } ); }]; @@ -395,9 +424,6 @@ self.loginNameField.attributedPlaceholder = stra( strl( @"Set login name" ), @{ NSForegroundColorAttributeName : [UIColor whiteColor] } ); - - // Strength Label -//#warning TODO }]; } diff --git a/MasterPassword/ObjC/iOS/MasterPassword-iOS.xcodeproj/project.pbxproj b/MasterPassword/ObjC/iOS/MasterPassword-iOS.xcodeproj/project.pbxproj index 399ada2c..3df21b91 100644 --- a/MasterPassword/ObjC/iOS/MasterPassword-iOS.xcodeproj/project.pbxproj +++ b/MasterPassword/ObjC/iOS/MasterPassword-iOS.xcodeproj/project.pbxproj @@ -89,6 +89,8 @@ DA25C5FF197DBF200046CDCF /* icon_thumbs-up@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DABD384B1711E29700CF925C /* icon_thumbs-up@2x.png */; }; DA25C600197DBF260046CDCF /* icon_trash.png in Resources */ = {isa = PBXBuildFile; fileRef = DABD38501711E29700CF925C /* icon_trash.png */; }; DA25C601197DBF260046CDCF /* icon_trash@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DABD38511711E29700CF925C /* icon_trash@2x.png */; }; + DA25C6B41980D3C50046CDCF /* openssl in Headers */ = {isa = PBXBuildFile; fileRef = DA25C6B31980D3C10046CDCF /* openssl */; settings = {ATTRIBUTES = (Public, ); }; }; + DA25C6B61980D3DF0046CDCF /* scrypt in Headers */ = {isa = PBXBuildFile; fileRef = DA25C6B51980D3DD0046CDCF /* scrypt */; settings = {ATTRIBUTES = (Public, ); }; }; DA2CA4DD18D28859007798F8 /* NSArray+Pearl.m in Sources */ = {isa = PBXBuildFile; fileRef = DA2CA4D918D28859007798F8 /* NSArray+Pearl.m */; }; DA2CA4DE18D28859007798F8 /* NSArray+Pearl.h in Headers */ = {isa = PBXBuildFile; fileRef = DA2CA4DA18D28859007798F8 /* NSArray+Pearl.h */; }; DA2CA4DF18D28859007798F8 /* NSTimer+PearlBlock.m in Sources */ = {isa = PBXBuildFile; fileRef = DA2CA4DB18D28859007798F8 /* NSTimer+PearlBlock.m */; }; @@ -269,87 +271,6 @@ DACA29BF1705E2DE002C6C22 /* UIColor+HSV.m in Sources */ = {isa = PBXBuildFile; fileRef = DACA29BB1705E2DE002C6C22 /* UIColor+HSV.m */; }; DAD312C21552A22700A3F9ED /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = DAD312C01552A20800A3F9ED /* libsqlite3.dylib */; }; DAE1EF2217E942DE00BC0086 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = DAE1EF2417E942DE00BC0086 /* Localizable.strings */; }; - DAEB933318AA537D000490CC /* crypto_aesctr.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB92E118AA537D000490CC /* crypto_aesctr.h */; }; - DAEB933418AA537D000490CC /* crypto_scrypt.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB92E218AA537D000490CC /* crypto_scrypt.h */; }; - DAEB933518AA537D000490CC /* memlimit.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB92E318AA537D000490CC /* memlimit.h */; }; - DAEB933618AA537D000490CC /* readpass.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB92E418AA537D000490CC /* readpass.h */; }; - DAEB933718AA537D000490CC /* scryptenc.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB92E518AA537D000490CC /* scryptenc.h */; }; - DAEB933818AA537D000490CC /* scryptenc_cpuperf.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB92E618AA537D000490CC /* scryptenc_cpuperf.h */; }; - DAEB933918AA537D000490CC /* sha256.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB92E718AA537D000490CC /* sha256.h */; }; - DAEB933A18AA537D000490CC /* sysendian.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB92E818AA537D000490CC /* sysendian.h */; }; - DAEB933B18AA537D000490CC /* warn.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB92E918AA537D000490CC /* warn.h */; }; - DAEB933C18AA537D000490CC /* aes.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB92EB18AA537D000490CC /* aes.h */; }; - DAEB933D18AA537D000490CC /* asn1.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB92EC18AA537D000490CC /* asn1.h */; }; - DAEB933E18AA537D000490CC /* asn1_mac.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB92ED18AA537D000490CC /* asn1_mac.h */; }; - DAEB933F18AA537D000490CC /* asn1t.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB92EE18AA537D000490CC /* asn1t.h */; }; - DAEB934018AA537D000490CC /* bio.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB92EF18AA537D000490CC /* bio.h */; }; - DAEB934118AA537D000490CC /* blowfish.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB92F018AA537D000490CC /* blowfish.h */; }; - DAEB934218AA537D000490CC /* bn.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB92F118AA537D000490CC /* bn.h */; }; - DAEB934318AA537D000490CC /* buffer.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB92F218AA537D000490CC /* buffer.h */; }; - DAEB934418AA537D000490CC /* camellia.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB92F318AA537D000490CC /* camellia.h */; }; - DAEB934518AA537D000490CC /* cast.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB92F418AA537D000490CC /* cast.h */; }; - DAEB934618AA537D000490CC /* cms.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB92F518AA537D000490CC /* cms.h */; }; - DAEB934718AA537D000490CC /* comp.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB92F618AA537D000490CC /* comp.h */; }; - DAEB934818AA537D000490CC /* conf.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB92F718AA537D000490CC /* conf.h */; }; - DAEB934918AA537D000490CC /* conf_api.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB92F818AA537D000490CC /* conf_api.h */; }; - DAEB934A18AA537D000490CC /* crypto.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB92F918AA537D000490CC /* crypto.h */; }; - DAEB934B18AA537D000490CC /* des.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB92FA18AA537D000490CC /* des.h */; }; - DAEB934C18AA537D000490CC /* des_old.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB92FB18AA537D000490CC /* des_old.h */; }; - DAEB934D18AA537D000490CC /* dh.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB92FC18AA537D000490CC /* dh.h */; }; - DAEB934E18AA537D000490CC /* dsa.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB92FD18AA537D000490CC /* dsa.h */; }; - DAEB934F18AA537D000490CC /* dso.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB92FE18AA537D000490CC /* dso.h */; }; - DAEB935018AA537D000490CC /* dtls1.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB92FF18AA537D000490CC /* dtls1.h */; }; - DAEB935118AA537D000490CC /* e_os2.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB930018AA537D000490CC /* e_os2.h */; }; - DAEB935218AA537D000490CC /* ebcdic.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB930118AA537D000490CC /* ebcdic.h */; }; - DAEB935318AA537D000490CC /* ec.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB930218AA537D000490CC /* ec.h */; }; - DAEB935418AA537D000490CC /* ecdh.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB930318AA537D000490CC /* ecdh.h */; }; - DAEB935518AA537D000490CC /* ecdsa.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB930418AA537D000490CC /* ecdsa.h */; }; - DAEB935618AA537D000490CC /* engine.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB930518AA537D000490CC /* engine.h */; }; - DAEB935718AA537D000490CC /* err.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB930618AA537D000490CC /* err.h */; }; - DAEB935818AA537D000490CC /* evp.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB930718AA537D000490CC /* evp.h */; }; - DAEB935918AA537D000490CC /* hmac.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB930818AA537D000490CC /* hmac.h */; }; - DAEB935A18AA537D000490CC /* idea.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB930918AA537D000490CC /* idea.h */; }; - DAEB935B18AA537D000490CC /* krb5_asn.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB930A18AA537D000490CC /* krb5_asn.h */; }; - DAEB935C18AA537D000490CC /* kssl.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB930B18AA537D000490CC /* kssl.h */; }; - DAEB935D18AA537D000490CC /* lhash.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB930C18AA537D000490CC /* lhash.h */; }; - DAEB935E18AA537D000490CC /* md4.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB930D18AA537D000490CC /* md4.h */; }; - DAEB935F18AA537D000490CC /* md5.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB930E18AA537D000490CC /* md5.h */; }; - DAEB936018AA537D000490CC /* mdc2.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB930F18AA537D000490CC /* mdc2.h */; }; - DAEB936118AA537D000490CC /* modes.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB931018AA537D000490CC /* modes.h */; }; - DAEB936218AA537D000490CC /* obj_mac.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB931118AA537D000490CC /* obj_mac.h */; }; - DAEB936318AA537D000490CC /* objects.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB931218AA537D000490CC /* objects.h */; }; - DAEB936418AA537D000490CC /* ocsp.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB931318AA537D000490CC /* ocsp.h */; }; - DAEB936518AA537D000490CC /* opensslconf.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB931418AA537D000490CC /* opensslconf.h */; }; - DAEB936618AA537D000490CC /* opensslv.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB931518AA537D000490CC /* opensslv.h */; }; - DAEB936718AA537D000490CC /* ossl_typ.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB931618AA537D000490CC /* ossl_typ.h */; }; - DAEB936818AA537D000490CC /* pem.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB931718AA537D000490CC /* pem.h */; }; - DAEB936918AA537D000490CC /* pem2.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB931818AA537D000490CC /* pem2.h */; }; - DAEB936A18AA537D000490CC /* pkcs12.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB931918AA537D000490CC /* pkcs12.h */; }; - DAEB936B18AA537D000490CC /* pkcs7.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB931A18AA537D000490CC /* pkcs7.h */; }; - DAEB936C18AA537D000490CC /* pqueue.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB931B18AA537D000490CC /* pqueue.h */; }; - DAEB936D18AA537D000490CC /* rand.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB931C18AA537D000490CC /* rand.h */; }; - DAEB936E18AA537D000490CC /* rc2.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB931D18AA537D000490CC /* rc2.h */; }; - DAEB936F18AA537D000490CC /* rc4.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB931E18AA537D000490CC /* rc4.h */; }; - DAEB937018AA537D000490CC /* ripemd.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB931F18AA537D000490CC /* ripemd.h */; }; - DAEB937118AA537D000490CC /* rsa.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB932018AA537D000490CC /* rsa.h */; }; - DAEB937218AA537D000490CC /* safestack.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB932118AA537D000490CC /* safestack.h */; }; - DAEB937318AA537D000490CC /* seed.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB932218AA537D000490CC /* seed.h */; }; - DAEB937418AA537D000490CC /* sha.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB932318AA537D000490CC /* sha.h */; }; - DAEB937518AA537D000490CC /* ssl.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB932418AA537D000490CC /* ssl.h */; }; - DAEB937618AA537D000490CC /* ssl2.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB932518AA537D000490CC /* ssl2.h */; }; - DAEB937718AA537D000490CC /* ssl23.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB932618AA537D000490CC /* ssl23.h */; }; - DAEB937818AA537D000490CC /* ssl3.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB932718AA537D000490CC /* ssl3.h */; }; - DAEB937918AA537D000490CC /* stack.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB932818AA537D000490CC /* stack.h */; }; - DAEB937A18AA537D000490CC /* symhacks.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB932918AA537D000490CC /* symhacks.h */; }; - DAEB937B18AA537D000490CC /* tls1.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB932A18AA537D000490CC /* tls1.h */; }; - DAEB937C18AA537D000490CC /* ts.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB932B18AA537D000490CC /* ts.h */; }; - DAEB937D18AA537D000490CC /* txt_db.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB932C18AA537D000490CC /* txt_db.h */; }; - DAEB937E18AA537D000490CC /* ui.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB932D18AA537D000490CC /* ui.h */; }; - DAEB937F18AA537D000490CC /* ui_compat.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB932E18AA537D000490CC /* ui_compat.h */; }; - DAEB938018AA537D000490CC /* whrlpool.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB932F18AA537D000490CC /* whrlpool.h */; }; - DAEB938118AA537D000490CC /* x509.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB933018AA537D000490CC /* x509.h */; }; - DAEB938218AA537D000490CC /* x509_vfy.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB933118AA537D000490CC /* x509_vfy.h */; }; - DAEB938318AA537D000490CC /* x509v3.h in Headers */ = {isa = PBXBuildFile; fileRef = DAEB933218AA537D000490CC /* x509v3.h */; }; DAEBC45314F6364500987BF6 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DAEBC45214F6364500987BF6 /* QuartzCore.framework */; }; DAEC85B518E3DD9A007FC0DF /* UIView+Touches.m in Sources */ = {isa = PBXBuildFile; fileRef = DAEC85B118E3DD9A007FC0DF /* UIView+Touches.m */; }; DAEC85B618E3DD9A007FC0DF /* PearlUINavigationBar.m in Sources */ = {isa = PBXBuildFile; fileRef = DAEC85B218E3DD9A007FC0DF /* PearlUINavigationBar.m */; }; @@ -545,6 +466,8 @@ DA250A14195665A100AC23F1 /* UITableView+PearlReloadFromArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UITableView+PearlReloadFromArray.h"; sourceTree = ""; }; DA250A15195665A100AC23F1 /* UICollectionReusableView+PearlDequeue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UICollectionReusableView+PearlDequeue.m"; sourceTree = ""; }; DA250A16195665A100AC23F1 /* UICollectionReusableView+PearlDequeue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UICollectionReusableView+PearlDequeue.h"; sourceTree = ""; }; + DA25C6B31980D3C10046CDCF /* openssl */ = {isa = PBXFileReference; lastKnownFileType = folder; path = openssl; sourceTree = ""; }; + DA25C6B51980D3DD0046CDCF /* scrypt */ = {isa = PBXFileReference; lastKnownFileType = folder; path = scrypt; sourceTree = ""; }; DA2CA4D918D28859007798F8 /* NSArray+Pearl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSArray+Pearl.m"; sourceTree = ""; }; DA2CA4DA18D28859007798F8 /* NSArray+Pearl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSArray+Pearl.h"; sourceTree = ""; }; DA2CA4DB18D28859007798F8 /* NSTimer+PearlBlock.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSTimer+PearlBlock.m"; sourceTree = ""; }; @@ -1290,87 +1213,6 @@ DAD312C01552A20800A3F9ED /* libsqlite3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libsqlite3.dylib; path = usr/lib/libsqlite3.dylib; sourceTree = SDKROOT; }; DADBB55918DB0CFC00D099FE /* keyboard-dark@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "keyboard-dark@2x.png"; sourceTree = ""; }; DAE1EF2317E942DE00BC0086 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; }; - DAEB92E118AA537D000490CC /* crypto_aesctr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = crypto_aesctr.h; sourceTree = ""; }; - DAEB92E218AA537D000490CC /* crypto_scrypt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = crypto_scrypt.h; sourceTree = ""; }; - DAEB92E318AA537D000490CC /* memlimit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = memlimit.h; sourceTree = ""; }; - DAEB92E418AA537D000490CC /* readpass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = readpass.h; sourceTree = ""; }; - DAEB92E518AA537D000490CC /* scryptenc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scryptenc.h; sourceTree = ""; }; - DAEB92E618AA537D000490CC /* scryptenc_cpuperf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scryptenc_cpuperf.h; sourceTree = ""; }; - DAEB92E718AA537D000490CC /* sha256.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sha256.h; sourceTree = ""; }; - DAEB92E818AA537D000490CC /* sysendian.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sysendian.h; sourceTree = ""; }; - DAEB92E918AA537D000490CC /* warn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = warn.h; sourceTree = ""; }; - DAEB92EB18AA537D000490CC /* aes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aes.h; sourceTree = ""; }; - DAEB92EC18AA537D000490CC /* asn1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = asn1.h; sourceTree = ""; }; - DAEB92ED18AA537D000490CC /* asn1_mac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = asn1_mac.h; sourceTree = ""; }; - DAEB92EE18AA537D000490CC /* asn1t.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = asn1t.h; sourceTree = ""; }; - DAEB92EF18AA537D000490CC /* bio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bio.h; sourceTree = ""; }; - DAEB92F018AA537D000490CC /* blowfish.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = blowfish.h; sourceTree = ""; }; - DAEB92F118AA537D000490CC /* bn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bn.h; sourceTree = ""; }; - DAEB92F218AA537D000490CC /* buffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = buffer.h; sourceTree = ""; }; - DAEB92F318AA537D000490CC /* camellia.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = camellia.h; sourceTree = ""; }; - DAEB92F418AA537D000490CC /* cast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cast.h; sourceTree = ""; }; - DAEB92F518AA537D000490CC /* cms.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cms.h; sourceTree = ""; }; - DAEB92F618AA537D000490CC /* comp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = comp.h; sourceTree = ""; }; - DAEB92F718AA537D000490CC /* conf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = conf.h; sourceTree = ""; }; - DAEB92F818AA537D000490CC /* conf_api.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = conf_api.h; sourceTree = ""; }; - DAEB92F918AA537D000490CC /* crypto.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = crypto.h; sourceTree = ""; }; - DAEB92FA18AA537D000490CC /* des.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = des.h; sourceTree = ""; }; - DAEB92FB18AA537D000490CC /* des_old.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = des_old.h; sourceTree = ""; }; - DAEB92FC18AA537D000490CC /* dh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dh.h; sourceTree = ""; }; - DAEB92FD18AA537D000490CC /* dsa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dsa.h; sourceTree = ""; }; - DAEB92FE18AA537D000490CC /* dso.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dso.h; sourceTree = ""; }; - DAEB92FF18AA537D000490CC /* dtls1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dtls1.h; sourceTree = ""; }; - DAEB930018AA537D000490CC /* e_os2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = e_os2.h; sourceTree = ""; }; - DAEB930118AA537D000490CC /* ebcdic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ebcdic.h; sourceTree = ""; }; - DAEB930218AA537D000490CC /* ec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ec.h; sourceTree = ""; }; - DAEB930318AA537D000490CC /* ecdh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ecdh.h; sourceTree = ""; }; - DAEB930418AA537D000490CC /* ecdsa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ecdsa.h; sourceTree = ""; }; - DAEB930518AA537D000490CC /* engine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = engine.h; sourceTree = ""; }; - DAEB930618AA537D000490CC /* err.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = err.h; sourceTree = ""; }; - DAEB930718AA537D000490CC /* evp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = evp.h; sourceTree = ""; }; - DAEB930818AA537D000490CC /* hmac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hmac.h; sourceTree = ""; }; - DAEB930918AA537D000490CC /* idea.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = idea.h; sourceTree = ""; }; - DAEB930A18AA537D000490CC /* krb5_asn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = krb5_asn.h; sourceTree = ""; }; - DAEB930B18AA537D000490CC /* kssl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = kssl.h; sourceTree = ""; }; - DAEB930C18AA537D000490CC /* lhash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lhash.h; sourceTree = ""; }; - DAEB930D18AA537D000490CC /* md4.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = md4.h; sourceTree = ""; }; - DAEB930E18AA537D000490CC /* md5.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = md5.h; sourceTree = ""; }; - DAEB930F18AA537D000490CC /* mdc2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mdc2.h; sourceTree = ""; }; - DAEB931018AA537D000490CC /* modes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = modes.h; sourceTree = ""; }; - DAEB931118AA537D000490CC /* obj_mac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = obj_mac.h; sourceTree = ""; }; - DAEB931218AA537D000490CC /* objects.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = objects.h; sourceTree = ""; }; - DAEB931318AA537D000490CC /* ocsp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ocsp.h; sourceTree = ""; }; - DAEB931418AA537D000490CC /* opensslconf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = opensslconf.h; sourceTree = ""; }; - DAEB931518AA537D000490CC /* opensslv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = opensslv.h; sourceTree = ""; }; - DAEB931618AA537D000490CC /* ossl_typ.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ossl_typ.h; sourceTree = ""; }; - DAEB931718AA537D000490CC /* pem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pem.h; sourceTree = ""; }; - DAEB931818AA537D000490CC /* pem2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pem2.h; sourceTree = ""; }; - DAEB931918AA537D000490CC /* pkcs12.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pkcs12.h; sourceTree = ""; }; - DAEB931A18AA537D000490CC /* pkcs7.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pkcs7.h; sourceTree = ""; }; - DAEB931B18AA537D000490CC /* pqueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pqueue.h; sourceTree = ""; }; - DAEB931C18AA537D000490CC /* rand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rand.h; sourceTree = ""; }; - DAEB931D18AA537D000490CC /* rc2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rc2.h; sourceTree = ""; }; - DAEB931E18AA537D000490CC /* rc4.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rc4.h; sourceTree = ""; }; - DAEB931F18AA537D000490CC /* ripemd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ripemd.h; sourceTree = ""; }; - DAEB932018AA537D000490CC /* rsa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rsa.h; sourceTree = ""; }; - DAEB932118AA537D000490CC /* safestack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = safestack.h; sourceTree = ""; }; - DAEB932218AA537D000490CC /* seed.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = seed.h; sourceTree = ""; }; - DAEB932318AA537D000490CC /* sha.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sha.h; sourceTree = ""; }; - DAEB932418AA537D000490CC /* ssl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ssl.h; sourceTree = ""; }; - DAEB932518AA537D000490CC /* ssl2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ssl2.h; sourceTree = ""; }; - DAEB932618AA537D000490CC /* ssl23.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ssl23.h; sourceTree = ""; }; - DAEB932718AA537D000490CC /* ssl3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ssl3.h; sourceTree = ""; }; - DAEB932818AA537D000490CC /* stack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stack.h; sourceTree = ""; }; - DAEB932918AA537D000490CC /* symhacks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = symhacks.h; sourceTree = ""; }; - DAEB932A18AA537D000490CC /* tls1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tls1.h; sourceTree = ""; }; - DAEB932B18AA537D000490CC /* ts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ts.h; sourceTree = ""; }; - DAEB932C18AA537D000490CC /* txt_db.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = txt_db.h; sourceTree = ""; }; - DAEB932D18AA537D000490CC /* ui.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ui.h; sourceTree = ""; }; - DAEB932E18AA537D000490CC /* ui_compat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ui_compat.h; sourceTree = ""; }; - DAEB932F18AA537D000490CC /* whrlpool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = whrlpool.h; sourceTree = ""; }; - DAEB933018AA537D000490CC /* x509.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = x509.h; sourceTree = ""; }; - DAEB933118AA537D000490CC /* x509_vfy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = x509_vfy.h; sourceTree = ""; }; - DAEB933218AA537D000490CC /* x509v3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = x509v3.h; sourceTree = ""; }; DAEBC45214F6364500987BF6 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; DAEC85B118E3DD9A007FC0DF /* UIView+Touches.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+Touches.m"; sourceTree = ""; }; DAEC85B218E3DD9A007FC0DF /* PearlUINavigationBar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PearlUINavigationBar.m; sourceTree = ""; }; @@ -1660,8 +1502,8 @@ DA5E5C6417248959003798D8 /* include */ = { isa = PBXGroup; children = ( - DAEB92E018AA537D000490CC /* scrypt */, - DAEB92EA18AA537D000490CC /* openssl */, + DA25C6B51980D3DD0046CDCF /* scrypt */, + DA25C6B31980D3C10046CDCF /* openssl */, ); path = include; sourceTree = ""; @@ -2573,101 +2415,6 @@ path = "External/uicolor-utilities"; sourceTree = ""; }; - DAEB92E018AA537D000490CC /* scrypt */ = { - isa = PBXGroup; - children = ( - DAEB92E118AA537D000490CC /* crypto_aesctr.h */, - DAEB92E218AA537D000490CC /* crypto_scrypt.h */, - DAEB92E318AA537D000490CC /* memlimit.h */, - DAEB92E418AA537D000490CC /* readpass.h */, - DAEB92E518AA537D000490CC /* scryptenc.h */, - DAEB92E618AA537D000490CC /* scryptenc_cpuperf.h */, - DAEB92E718AA537D000490CC /* sha256.h */, - DAEB92E818AA537D000490CC /* sysendian.h */, - DAEB92E918AA537D000490CC /* warn.h */, - ); - path = scrypt; - sourceTree = ""; - }; - DAEB92EA18AA537D000490CC /* openssl */ = { - isa = PBXGroup; - children = ( - DAEB92EB18AA537D000490CC /* aes.h */, - DAEB92EC18AA537D000490CC /* asn1.h */, - DAEB92ED18AA537D000490CC /* asn1_mac.h */, - DAEB92EE18AA537D000490CC /* asn1t.h */, - DAEB92EF18AA537D000490CC /* bio.h */, - DAEB92F018AA537D000490CC /* blowfish.h */, - DAEB92F118AA537D000490CC /* bn.h */, - DAEB92F218AA537D000490CC /* buffer.h */, - DAEB92F318AA537D000490CC /* camellia.h */, - DAEB92F418AA537D000490CC /* cast.h */, - DAEB92F518AA537D000490CC /* cms.h */, - DAEB92F618AA537D000490CC /* comp.h */, - DAEB92F718AA537D000490CC /* conf.h */, - DAEB92F818AA537D000490CC /* conf_api.h */, - DAEB92F918AA537D000490CC /* crypto.h */, - DAEB92FA18AA537D000490CC /* des.h */, - DAEB92FB18AA537D000490CC /* des_old.h */, - DAEB92FC18AA537D000490CC /* dh.h */, - DAEB92FD18AA537D000490CC /* dsa.h */, - DAEB92FE18AA537D000490CC /* dso.h */, - DAEB92FF18AA537D000490CC /* dtls1.h */, - DAEB930018AA537D000490CC /* e_os2.h */, - DAEB930118AA537D000490CC /* ebcdic.h */, - DAEB930218AA537D000490CC /* ec.h */, - DAEB930318AA537D000490CC /* ecdh.h */, - DAEB930418AA537D000490CC /* ecdsa.h */, - DAEB930518AA537D000490CC /* engine.h */, - DAEB930618AA537D000490CC /* err.h */, - DAEB930718AA537D000490CC /* evp.h */, - DAEB930818AA537D000490CC /* hmac.h */, - DAEB930918AA537D000490CC /* idea.h */, - DAEB930A18AA537D000490CC /* krb5_asn.h */, - DAEB930B18AA537D000490CC /* kssl.h */, - DAEB930C18AA537D000490CC /* lhash.h */, - DAEB930D18AA537D000490CC /* md4.h */, - DAEB930E18AA537D000490CC /* md5.h */, - DAEB930F18AA537D000490CC /* mdc2.h */, - DAEB931018AA537D000490CC /* modes.h */, - DAEB931118AA537D000490CC /* obj_mac.h */, - DAEB931218AA537D000490CC /* objects.h */, - DAEB931318AA537D000490CC /* ocsp.h */, - DAEB931418AA537D000490CC /* opensslconf.h */, - DAEB931518AA537D000490CC /* opensslv.h */, - DAEB931618AA537D000490CC /* ossl_typ.h */, - DAEB931718AA537D000490CC /* pem.h */, - DAEB931818AA537D000490CC /* pem2.h */, - DAEB931918AA537D000490CC /* pkcs12.h */, - DAEB931A18AA537D000490CC /* pkcs7.h */, - DAEB931B18AA537D000490CC /* pqueue.h */, - DAEB931C18AA537D000490CC /* rand.h */, - DAEB931D18AA537D000490CC /* rc2.h */, - DAEB931E18AA537D000490CC /* rc4.h */, - DAEB931F18AA537D000490CC /* ripemd.h */, - DAEB932018AA537D000490CC /* rsa.h */, - DAEB932118AA537D000490CC /* safestack.h */, - DAEB932218AA537D000490CC /* seed.h */, - DAEB932318AA537D000490CC /* sha.h */, - DAEB932418AA537D000490CC /* ssl.h */, - DAEB932518AA537D000490CC /* ssl2.h */, - DAEB932618AA537D000490CC /* ssl23.h */, - DAEB932718AA537D000490CC /* ssl3.h */, - DAEB932818AA537D000490CC /* stack.h */, - DAEB932918AA537D000490CC /* symhacks.h */, - DAEB932A18AA537D000490CC /* tls1.h */, - DAEB932B18AA537D000490CC /* ts.h */, - DAEB932C18AA537D000490CC /* txt_db.h */, - DAEB932D18AA537D000490CC /* ui.h */, - DAEB932E18AA537D000490CC /* ui_compat.h */, - DAEB932F18AA537D000490CC /* whrlpool.h */, - DAEB933018AA537D000490CC /* x509.h */, - DAEB933118AA537D000490CC /* x509_vfy.h */, - DAEB933218AA537D000490CC /* x509v3.h */, - ); - path = openssl; - sourceTree = ""; - }; DAFC5662172C57EC00CB5CC5 /* InAppSettingsKit */ = { isa = PBXGroup; children = ( @@ -2934,146 +2681,67 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - DAEB938118AA537D000490CC /* x509.h in Headers */, + DA25C6B61980D3DF0046CDCF /* scrypt in Headers */, + DA25C6B41980D3C50046CDCF /* openssl in Headers */, DAFE4A1315039824003ABA7C /* NSObject+PearlExport.h in Headers */, - DAEB936118AA537D000490CC /* modes.h in Headers */, DAFE4A1515039824003ABA7C /* NSString+PearlNSArrayFormat.h in Headers */, DAFE4A1715039824003ABA7C /* NSString+PearlSEL.h in Headers */, - DAEB936F18AA537D000490CC /* rc4.h in Headers */, - DAEB933318AA537D000490CC /* crypto_aesctr.h in Headers */, - DAEB936718AA537D000490CC /* ossl_typ.h in Headers */, DA250A1A195665A100AC23F1 /* UICollectionReusableView+PearlDequeue.h in Headers */, - DAEB937018AA537D000490CC /* ripemd.h in Headers */, - DAEB933F18AA537D000490CC /* asn1t.h in Headers */, - DAEB936418AA537D000490CC /* ocsp.h in Headers */, - DAEB934518AA537D000490CC /* cast.h in Headers */, - DAEB936E18AA537D000490CC /* rc2.h in Headers */, - DAEB937718AA537D000490CC /* ssl23.h in Headers */, - DAEB937918AA537D000490CC /* stack.h in Headers */, - DAEB936B18AA537D000490CC /* pkcs7.h in Headers */, DAFE4A1915039824003ABA7C /* Pearl.h in Headers */, DAFE4A1A15039824003ABA7C /* PearlAbstractStrings.h in Headers */, - DAEB938218AA537D000490CC /* x509_vfy.h in Headers */, - DAEB937118AA537D000490CC /* rsa.h in Headers */, - DAEB936318AA537D000490CC /* objects.h in Headers */, DAFE4A1E15039824003ABA7C /* PearlCodeUtils.h in Headers */, - DAEB935018AA537D000490CC /* dtls1.h in Headers */, DAFE4A2015039824003ABA7C /* PearlConfig.h in Headers */, DAFE4A2215039824003ABA7C /* PearlDeviceUtils.h in Headers */, - DAEB934E18AA537D000490CC /* dsa.h in Headers */, - DAEB935A18AA537D000490CC /* idea.h in Headers */, - DAEB933A18AA537D000490CC /* sysendian.h in Headers */, DAFE4A2415039824003ABA7C /* PearlInfoPlist.h in Headers */, DA2CA4E418D28866007798F8 /* NSLayoutConstraint+PearlUIKit.h in Headers */, DAFE4A2615039824003ABA7C /* PearlLogger.h in Headers */, DAFE4A2815039824003ABA7C /* PearlMathUtils.h in Headers */, - DAEB934418AA537D000490CC /* camellia.h in Headers */, DAFE4A2A15039824003ABA7C /* PearlObjectUtils.h in Headers */, DA250A18195665A100AC23F1 /* UITableView+PearlReloadFromArray.h in Headers */, - DAEB936D18AA537D000490CC /* rand.h in Headers */, DAFE4A2C15039824003ABA7C /* PearlResettable.h in Headers */, DAFE4A2D15039824003ABA7C /* PearlStrings.h in Headers */, DAFE4A2F15039824003ABA7C /* PearlStringUtils.h in Headers */, - DAEB935318AA537D000490CC /* ec.h in Headers */, - DAEB937818AA537D000490CC /* ssl3.h in Headers */, - DAEB935E18AA537D000490CC /* md4.h in Headers */, DA2CA4E018D28859007798F8 /* NSTimer+PearlBlock.h in Headers */, - DAEB933518AA537D000490CC /* memlimit.h in Headers */, DAFE4A3315039824003ABA7C /* Pearl-Crypto.h in Headers */, - DAEB937318AA537D000490CC /* seed.h in Headers */, - DAEB935918AA537D000490CC /* hmac.h in Headers */, - DAEB936018AA537D000490CC /* mdc2.h in Headers */, DAFE4A3415039824003ABA7C /* PearlCryptUtils.h in Headers */, - DAEB933918AA537D000490CC /* sha256.h in Headers */, DAFE4A3615039824003ABA7C /* PearlKeyChain.h in Headers */, - DAEB936818AA537D000490CC /* pem.h in Headers */, DAFE4A3815039824003ABA7C /* PearlRSAKey.h in Headers */, - DAEB934618AA537D000490CC /* cms.h in Headers */, - DAEB935F18AA537D000490CC /* md5.h in Headers */, - DAEB934B18AA537D000490CC /* des.h in Headers */, - DAEB934018AA537D000490CC /* bio.h in Headers */, DAFE4A3A15039824003ABA7C /* PearlSCrypt.h in Headers */, - DAEB933C18AA537D000490CC /* aes.h in Headers */, - DAEB937618AA537D000490CC /* ssl2.h in Headers */, DAFE4A3C15039824003ABA7C /* Pearl-UIKit-Dependencies.h in Headers */, DAEC85B818E3DD9A007FC0DF /* UIView+Touches.h in Headers */, - DAEB935B18AA537D000490CC /* krb5_asn.h in Headers */, - DAEB935818AA537D000490CC /* evp.h in Headers */, - DAEB934118AA537D000490CC /* blowfish.h in Headers */, - DAEB935218AA537D000490CC /* ebcdic.h in Headers */, - DAEB937218AA537D000490CC /* safestack.h in Headers */, DAFE4A3D15039824003ABA7C /* Pearl-UIKit.h in Headers */, DAFE4A3E15039824003ABA7C /* PearlAlert.h in Headers */, DAFE4A4015039824003ABA7C /* PearlArrayTVC.h in Headers */, - DAEB934718AA537D000490CC /* comp.h in Headers */, - DAEB933E18AA537D000490CC /* asn1_mac.h in Headers */, DAFE4A4215039824003ABA7C /* PearlBoxView.h in Headers */, - DAEB936618AA537D000490CC /* opensslv.h in Headers */, - DAEB936518AA537D000490CC /* opensslconf.h in Headers */, - DAEB935D18AA537D000490CC /* lhash.h in Headers */, - DAEB937E18AA537D000490CC /* ui.h in Headers */, - DAEB935518AA537D000490CC /* ecdsa.h in Headers */, - DAEB935718AA537D000490CC /* err.h in Headers */, DAFE4A4415039824003ABA7C /* PearlGradientView.h in Headers */, - DAEB937C18AA537D000490CC /* ts.h in Headers */, DAFE4A4615039824003ABA7C /* PearlLayout.h in Headers */, - DAEB937A18AA537D000490CC /* symhacks.h in Headers */, DAFE4A4815039824003ABA7C /* PearlLayoutView.h in Headers */, - DAEB933618AA537D000490CC /* readpass.h in Headers */, DAFE4A4A15039824003ABA7C /* PearlMessageView.h in Headers */, - DAEB934818AA537D000490CC /* conf.h in Headers */, DAFE4A4C15039824003ABA7C /* PearlRootViewController.h in Headers */, DAFE4A4E15039824003ABA7C /* PearlSheet.h in Headers */, DAFE4A5015039824003ABA7C /* PearlUIDebug.h in Headers */, DAFE4A5215039824003ABA7C /* PearlUIUtils.h in Headers */, - DAEB937418AA537D000490CC /* sha.h in Headers */, - DAEB938018AA537D000490CC /* whrlpool.h in Headers */, - DAEB933718AA537D000490CC /* scryptenc.h in Headers */, DAFE4A5415039824003ABA7C /* PearlValidatingTextField.h in Headers */, - DAEB933D18AA537D000490CC /* asn1.h in Headers */, - DAEB933B18AA537D000490CC /* warn.h in Headers */, DAFE4A5615039824003ABA7C /* PearlWebViewController.h in Headers */, - DAEB934318AA537D000490CC /* buffer.h in Headers */, - DAEB936A18AA537D000490CC /* pkcs12.h in Headers */, DAFE4A5815039824003ABA7C /* UIImage+PearlScaling.h in Headers */, DAFE4A63150399FF003ABA7C /* PearlAppDelegate.h in Headers */, DA30E9CE15722ECA00A68B4C /* NSBundle+PearlMutableInfo.h in Headers */, DA30E9D715723E6900A68B4C /* PearlLazy.h in Headers */, - DAEB936918AA537D000490CC /* pem2.h in Headers */, - DAEB937F18AA537D000490CC /* ui_compat.h in Headers */, DAA141211922FF020032B392 /* PearlTween.h in Headers */, DAFE4A63150399FF003ABA84 /* UIControl+PearlBlocks.h in Headers */, - DAEB934A18AA537D000490CC /* crypto.h in Headers */, - DAEB935618AA537D000490CC /* engine.h in Headers */, - DAEB935118AA537D000490CC /* e_os2.h in Headers */, DAFE4A63150399FF003ABA88 /* NSObject+PearlKVO.h in Headers */, DAFE4A63150399FF003ABA8C /* UIControl+PearlSelect.h in Headers */, DAFE4A63150399FF003ABA90 /* UIScrollView+PearlFlashingIndicators.h in Headers */, - DAEB934F18AA537D000490CC /* dso.h in Headers */, DAFE4A63150399FF003ABA94 /* NSDateFormatter+RFC3339.h in Headers */, - DAEB934C18AA537D000490CC /* des_old.h in Headers */, 93D39C34FE35830EF5BE1D2A /* NSArray+Indexing.h in Headers */, - DAEB936C18AA537D000490CC /* pqueue.h in Headers */, - DAEB937B18AA537D000490CC /* tls1.h in Headers */, - DAEB933818AA537D000490CC /* scryptenc_cpuperf.h in Headers */, DA2CA4DE18D28859007798F8 /* NSArray+Pearl.h in Headers */, 93D392EC39DA43C46C692C12 /* NSDictionary+Indexing.h in Headers */, - DAEB935418AA537D000490CC /* ecdh.h in Headers */, - DAEB937D18AA537D000490CC /* txt_db.h in Headers */, 93D3932889B6B4206E66A6D6 /* PearlEMail.h in Headers */, - DAEB934D18AA537D000490CC /* dh.h in Headers */, - DAEB938318AA537D000490CC /* x509v3.h in Headers */, - DAEB935C18AA537D000490CC /* kssl.h in Headers */, - DAEB933418AA537D000490CC /* crypto_scrypt.h in Headers */, DA3509FE15F101A500C14A8E /* PearlQueue.h in Headers */, DAEC85B718E3DD9A007FC0DF /* PearlUINavigationBar.h in Headers */, - DAEB934918AA537D000490CC /* conf_api.h in Headers */, 93D396BA1C74C4A06FD86437 /* PearlOverlay.h in Headers */, - DAEB937518AA537D000490CC /* ssl.h in Headers */, 93D3992FA1546E01F498F665 /* PearlNavigationController.h in Headers */, 93D39B842AB9A5D072810D76 /* NSError+PearlFullDescription.h in Headers */, - DAEB936218AA537D000490CC /* obj_mac.h in Headers */, - DAEB934218AA537D000490CC /* bn.h in Headers */, DAF4EF51190A81E400023C90 /* NSManagedObject+Pearl.h in Headers */, DAA141221922FF020032B392 /* map-macro.h in Headers */, 93D39B76DD5AB108BA8928E8 /* UIScrollView+PearlAdjustInsets.h in Headers */, @@ -3161,9 +2829,10 @@ isa = PBXNativeTarget; buildConfigurationList = DAC77CB7148291A600BCF976 /* Build configuration list for PBXNativeTarget "Pearl" */; buildPhases = ( + DA25C6C91983702E0046CDCF /* ShellScript */, + DAC77CAB148291A600BCF976 /* Headers */, DAC77CA9148291A600BCF976 /* Sources */, DAC77CAA148291A600BCF976 /* Frameworks */, - DAC77CAB148291A600BCF976 /* Headers */, ); buildRules = ( ); @@ -3479,6 +3148,19 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + DA25C6C91983702E0046CDCF /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = ":"; + }; DA6556E314D55F3000841C99 /* Run Script: GIT version -> Info.plist */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -4065,6 +3747,7 @@ GCC_PREFIX_HEADER = "../Pearl/Pearl-Prefix.pch"; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; + PUBLIC_HEADERS_FOLDER_PATH = "../../BuildProductsPath/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/include"; SKIP_INSTALL = YES; }; name = "AppStore-iOS"; @@ -4149,6 +3832,7 @@ GCC_PREFIX_HEADER = "../Pearl/Pearl-Prefix.pch"; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; + PUBLIC_HEADERS_FOLDER_PATH = "../../BuildProductsPath/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/include"; SKIP_INSTALL = YES; }; name = "Debug-iOS"; @@ -4161,6 +3845,7 @@ GCC_PREFIX_HEADER = "../Pearl/Pearl-Prefix.pch"; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; + PUBLIC_HEADERS_FOLDER_PATH = "../../BuildProductsPath/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/include"; SKIP_INSTALL = YES; }; name = "AdHoc-iOS"; diff --git a/MasterPassword/ObjC/iOS/Storyboard.storyboard b/MasterPassword/ObjC/iOS/Storyboard.storyboard index 7ac5ec18..cf8b2b78 100644 --- a/MasterPassword/ObjC/iOS/Storyboard.storyboard +++ b/MasterPassword/ObjC/iOS/Storyboard.storyboard @@ -1034,19 +1034,21 @@ - + + - - + + + @@ -1334,6 +1336,7 @@ + @@ -1344,7 +1347,6 @@ -