Added time-to-crack.
[ADDED] Compute time-to-crack for all passwords, including personal ones.
This commit is contained in:
parent
7ce8df664c
commit
2d4e26e009
2
External/Pearl
vendored
2
External/Pearl
vendored
@ -1 +1 @@
|
|||||||
Subproject commit c5bf46ad1f7e6f3117a4f48a643e277705c67de3
|
Subproject commit 6c9ea6ad1fab826da7d71aa88391020dc16252bc
|
@ -22,6 +22,23 @@
|
|||||||
#define MPAlgorithmDefaultVersion 1
|
#define MPAlgorithmDefaultVersion 1
|
||||||
#define MPAlgorithmDefault MPAlgorithmForVersion(MPAlgorithmDefaultVersion)
|
#define MPAlgorithmDefault MPAlgorithmForVersion(MPAlgorithmDefaultVersion)
|
||||||
|
|
||||||
|
id<MPAlgorithm> MPAlgorithmForVersion(NSUInteger version);
|
||||||
|
id<MPAlgorithm> 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<NSObject>
|
@protocol MPAlgorithm<NSObject>
|
||||||
|
|
||||||
@required
|
@required
|
||||||
@ -56,7 +73,7 @@
|
|||||||
usingKey:(MPKey *)elementKey;
|
usingKey:(MPKey *)elementKey;
|
||||||
- (NSString *)exportContentForElement:(MPElementEntity *)element 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<MPAlgorithm> MPAlgorithmForVersion(NSUInteger version);
|
@end
|
||||||
id<MPAlgorithm> MPAlgorithmDefaultForBundleVersion(NSString *bundleVersion);
|
|
||||||
|
@ -38,3 +38,21 @@ id<MPAlgorithm> MPAlgorithmDefaultForBundleVersion(NSString *bundleVersion) {
|
|||||||
|
|
||||||
return MPAlgorithmDefault;
|
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" );
|
||||||
|
}
|
||||||
|
@ -18,4 +18,11 @@
|
|||||||
#import "MPAlgorithm.h"
|
#import "MPAlgorithm.h"
|
||||||
|
|
||||||
@interface MPAlgorithmV0 : NSObject<MPAlgorithm>
|
@interface MPAlgorithmV0 : NSObject<MPAlgorithm>
|
||||||
|
|
||||||
|
- (NSDictionary *)allCiphers;
|
||||||
|
- (NSArray *)ciphersForType:(MPElementType)type;
|
||||||
|
- (NSArray *)cipherClasses;
|
||||||
|
- (NSArray *)cipherClassCharacters;
|
||||||
|
- (NSString *)charactersForCipherClass:(NSString *)cipherClass;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
@ -17,6 +17,8 @@
|
|||||||
|
|
||||||
#import "MPAlgorithmV0.h"
|
#import "MPAlgorithmV0.h"
|
||||||
#import "MPEntities.h"
|
#import "MPEntities.h"
|
||||||
|
#include <openssl/bn.h>
|
||||||
|
#include <openssl/err.h>
|
||||||
|
|
||||||
#define MP_N 32768
|
#define MP_N 32768
|
||||||
#define MP_r 8
|
#define MP_r 8
|
||||||
@ -24,7 +26,29 @@
|
|||||||
#define MP_dkLen 64
|
#define MP_dkLen 64
|
||||||
#define MP_hash PearlHashSHA256
|
#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 {
|
- (NSUInteger)version {
|
||||||
|
|
||||||
@ -268,12 +292,41 @@
|
|||||||
return previousType;
|
return previousType;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSString *)generateContentNamed:(NSString *)name ofType:(MPElementType)type withCounter:(NSUInteger)counter usingKey:(MPKey *)key {
|
- (NSDictionary *)allCiphers {
|
||||||
|
|
||||||
static NSDictionary *MPTypes_ciphers = nil;
|
static NSDictionary *ciphers = nil;
|
||||||
if (MPTypes_ciphers == nil)
|
static dispatch_once_t once = 0;
|
||||||
MPTypes_ciphers = [NSDictionary dictionaryWithContentsOfURL:
|
dispatch_once( &once, ^{
|
||||||
|
ciphers = [NSDictionary dictionaryWithContentsOfURL:
|
||||||
[[NSBundle mainBundle] URLForResource:@"ciphers" withExtension:@"plist"]];
|
[[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
|
// Determine the seed whose bytes will be used for calculating a password
|
||||||
uint32_t ncounter = htonl( counter ), nnameLength = htonl( name.length );
|
uint32_t ncounter = htonl( counter ), nnameLength = htonl( name.length );
|
||||||
@ -291,12 +344,9 @@
|
|||||||
|
|
||||||
// Determine the cipher from the first seed byte.
|
// Determine the cipher from the first seed byte.
|
||||||
NSAssert( [seed length], @"Missing seed." );
|
NSAssert( [seed length], @"Missing seed." );
|
||||||
NSString *typeClass = [self classNameOfType:type];
|
NSArray *typeCiphers = [self ciphersForType:type];
|
||||||
NSString *typeName = [self nameOfType:type];
|
|
||||||
id classCiphers = [MPTypes_ciphers valueForKey:typeClass];
|
|
||||||
NSArray *typeCiphers = [classCiphers valueForKey:typeName];
|
|
||||||
NSString *cipher = typeCiphers[htons( seedBytes[0] ) % [typeCiphers count]];
|
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.
|
// 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." );
|
NSAssert( [seed length] >= [cipher length] + 1, @"Insufficient seed bytes to encode cipher." );
|
||||||
@ -304,7 +354,7 @@
|
|||||||
for (NSUInteger c = 0; c < [cipher length]; ++c) {
|
for (NSUInteger c = 0; c < [cipher length]; ++c) {
|
||||||
uint16_t keyByte = htons( seedBytes[c + 1] );
|
uint16_t keyByte = htons( seedBytes[c + 1] );
|
||||||
NSString *cipherClass = [cipher substringWithRange:NSMakeRange( 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 )];
|
NSString *character = [cipherClassCharacters substringWithRange:NSMakeRange( keyByte % [cipherClassCharacters length], 1 )];
|
||||||
|
|
||||||
trc( @"class %@ has characters: %@, index: %u, selected: %@", cipherClass, cipherClassCharacters, keyByte, character );
|
trc( @"class %@ has characters: %@, index: %u, selected: %@", cipherClass, cipherClassCharacters, keyByte, character );
|
||||||
@ -355,7 +405,7 @@
|
|||||||
[PearlKeyChain deleteItemForQuery:elementQuery];
|
[PearlKeyChain deleteItemForQuery:elementQuery];
|
||||||
else
|
else
|
||||||
[PearlKeyChain addOrUpdateItemForQuery:elementQuery withAttributes:@{
|
[PearlKeyChain addOrUpdateItemForQuery:elementQuery withAttributes:@{
|
||||||
(__bridge id)kSecValueData : encryptedContent,
|
(__bridge id)kSecValueData : encryptedContent,
|
||||||
#if TARGET_OS_IPHONE
|
#if TARGET_OS_IPHONE
|
||||||
(__bridge id)kSecAttrAccessible : (__bridge id)kSecAttrAccessibleWhenUnlockedThisDeviceOnly,
|
(__bridge id)kSecAttrAccessible : (__bridge id)kSecAttrAccessibleWhenUnlockedThisDeviceOnly,
|
||||||
#endif
|
#endif
|
||||||
@ -557,4 +607,134 @@
|
|||||||
return [[NSString alloc] initWithBytes:decryptedContent.bytes length:decryptedContent.length encoding:NSUTF8StringEncoding];
|
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
|
@end
|
||||||
|
@ -47,13 +47,6 @@
|
|||||||
|
|
||||||
- (NSString *)generateContentNamed:(NSString *)name ofType:(MPElementType)type withCounter:(NSUInteger)counter usingKey:(MPKey *)key {
|
- (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
|
// Determine the seed whose bytes will be used for calculating a password
|
||||||
uint32_t ncounter = htonl( counter ), nnameLength = htonl( name.length );
|
uint32_t ncounter = htonl( counter ), nnameLength = htonl( name.length );
|
||||||
NSData *counterBytes = [NSData dataWithBytes:&ncounter length:sizeof( ncounter )];
|
NSData *counterBytes = [NSData dataWithBytes:&ncounter length:sizeof( ncounter )];
|
||||||
@ -72,7 +65,7 @@
|
|||||||
|
|
||||||
// Determine the cipher from the first seed byte.
|
// Determine the cipher from the first seed byte.
|
||||||
NSAssert( [seed length], @"Missing seed." );
|
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]];
|
NSString *cipher = typeCiphers[seedBytes[0] % [typeCiphers count]];
|
||||||
trc( @"type %@, ciphers: %@, selected: %@", [self nameOfType:type], typeCiphers, cipher );
|
trc( @"type %@, ciphers: %@, selected: %@", [self nameOfType:type], typeCiphers, cipher );
|
||||||
|
|
||||||
@ -82,7 +75,7 @@
|
|||||||
for (NSUInteger c = 0; c < [cipher length]; ++c) {
|
for (NSUInteger c = 0; c < [cipher length]; ++c) {
|
||||||
uint16_t keyByte = seedBytes[c + 1];
|
uint16_t keyByte = seedBytes[c + 1];
|
||||||
NSString *cipherClass = [cipher substringWithRange:NSMakeRange( 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 )];
|
NSString *character = [cipherClassCharacters substringWithRange:NSMakeRange( keyByte % [cipherClassCharacters length], 1 )];
|
||||||
|
|
||||||
trc( @"class %@ has characters: %@, index: %u, selected: %@", cipherClass, cipherClassCharacters, keyByte, character );
|
trc( @"class %@ has characters: %@, index: %u, selected: %@", cipherClass, cipherClassCharacters, keyByte, character );
|
||||||
|
@ -17,4 +17,6 @@
|
|||||||
@property(nonatomic, retain) NSNumber *iCloudDecided;
|
@property(nonatomic, retain) NSNumber *iCloudDecided;
|
||||||
@property(nonatomic, retain) NSNumber *checkInconsistency;
|
@property(nonatomic, retain) NSNumber *checkInconsistency;
|
||||||
|
|
||||||
|
@property(nonatomic, strong) NSNumber *attackHardware;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
@implementation MPConfig
|
@implementation MPConfig
|
||||||
|
|
||||||
@dynamic sendInfo, rememberLogin, iCloudDecided, checkInconsistency, hidePasswords;
|
@dynamic sendInfo, rememberLogin, iCloudDecided, checkInconsistency, hidePasswords, attackHardware;
|
||||||
|
|
||||||
- (id)init {
|
- (id)init {
|
||||||
|
|
||||||
@ -24,7 +24,8 @@
|
|||||||
NSStringFromSelector( @selector( rememberLogin ) ) : @NO,
|
NSStringFromSelector( @selector( rememberLogin ) ) : @NO,
|
||||||
NSStringFromSelector( @selector( hidePasswords ) ) : @NO,
|
NSStringFromSelector( @selector( hidePasswords ) ) : @NO,
|
||||||
NSStringFromSelector( @selector( iCloudDecided ) ) : @NO,
|
NSStringFromSelector( @selector( iCloudDecided ) ) : @NO,
|
||||||
NSStringFromSelector( @selector( checkInconsistency ) ) : @NO
|
NSStringFromSelector( @selector( checkInconsistency ) ) : @NO,
|
||||||
|
NSStringFromSelector( @selector( attackHardware ) ) : @(MPAttacker5K),
|
||||||
}];
|
}];
|
||||||
|
|
||||||
self.delegate = [MPAppDelegate_Shared get];
|
self.delegate = [MPAppDelegate_Shared get];
|
||||||
|
@ -26,8 +26,8 @@ static EventHotKeyID MPLockHotKey = { .signature = 'lock', .id = 1 };
|
|||||||
|
|
||||||
+ (void)initialize {
|
+ (void)initialize {
|
||||||
|
|
||||||
static dispatch_once_t initialize = 0;
|
static dispatch_once_t once = 0;
|
||||||
dispatch_once( &initialize, ^{
|
dispatch_once( &once, ^{
|
||||||
[MPMacConfig get];
|
[MPMacConfig get];
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
|
@ -25,7 +25,7 @@ typedef NS_ENUM ( NSUInteger, MPPasswordCellMode ) {
|
|||||||
MPPasswordCellModeSettings,
|
MPPasswordCellModeSettings,
|
||||||
};
|
};
|
||||||
|
|
||||||
@interface MPPasswordCell : MPCell <UIScrollViewDelegate>
|
@interface MPPasswordCell : MPCell <UIScrollViewDelegate, UITextFieldDelegate>
|
||||||
|
|
||||||
- (void)setElement:(MPElementEntity *)element animated:(BOOL)animated;
|
- (void)setElement:(MPElementEntity *)element animated:(BOOL)animated;
|
||||||
- (void)setTransientSite:(NSString *)siteName animated:(BOOL)animated;
|
- (void)setTransientSite:(NSString *)siteName animated:(BOOL)animated;
|
||||||
|
@ -80,7 +80,8 @@
|
|||||||
|
|
||||||
_elementOID = nil;
|
_elementOID = nil;
|
||||||
self.loginModeButton.selected = NO;
|
self.loginModeButton.selected = NO;
|
||||||
[self setMode:MPPasswordCellModePassword animated:NO];
|
self.mode = MPPasswordCellModePassword;
|
||||||
|
[self updateAnimated:NO];
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark - State
|
#pragma mark - State
|
||||||
@ -121,6 +122,24 @@
|
|||||||
atScrollPosition:UICollectionViewScrollPositionCenteredVertically animated:YES];
|
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<MPAlgorithm> 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 {
|
- (void)textFieldDidEndEditing:(UITextField *)textField {
|
||||||
|
|
||||||
if (textField == self.passwordField || textField == self.loginNameField) {
|
if (textField == self.passwordField || textField == self.loginNameField) {
|
||||||
@ -207,7 +226,8 @@
|
|||||||
if (self.loginModeButton.selected) {
|
if (self.loginModeButton.selected) {
|
||||||
self.loginNameField.enabled = YES;
|
self.loginNameField.enabled = YES;
|
||||||
[self.loginNameField becomeFirstResponder];
|
[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.enabled = YES;
|
||||||
[self.passwordField becomeFirstResponder];
|
[self.passwordField becomeFirstResponder];
|
||||||
}
|
}
|
||||||
@ -326,7 +346,7 @@
|
|||||||
|
|
||||||
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
|
- (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];
|
[self setMode:MPPasswordCellModePassword animated:YES];
|
||||||
else
|
else
|
||||||
[self setMode:MPPasswordCellModeSettings animated:YES];
|
[self setMode:MPPasswordCellModeSettings animated:YES];
|
||||||
@ -367,8 +387,8 @@
|
|||||||
self.passwordField.enabled = NO;
|
self.passwordField.enabled = NO;
|
||||||
self.passwordField.secureTextEntry = [[MPiOSConfig get].hidePasswords boolValue];
|
self.passwordField.secureTextEntry = [[MPiOSConfig get].hidePasswords boolValue];
|
||||||
self.passwordField.attributedPlaceholder = stra(
|
self.passwordField.attributedPlaceholder = stra(
|
||||||
mainElement.type & MPElementTypeClassStored? strl( @"Set custom password" ):
|
mainElement.type & MPElementTypeClassStored? strl( @"No password" ):
|
||||||
mainElement.type & MPElementTypeClassGenerated? strl( @"Generating..." ): @"", @{
|
mainElement.type & MPElementTypeClassGenerated? strl( @"..." ): @"", @{
|
||||||
NSForegroundColorAttributeName : [UIColor whiteColor]
|
NSForegroundColorAttributeName : [UIColor whiteColor]
|
||||||
} );
|
} );
|
||||||
[MPiOSAppDelegate managedObjectContextPerformBlock:^(NSManagedObjectContext *context) {
|
[MPiOSAppDelegate managedObjectContextPerformBlock:^(NSManagedObjectContext *context) {
|
||||||
@ -380,8 +400,17 @@
|
|||||||
else
|
else
|
||||||
password = [[self elementInContext:context] resolveContentUsingKey:[MPiOSAppDelegate get].key];
|
password = [[self elementInContext:context] resolveContentUsingKey:[MPiOSAppDelegate get].key];
|
||||||
|
|
||||||
|
MPAttacker attackHardware = [[MPConfig get].attackHardware unsignedIntegerValue];
|
||||||
|
TimeToCrack timeToCrack;
|
||||||
|
NSString *timeToCrackString = nil;
|
||||||
|
id<MPAlgorithm> 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( ^{
|
PearlMainQueue( ^{
|
||||||
self.passwordField.text = password;
|
self.passwordField.text = password;
|
||||||
|
self.strengthLabel.text = timeToCrackString;
|
||||||
} );
|
} );
|
||||||
}];
|
}];
|
||||||
|
|
||||||
@ -395,9 +424,6 @@
|
|||||||
self.loginNameField.attributedPlaceholder = stra( strl( @"Set login name" ), @{
|
self.loginNameField.attributedPlaceholder = stra( strl( @"Set login name" ), @{
|
||||||
NSForegroundColorAttributeName : [UIColor whiteColor]
|
NSForegroundColorAttributeName : [UIColor whiteColor]
|
||||||
} );
|
} );
|
||||||
|
|
||||||
// Strength Label
|
|
||||||
//#warning TODO
|
|
||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -89,6 +89,8 @@
|
|||||||
DA25C5FF197DBF200046CDCF /* icon_thumbs-up@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DABD384B1711E29700CF925C /* icon_thumbs-up@2x.png */; };
|
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 */; };
|
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 */; };
|
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 */; };
|
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 */; };
|
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 */; };
|
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 */; };
|
DACA29BF1705E2DE002C6C22 /* UIColor+HSV.m in Sources */ = {isa = PBXBuildFile; fileRef = DACA29BB1705E2DE002C6C22 /* UIColor+HSV.m */; };
|
||||||
DAD312C21552A22700A3F9ED /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = DAD312C01552A20800A3F9ED /* libsqlite3.dylib */; };
|
DAD312C21552A22700A3F9ED /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = DAD312C01552A20800A3F9ED /* libsqlite3.dylib */; };
|
||||||
DAE1EF2217E942DE00BC0086 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = DAE1EF2417E942DE00BC0086 /* Localizable.strings */; };
|
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 */; };
|
DAEBC45314F6364500987BF6 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DAEBC45214F6364500987BF6 /* QuartzCore.framework */; };
|
||||||
DAEC85B518E3DD9A007FC0DF /* UIView+Touches.m in Sources */ = {isa = PBXBuildFile; fileRef = DAEC85B118E3DD9A007FC0DF /* UIView+Touches.m */; };
|
DAEC85B518E3DD9A007FC0DF /* UIView+Touches.m in Sources */ = {isa = PBXBuildFile; fileRef = DAEC85B118E3DD9A007FC0DF /* UIView+Touches.m */; };
|
||||||
DAEC85B618E3DD9A007FC0DF /* PearlUINavigationBar.m in Sources */ = {isa = PBXBuildFile; fileRef = DAEC85B218E3DD9A007FC0DF /* PearlUINavigationBar.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 = "<group>"; };
|
DA250A14195665A100AC23F1 /* UITableView+PearlReloadFromArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UITableView+PearlReloadFromArray.h"; sourceTree = "<group>"; };
|
||||||
DA250A15195665A100AC23F1 /* UICollectionReusableView+PearlDequeue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UICollectionReusableView+PearlDequeue.m"; sourceTree = "<group>"; };
|
DA250A15195665A100AC23F1 /* UICollectionReusableView+PearlDequeue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UICollectionReusableView+PearlDequeue.m"; sourceTree = "<group>"; };
|
||||||
DA250A16195665A100AC23F1 /* UICollectionReusableView+PearlDequeue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UICollectionReusableView+PearlDequeue.h"; sourceTree = "<group>"; };
|
DA250A16195665A100AC23F1 /* UICollectionReusableView+PearlDequeue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UICollectionReusableView+PearlDequeue.h"; sourceTree = "<group>"; };
|
||||||
|
DA25C6B31980D3C10046CDCF /* openssl */ = {isa = PBXFileReference; lastKnownFileType = folder; path = openssl; sourceTree = "<group>"; };
|
||||||
|
DA25C6B51980D3DD0046CDCF /* scrypt */ = {isa = PBXFileReference; lastKnownFileType = folder; path = scrypt; sourceTree = "<group>"; };
|
||||||
DA2CA4D918D28859007798F8 /* NSArray+Pearl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSArray+Pearl.m"; sourceTree = "<group>"; };
|
DA2CA4D918D28859007798F8 /* NSArray+Pearl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSArray+Pearl.m"; sourceTree = "<group>"; };
|
||||||
DA2CA4DA18D28859007798F8 /* NSArray+Pearl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSArray+Pearl.h"; sourceTree = "<group>"; };
|
DA2CA4DA18D28859007798F8 /* NSArray+Pearl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSArray+Pearl.h"; sourceTree = "<group>"; };
|
||||||
DA2CA4DB18D28859007798F8 /* NSTimer+PearlBlock.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSTimer+PearlBlock.m"; sourceTree = "<group>"; };
|
DA2CA4DB18D28859007798F8 /* NSTimer+PearlBlock.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSTimer+PearlBlock.m"; sourceTree = "<group>"; };
|
||||||
@ -1290,87 +1213,6 @@
|
|||||||
DAD312C01552A20800A3F9ED /* libsqlite3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libsqlite3.dylib; path = usr/lib/libsqlite3.dylib; sourceTree = SDKROOT; };
|
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 = "<group>"; };
|
DADBB55918DB0CFC00D099FE /* keyboard-dark@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "keyboard-dark@2x.png"; sourceTree = "<group>"; };
|
||||||
DAE1EF2317E942DE00BC0086 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = "<group>"; };
|
DAE1EF2317E942DE00BC0086 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||||
DAEB92E118AA537D000490CC /* crypto_aesctr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = crypto_aesctr.h; sourceTree = "<group>"; };
|
|
||||||
DAEB92E218AA537D000490CC /* crypto_scrypt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = crypto_scrypt.h; sourceTree = "<group>"; };
|
|
||||||
DAEB92E318AA537D000490CC /* memlimit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = memlimit.h; sourceTree = "<group>"; };
|
|
||||||
DAEB92E418AA537D000490CC /* readpass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = readpass.h; sourceTree = "<group>"; };
|
|
||||||
DAEB92E518AA537D000490CC /* scryptenc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scryptenc.h; sourceTree = "<group>"; };
|
|
||||||
DAEB92E618AA537D000490CC /* scryptenc_cpuperf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scryptenc_cpuperf.h; sourceTree = "<group>"; };
|
|
||||||
DAEB92E718AA537D000490CC /* sha256.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sha256.h; sourceTree = "<group>"; };
|
|
||||||
DAEB92E818AA537D000490CC /* sysendian.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sysendian.h; sourceTree = "<group>"; };
|
|
||||||
DAEB92E918AA537D000490CC /* warn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = warn.h; sourceTree = "<group>"; };
|
|
||||||
DAEB92EB18AA537D000490CC /* aes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aes.h; sourceTree = "<group>"; };
|
|
||||||
DAEB92EC18AA537D000490CC /* asn1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = asn1.h; sourceTree = "<group>"; };
|
|
||||||
DAEB92ED18AA537D000490CC /* asn1_mac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = asn1_mac.h; sourceTree = "<group>"; };
|
|
||||||
DAEB92EE18AA537D000490CC /* asn1t.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = asn1t.h; sourceTree = "<group>"; };
|
|
||||||
DAEB92EF18AA537D000490CC /* bio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bio.h; sourceTree = "<group>"; };
|
|
||||||
DAEB92F018AA537D000490CC /* blowfish.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = blowfish.h; sourceTree = "<group>"; };
|
|
||||||
DAEB92F118AA537D000490CC /* bn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bn.h; sourceTree = "<group>"; };
|
|
||||||
DAEB92F218AA537D000490CC /* buffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = buffer.h; sourceTree = "<group>"; };
|
|
||||||
DAEB92F318AA537D000490CC /* camellia.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = camellia.h; sourceTree = "<group>"; };
|
|
||||||
DAEB92F418AA537D000490CC /* cast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cast.h; sourceTree = "<group>"; };
|
|
||||||
DAEB92F518AA537D000490CC /* cms.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cms.h; sourceTree = "<group>"; };
|
|
||||||
DAEB92F618AA537D000490CC /* comp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = comp.h; sourceTree = "<group>"; };
|
|
||||||
DAEB92F718AA537D000490CC /* conf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = conf.h; sourceTree = "<group>"; };
|
|
||||||
DAEB92F818AA537D000490CC /* conf_api.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = conf_api.h; sourceTree = "<group>"; };
|
|
||||||
DAEB92F918AA537D000490CC /* crypto.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = crypto.h; sourceTree = "<group>"; };
|
|
||||||
DAEB92FA18AA537D000490CC /* des.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = des.h; sourceTree = "<group>"; };
|
|
||||||
DAEB92FB18AA537D000490CC /* des_old.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = des_old.h; sourceTree = "<group>"; };
|
|
||||||
DAEB92FC18AA537D000490CC /* dh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dh.h; sourceTree = "<group>"; };
|
|
||||||
DAEB92FD18AA537D000490CC /* dsa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dsa.h; sourceTree = "<group>"; };
|
|
||||||
DAEB92FE18AA537D000490CC /* dso.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dso.h; sourceTree = "<group>"; };
|
|
||||||
DAEB92FF18AA537D000490CC /* dtls1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dtls1.h; sourceTree = "<group>"; };
|
|
||||||
DAEB930018AA537D000490CC /* e_os2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = e_os2.h; sourceTree = "<group>"; };
|
|
||||||
DAEB930118AA537D000490CC /* ebcdic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ebcdic.h; sourceTree = "<group>"; };
|
|
||||||
DAEB930218AA537D000490CC /* ec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ec.h; sourceTree = "<group>"; };
|
|
||||||
DAEB930318AA537D000490CC /* ecdh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ecdh.h; sourceTree = "<group>"; };
|
|
||||||
DAEB930418AA537D000490CC /* ecdsa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ecdsa.h; sourceTree = "<group>"; };
|
|
||||||
DAEB930518AA537D000490CC /* engine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = engine.h; sourceTree = "<group>"; };
|
|
||||||
DAEB930618AA537D000490CC /* err.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = err.h; sourceTree = "<group>"; };
|
|
||||||
DAEB930718AA537D000490CC /* evp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = evp.h; sourceTree = "<group>"; };
|
|
||||||
DAEB930818AA537D000490CC /* hmac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hmac.h; sourceTree = "<group>"; };
|
|
||||||
DAEB930918AA537D000490CC /* idea.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = idea.h; sourceTree = "<group>"; };
|
|
||||||
DAEB930A18AA537D000490CC /* krb5_asn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = krb5_asn.h; sourceTree = "<group>"; };
|
|
||||||
DAEB930B18AA537D000490CC /* kssl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = kssl.h; sourceTree = "<group>"; };
|
|
||||||
DAEB930C18AA537D000490CC /* lhash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lhash.h; sourceTree = "<group>"; };
|
|
||||||
DAEB930D18AA537D000490CC /* md4.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = md4.h; sourceTree = "<group>"; };
|
|
||||||
DAEB930E18AA537D000490CC /* md5.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = md5.h; sourceTree = "<group>"; };
|
|
||||||
DAEB930F18AA537D000490CC /* mdc2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mdc2.h; sourceTree = "<group>"; };
|
|
||||||
DAEB931018AA537D000490CC /* modes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = modes.h; sourceTree = "<group>"; };
|
|
||||||
DAEB931118AA537D000490CC /* obj_mac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = obj_mac.h; sourceTree = "<group>"; };
|
|
||||||
DAEB931218AA537D000490CC /* objects.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = objects.h; sourceTree = "<group>"; };
|
|
||||||
DAEB931318AA537D000490CC /* ocsp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ocsp.h; sourceTree = "<group>"; };
|
|
||||||
DAEB931418AA537D000490CC /* opensslconf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = opensslconf.h; sourceTree = "<group>"; };
|
|
||||||
DAEB931518AA537D000490CC /* opensslv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = opensslv.h; sourceTree = "<group>"; };
|
|
||||||
DAEB931618AA537D000490CC /* ossl_typ.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ossl_typ.h; sourceTree = "<group>"; };
|
|
||||||
DAEB931718AA537D000490CC /* pem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pem.h; sourceTree = "<group>"; };
|
|
||||||
DAEB931818AA537D000490CC /* pem2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pem2.h; sourceTree = "<group>"; };
|
|
||||||
DAEB931918AA537D000490CC /* pkcs12.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pkcs12.h; sourceTree = "<group>"; };
|
|
||||||
DAEB931A18AA537D000490CC /* pkcs7.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pkcs7.h; sourceTree = "<group>"; };
|
|
||||||
DAEB931B18AA537D000490CC /* pqueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pqueue.h; sourceTree = "<group>"; };
|
|
||||||
DAEB931C18AA537D000490CC /* rand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rand.h; sourceTree = "<group>"; };
|
|
||||||
DAEB931D18AA537D000490CC /* rc2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rc2.h; sourceTree = "<group>"; };
|
|
||||||
DAEB931E18AA537D000490CC /* rc4.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rc4.h; sourceTree = "<group>"; };
|
|
||||||
DAEB931F18AA537D000490CC /* ripemd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ripemd.h; sourceTree = "<group>"; };
|
|
||||||
DAEB932018AA537D000490CC /* rsa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rsa.h; sourceTree = "<group>"; };
|
|
||||||
DAEB932118AA537D000490CC /* safestack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = safestack.h; sourceTree = "<group>"; };
|
|
||||||
DAEB932218AA537D000490CC /* seed.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = seed.h; sourceTree = "<group>"; };
|
|
||||||
DAEB932318AA537D000490CC /* sha.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sha.h; sourceTree = "<group>"; };
|
|
||||||
DAEB932418AA537D000490CC /* ssl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ssl.h; sourceTree = "<group>"; };
|
|
||||||
DAEB932518AA537D000490CC /* ssl2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ssl2.h; sourceTree = "<group>"; };
|
|
||||||
DAEB932618AA537D000490CC /* ssl23.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ssl23.h; sourceTree = "<group>"; };
|
|
||||||
DAEB932718AA537D000490CC /* ssl3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ssl3.h; sourceTree = "<group>"; };
|
|
||||||
DAEB932818AA537D000490CC /* stack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stack.h; sourceTree = "<group>"; };
|
|
||||||
DAEB932918AA537D000490CC /* symhacks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = symhacks.h; sourceTree = "<group>"; };
|
|
||||||
DAEB932A18AA537D000490CC /* tls1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tls1.h; sourceTree = "<group>"; };
|
|
||||||
DAEB932B18AA537D000490CC /* ts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ts.h; sourceTree = "<group>"; };
|
|
||||||
DAEB932C18AA537D000490CC /* txt_db.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = txt_db.h; sourceTree = "<group>"; };
|
|
||||||
DAEB932D18AA537D000490CC /* ui.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ui.h; sourceTree = "<group>"; };
|
|
||||||
DAEB932E18AA537D000490CC /* ui_compat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ui_compat.h; sourceTree = "<group>"; };
|
|
||||||
DAEB932F18AA537D000490CC /* whrlpool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = whrlpool.h; sourceTree = "<group>"; };
|
|
||||||
DAEB933018AA537D000490CC /* x509.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = x509.h; sourceTree = "<group>"; };
|
|
||||||
DAEB933118AA537D000490CC /* x509_vfy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = x509_vfy.h; sourceTree = "<group>"; };
|
|
||||||
DAEB933218AA537D000490CC /* x509v3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = x509v3.h; sourceTree = "<group>"; };
|
|
||||||
DAEBC45214F6364500987BF6 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
|
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 = "<group>"; };
|
DAEC85B118E3DD9A007FC0DF /* UIView+Touches.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+Touches.m"; sourceTree = "<group>"; };
|
||||||
DAEC85B218E3DD9A007FC0DF /* PearlUINavigationBar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PearlUINavigationBar.m; sourceTree = "<group>"; };
|
DAEC85B218E3DD9A007FC0DF /* PearlUINavigationBar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PearlUINavigationBar.m; sourceTree = "<group>"; };
|
||||||
@ -1660,8 +1502,8 @@
|
|||||||
DA5E5C6417248959003798D8 /* include */ = {
|
DA5E5C6417248959003798D8 /* include */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
DAEB92E018AA537D000490CC /* scrypt */,
|
DA25C6B51980D3DD0046CDCF /* scrypt */,
|
||||||
DAEB92EA18AA537D000490CC /* openssl */,
|
DA25C6B31980D3C10046CDCF /* openssl */,
|
||||||
);
|
);
|
||||||
path = include;
|
path = include;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -2573,101 +2415,6 @@
|
|||||||
path = "External/uicolor-utilities";
|
path = "External/uicolor-utilities";
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
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 = "<group>";
|
|
||||||
};
|
|
||||||
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 = "<group>";
|
|
||||||
};
|
|
||||||
DAFC5662172C57EC00CB5CC5 /* InAppSettingsKit */ = {
|
DAFC5662172C57EC00CB5CC5 /* InAppSettingsKit */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
@ -2934,146 +2681,67 @@
|
|||||||
isa = PBXHeadersBuildPhase;
|
isa = PBXHeadersBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
DAEB938118AA537D000490CC /* x509.h in Headers */,
|
DA25C6B61980D3DF0046CDCF /* scrypt in Headers */,
|
||||||
|
DA25C6B41980D3C50046CDCF /* openssl in Headers */,
|
||||||
DAFE4A1315039824003ABA7C /* NSObject+PearlExport.h in Headers */,
|
DAFE4A1315039824003ABA7C /* NSObject+PearlExport.h in Headers */,
|
||||||
DAEB936118AA537D000490CC /* modes.h in Headers */,
|
|
||||||
DAFE4A1515039824003ABA7C /* NSString+PearlNSArrayFormat.h in Headers */,
|
DAFE4A1515039824003ABA7C /* NSString+PearlNSArrayFormat.h in Headers */,
|
||||||
DAFE4A1715039824003ABA7C /* NSString+PearlSEL.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 */,
|
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 */,
|
DAFE4A1915039824003ABA7C /* Pearl.h in Headers */,
|
||||||
DAFE4A1A15039824003ABA7C /* PearlAbstractStrings.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 */,
|
DAFE4A1E15039824003ABA7C /* PearlCodeUtils.h in Headers */,
|
||||||
DAEB935018AA537D000490CC /* dtls1.h in Headers */,
|
|
||||||
DAFE4A2015039824003ABA7C /* PearlConfig.h in Headers */,
|
DAFE4A2015039824003ABA7C /* PearlConfig.h in Headers */,
|
||||||
DAFE4A2215039824003ABA7C /* PearlDeviceUtils.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 */,
|
DAFE4A2415039824003ABA7C /* PearlInfoPlist.h in Headers */,
|
||||||
DA2CA4E418D28866007798F8 /* NSLayoutConstraint+PearlUIKit.h in Headers */,
|
DA2CA4E418D28866007798F8 /* NSLayoutConstraint+PearlUIKit.h in Headers */,
|
||||||
DAFE4A2615039824003ABA7C /* PearlLogger.h in Headers */,
|
DAFE4A2615039824003ABA7C /* PearlLogger.h in Headers */,
|
||||||
DAFE4A2815039824003ABA7C /* PearlMathUtils.h in Headers */,
|
DAFE4A2815039824003ABA7C /* PearlMathUtils.h in Headers */,
|
||||||
DAEB934418AA537D000490CC /* camellia.h in Headers */,
|
|
||||||
DAFE4A2A15039824003ABA7C /* PearlObjectUtils.h in Headers */,
|
DAFE4A2A15039824003ABA7C /* PearlObjectUtils.h in Headers */,
|
||||||
DA250A18195665A100AC23F1 /* UITableView+PearlReloadFromArray.h in Headers */,
|
DA250A18195665A100AC23F1 /* UITableView+PearlReloadFromArray.h in Headers */,
|
||||||
DAEB936D18AA537D000490CC /* rand.h in Headers */,
|
|
||||||
DAFE4A2C15039824003ABA7C /* PearlResettable.h in Headers */,
|
DAFE4A2C15039824003ABA7C /* PearlResettable.h in Headers */,
|
||||||
DAFE4A2D15039824003ABA7C /* PearlStrings.h in Headers */,
|
DAFE4A2D15039824003ABA7C /* PearlStrings.h in Headers */,
|
||||||
DAFE4A2F15039824003ABA7C /* PearlStringUtils.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 */,
|
DA2CA4E018D28859007798F8 /* NSTimer+PearlBlock.h in Headers */,
|
||||||
DAEB933518AA537D000490CC /* memlimit.h in Headers */,
|
|
||||||
DAFE4A3315039824003ABA7C /* Pearl-Crypto.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 */,
|
DAFE4A3415039824003ABA7C /* PearlCryptUtils.h in Headers */,
|
||||||
DAEB933918AA537D000490CC /* sha256.h in Headers */,
|
|
||||||
DAFE4A3615039824003ABA7C /* PearlKeyChain.h in Headers */,
|
DAFE4A3615039824003ABA7C /* PearlKeyChain.h in Headers */,
|
||||||
DAEB936818AA537D000490CC /* pem.h in Headers */,
|
|
||||||
DAFE4A3815039824003ABA7C /* PearlRSAKey.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 */,
|
DAFE4A3A15039824003ABA7C /* PearlSCrypt.h in Headers */,
|
||||||
DAEB933C18AA537D000490CC /* aes.h in Headers */,
|
|
||||||
DAEB937618AA537D000490CC /* ssl2.h in Headers */,
|
|
||||||
DAFE4A3C15039824003ABA7C /* Pearl-UIKit-Dependencies.h in Headers */,
|
DAFE4A3C15039824003ABA7C /* Pearl-UIKit-Dependencies.h in Headers */,
|
||||||
DAEC85B818E3DD9A007FC0DF /* UIView+Touches.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 */,
|
DAFE4A3D15039824003ABA7C /* Pearl-UIKit.h in Headers */,
|
||||||
DAFE4A3E15039824003ABA7C /* PearlAlert.h in Headers */,
|
DAFE4A3E15039824003ABA7C /* PearlAlert.h in Headers */,
|
||||||
DAFE4A4015039824003ABA7C /* PearlArrayTVC.h in Headers */,
|
DAFE4A4015039824003ABA7C /* PearlArrayTVC.h in Headers */,
|
||||||
DAEB934718AA537D000490CC /* comp.h in Headers */,
|
|
||||||
DAEB933E18AA537D000490CC /* asn1_mac.h in Headers */,
|
|
||||||
DAFE4A4215039824003ABA7C /* PearlBoxView.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 */,
|
DAFE4A4415039824003ABA7C /* PearlGradientView.h in Headers */,
|
||||||
DAEB937C18AA537D000490CC /* ts.h in Headers */,
|
|
||||||
DAFE4A4615039824003ABA7C /* PearlLayout.h in Headers */,
|
DAFE4A4615039824003ABA7C /* PearlLayout.h in Headers */,
|
||||||
DAEB937A18AA537D000490CC /* symhacks.h in Headers */,
|
|
||||||
DAFE4A4815039824003ABA7C /* PearlLayoutView.h in Headers */,
|
DAFE4A4815039824003ABA7C /* PearlLayoutView.h in Headers */,
|
||||||
DAEB933618AA537D000490CC /* readpass.h in Headers */,
|
|
||||||
DAFE4A4A15039824003ABA7C /* PearlMessageView.h in Headers */,
|
DAFE4A4A15039824003ABA7C /* PearlMessageView.h in Headers */,
|
||||||
DAEB934818AA537D000490CC /* conf.h in Headers */,
|
|
||||||
DAFE4A4C15039824003ABA7C /* PearlRootViewController.h in Headers */,
|
DAFE4A4C15039824003ABA7C /* PearlRootViewController.h in Headers */,
|
||||||
DAFE4A4E15039824003ABA7C /* PearlSheet.h in Headers */,
|
DAFE4A4E15039824003ABA7C /* PearlSheet.h in Headers */,
|
||||||
DAFE4A5015039824003ABA7C /* PearlUIDebug.h in Headers */,
|
DAFE4A5015039824003ABA7C /* PearlUIDebug.h in Headers */,
|
||||||
DAFE4A5215039824003ABA7C /* PearlUIUtils.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 */,
|
DAFE4A5415039824003ABA7C /* PearlValidatingTextField.h in Headers */,
|
||||||
DAEB933D18AA537D000490CC /* asn1.h in Headers */,
|
|
||||||
DAEB933B18AA537D000490CC /* warn.h in Headers */,
|
|
||||||
DAFE4A5615039824003ABA7C /* PearlWebViewController.h in Headers */,
|
DAFE4A5615039824003ABA7C /* PearlWebViewController.h in Headers */,
|
||||||
DAEB934318AA537D000490CC /* buffer.h in Headers */,
|
|
||||||
DAEB936A18AA537D000490CC /* pkcs12.h in Headers */,
|
|
||||||
DAFE4A5815039824003ABA7C /* UIImage+PearlScaling.h in Headers */,
|
DAFE4A5815039824003ABA7C /* UIImage+PearlScaling.h in Headers */,
|
||||||
DAFE4A63150399FF003ABA7C /* PearlAppDelegate.h in Headers */,
|
DAFE4A63150399FF003ABA7C /* PearlAppDelegate.h in Headers */,
|
||||||
DA30E9CE15722ECA00A68B4C /* NSBundle+PearlMutableInfo.h in Headers */,
|
DA30E9CE15722ECA00A68B4C /* NSBundle+PearlMutableInfo.h in Headers */,
|
||||||
DA30E9D715723E6900A68B4C /* PearlLazy.h in Headers */,
|
DA30E9D715723E6900A68B4C /* PearlLazy.h in Headers */,
|
||||||
DAEB936918AA537D000490CC /* pem2.h in Headers */,
|
|
||||||
DAEB937F18AA537D000490CC /* ui_compat.h in Headers */,
|
|
||||||
DAA141211922FF020032B392 /* PearlTween.h in Headers */,
|
DAA141211922FF020032B392 /* PearlTween.h in Headers */,
|
||||||
DAFE4A63150399FF003ABA84 /* UIControl+PearlBlocks.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 */,
|
DAFE4A63150399FF003ABA88 /* NSObject+PearlKVO.h in Headers */,
|
||||||
DAFE4A63150399FF003ABA8C /* UIControl+PearlSelect.h in Headers */,
|
DAFE4A63150399FF003ABA8C /* UIControl+PearlSelect.h in Headers */,
|
||||||
DAFE4A63150399FF003ABA90 /* UIScrollView+PearlFlashingIndicators.h in Headers */,
|
DAFE4A63150399FF003ABA90 /* UIScrollView+PearlFlashingIndicators.h in Headers */,
|
||||||
DAEB934F18AA537D000490CC /* dso.h in Headers */,
|
|
||||||
DAFE4A63150399FF003ABA94 /* NSDateFormatter+RFC3339.h in Headers */,
|
DAFE4A63150399FF003ABA94 /* NSDateFormatter+RFC3339.h in Headers */,
|
||||||
DAEB934C18AA537D000490CC /* des_old.h in Headers */,
|
|
||||||
93D39C34FE35830EF5BE1D2A /* NSArray+Indexing.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 */,
|
DA2CA4DE18D28859007798F8 /* NSArray+Pearl.h in Headers */,
|
||||||
93D392EC39DA43C46C692C12 /* NSDictionary+Indexing.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 */,
|
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 */,
|
DA3509FE15F101A500C14A8E /* PearlQueue.h in Headers */,
|
||||||
DAEC85B718E3DD9A007FC0DF /* PearlUINavigationBar.h in Headers */,
|
DAEC85B718E3DD9A007FC0DF /* PearlUINavigationBar.h in Headers */,
|
||||||
DAEB934918AA537D000490CC /* conf_api.h in Headers */,
|
|
||||||
93D396BA1C74C4A06FD86437 /* PearlOverlay.h in Headers */,
|
93D396BA1C74C4A06FD86437 /* PearlOverlay.h in Headers */,
|
||||||
DAEB937518AA537D000490CC /* ssl.h in Headers */,
|
|
||||||
93D3992FA1546E01F498F665 /* PearlNavigationController.h in Headers */,
|
93D3992FA1546E01F498F665 /* PearlNavigationController.h in Headers */,
|
||||||
93D39B842AB9A5D072810D76 /* NSError+PearlFullDescription.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 */,
|
DAF4EF51190A81E400023C90 /* NSManagedObject+Pearl.h in Headers */,
|
||||||
DAA141221922FF020032B392 /* map-macro.h in Headers */,
|
DAA141221922FF020032B392 /* map-macro.h in Headers */,
|
||||||
93D39B76DD5AB108BA8928E8 /* UIScrollView+PearlAdjustInsets.h in Headers */,
|
93D39B76DD5AB108BA8928E8 /* UIScrollView+PearlAdjustInsets.h in Headers */,
|
||||||
@ -3161,9 +2829,10 @@
|
|||||||
isa = PBXNativeTarget;
|
isa = PBXNativeTarget;
|
||||||
buildConfigurationList = DAC77CB7148291A600BCF976 /* Build configuration list for PBXNativeTarget "Pearl" */;
|
buildConfigurationList = DAC77CB7148291A600BCF976 /* Build configuration list for PBXNativeTarget "Pearl" */;
|
||||||
buildPhases = (
|
buildPhases = (
|
||||||
|
DA25C6C91983702E0046CDCF /* ShellScript */,
|
||||||
|
DAC77CAB148291A600BCF976 /* Headers */,
|
||||||
DAC77CA9148291A600BCF976 /* Sources */,
|
DAC77CA9148291A600BCF976 /* Sources */,
|
||||||
DAC77CAA148291A600BCF976 /* Frameworks */,
|
DAC77CAA148291A600BCF976 /* Frameworks */,
|
||||||
DAC77CAB148291A600BCF976 /* Headers */,
|
|
||||||
);
|
);
|
||||||
buildRules = (
|
buildRules = (
|
||||||
);
|
);
|
||||||
@ -3479,6 +3148,19 @@
|
|||||||
/* End PBXResourcesBuildPhase section */
|
/* End PBXResourcesBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXShellScriptBuildPhase 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 */ = {
|
DA6556E314D55F3000841C99 /* Run Script: GIT version -> Info.plist */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
@ -4065,6 +3747,7 @@
|
|||||||
GCC_PREFIX_HEADER = "../Pearl/Pearl-Prefix.pch";
|
GCC_PREFIX_HEADER = "../Pearl/Pearl-Prefix.pch";
|
||||||
OTHER_LDFLAGS = "-ObjC";
|
OTHER_LDFLAGS = "-ObjC";
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
PUBLIC_HEADERS_FOLDER_PATH = "../../BuildProductsPath/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/include";
|
||||||
SKIP_INSTALL = YES;
|
SKIP_INSTALL = YES;
|
||||||
};
|
};
|
||||||
name = "AppStore-iOS";
|
name = "AppStore-iOS";
|
||||||
@ -4149,6 +3832,7 @@
|
|||||||
GCC_PREFIX_HEADER = "../Pearl/Pearl-Prefix.pch";
|
GCC_PREFIX_HEADER = "../Pearl/Pearl-Prefix.pch";
|
||||||
OTHER_LDFLAGS = "-ObjC";
|
OTHER_LDFLAGS = "-ObjC";
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
PUBLIC_HEADERS_FOLDER_PATH = "../../BuildProductsPath/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/include";
|
||||||
SKIP_INSTALL = YES;
|
SKIP_INSTALL = YES;
|
||||||
};
|
};
|
||||||
name = "Debug-iOS";
|
name = "Debug-iOS";
|
||||||
@ -4161,6 +3845,7 @@
|
|||||||
GCC_PREFIX_HEADER = "../Pearl/Pearl-Prefix.pch";
|
GCC_PREFIX_HEADER = "../Pearl/Pearl-Prefix.pch";
|
||||||
OTHER_LDFLAGS = "-ObjC";
|
OTHER_LDFLAGS = "-ObjC";
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
PUBLIC_HEADERS_FOLDER_PATH = "../../BuildProductsPath/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/include";
|
||||||
SKIP_INSTALL = YES;
|
SKIP_INSTALL = YES;
|
||||||
};
|
};
|
||||||
name = "AdHoc-iOS";
|
name = "AdHoc-iOS";
|
||||||
|
@ -1034,19 +1034,21 @@
|
|||||||
<color key="textColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
|
<color key="textColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" enabled="NO" contentHorizontalAlignment="left" contentVerticalAlignment="center" text="CuzaSasy3*Rimo" textAlignment="center" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="blw-Ou-8I8" userLabel="Password">
|
<textField opaque="NO" clipsSubviews="YES" alpha="0.0" contentMode="scaleToFill" enabled="NO" contentHorizontalAlignment="left" contentVerticalAlignment="center" text="CuzaSasy3*Rimo" textAlignment="center" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="blw-Ou-8I8" userLabel="Password">
|
||||||
<rect key="frame" x="8" y="20" width="284" height="31"/>
|
<rect key="frame" x="8" y="20" width="284" height="31"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
<color key="textColor" red="0.40000000600000002" green="0.80000001190000003" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
<color key="textColor" red="0.40000000600000002" green="0.80000001190000003" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
||||||
<fontDescription key="fontDescription" name="SourceCodePro-Black" family="Source Code Pro" pointSize="24"/>
|
<fontDescription key="fontDescription" name="SourceCodePro-Black" family="Source Code Pro" pointSize="24"/>
|
||||||
<textInputTraits key="textInputTraits" autocorrectionType="no" keyboardType="alphabet" keyboardAppearance="alert" returnKeyType="done"/>
|
<textInputTraits key="textInputTraits" autocorrectionType="no" keyboardType="alphabet" keyboardAppearance="alert" returnKeyType="done"/>
|
||||||
<connections>
|
<connections>
|
||||||
|
<action selector="textFieldDidChange:" destination="W2g-yv-V3V" eventType="editingChanged" id="gTE-0d-r2l"/>
|
||||||
<outlet property="delegate" destination="W2g-yv-V3V" id="YKp-IE-zEQ"/>
|
<outlet property="delegate" destination="W2g-yv-V3V" id="YKp-IE-zEQ"/>
|
||||||
</connections>
|
</connections>
|
||||||
</textField>
|
</textField>
|
||||||
<textField opaque="NO" clipsSubviews="YES" alpha="0.0" contentMode="scaleToFill" enabled="NO" contentHorizontalAlignment="left" contentVerticalAlignment="center" text="lhunath" textAlignment="center" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="3I9-vf-IZK" userLabel="Login">
|
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" enabled="NO" contentHorizontalAlignment="left" contentVerticalAlignment="center" text="lhunath" borderStyle="roundedRect" textAlignment="center" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="3I9-vf-IZK" userLabel="Login">
|
||||||
<rect key="frame" x="8" y="20" width="284" height="31"/>
|
<rect key="frame" x="8" y="20" width="284" height="30"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
|
<color key="backgroundColor" red="0.37254901959999998" green="0.3921568627" blue="0.42745098040000001" alpha="0.10000000000000001" colorSpace="calibratedRGB"/>
|
||||||
<color key="textColor" red="0.40000000600000002" green="0.80000001190000003" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
<color key="textColor" red="0.40000000600000002" green="0.80000001190000003" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
||||||
<fontDescription key="fontDescription" name="SourceCodePro-Black" family="Source Code Pro" pointSize="24"/>
|
<fontDescription key="fontDescription" name="SourceCodePro-Black" family="Source Code Pro" pointSize="24"/>
|
||||||
<textInputTraits key="textInputTraits" autocorrectionType="no" keyboardType="alphabet" keyboardAppearance="alert" returnKeyType="done"/>
|
<textInputTraits key="textInputTraits" autocorrectionType="no" keyboardType="alphabet" keyboardAppearance="alert" returnKeyType="done"/>
|
||||||
@ -1334,6 +1336,7 @@
|
|||||||
<connections>
|
<connections>
|
||||||
<outlet property="counterButton" destination="uZi-FT-Fe8" id="oaF-bB-Sgc"/>
|
<outlet property="counterButton" destination="uZi-FT-Fe8" id="oaF-bB-Sgc"/>
|
||||||
<outlet property="counterLabel" destination="PKP-M9-T8E" id="m9u-Qx-Z9N"/>
|
<outlet property="counterLabel" destination="PKP-M9-T8E" id="m9u-Qx-Z9N"/>
|
||||||
|
<outlet property="editButton" destination="qBo-Kw-vN9" id="g0S-0o-e3D"/>
|
||||||
<outlet property="loginModeButton" destination="Agd-0J-z5o" id="VQI-nl-5Yh"/>
|
<outlet property="loginModeButton" destination="Agd-0J-z5o" id="VQI-nl-5Yh"/>
|
||||||
<outlet property="loginNameField" destination="3I9-vf-IZK" id="jK4-LI-4ST"/>
|
<outlet property="loginNameField" destination="3I9-vf-IZK" id="jK4-LI-4ST"/>
|
||||||
<outlet property="modeButton" destination="b5f-wN-2xb" id="m2X-BZ-Lbv"/>
|
<outlet property="modeButton" destination="b5f-wN-2xb" id="m2X-BZ-Lbv"/>
|
||||||
@ -1344,7 +1347,6 @@
|
|||||||
<outlet property="siteNameLabel" destination="OwP-sb-Wxl" id="6GN-Ou-K0F"/>
|
<outlet property="siteNameLabel" destination="OwP-sb-Wxl" id="6GN-Ou-K0F"/>
|
||||||
<outlet property="strengthLabel" destination="wfM-xz-roR" id="dzk-dB-OfP"/>
|
<outlet property="strengthLabel" destination="wfM-xz-roR" id="dzk-dB-OfP"/>
|
||||||
<outlet property="upgradeButton" destination="vGk-t6-hZn" id="m2T-CA-HmJ"/>
|
<outlet property="upgradeButton" destination="vGk-t6-hZn" id="m2T-CA-HmJ"/>
|
||||||
<outlet property="editButton" destination="qBo-Kw-vN9" id="g0S-0o-e3D"/>
|
|
||||||
</connections>
|
</connections>
|
||||||
</collectionViewCell>
|
</collectionViewCell>
|
||||||
</cells>
|
</cells>
|
||||||
|
Loading…
Reference in New Issue
Block a user