diff --git a/Classes/BITAuthenticator.m b/Classes/BITAuthenticator.m index a12a41983c..1ee3d380e0 100644 --- a/Classes/BITAuthenticator.m +++ b/Classes/BITAuthenticator.m @@ -35,6 +35,12 @@ #import "BITHockeyAppClient.h" #import "BITHockeyHelper.h" +#if __IPHONE_OS_VERSION_MAX_ALLOWED < 70000 +@interface NSData (iOS7) +- (NSString *)base64Encoding; +@end +#endif + static NSString* const kBITAuthenticatorUUIDKey = @"BITAuthenticatorUUIDKey"; static NSString* const kBITAuthenticatorIdentifierKey = @"BITAuthenticatorIdentifierKey"; static NSString* const kBITAuthenticatorIdentifierTypeKey = @"BITAuthenticatorIdentifierTypeKey"; @@ -408,7 +414,7 @@ static NSString* const kBITAuthenticatorAuthTokenTypeKey = @"BITAuthenticatorAut if(BITAuthenticatorIdentificationTypeHockeyAppUser == self.identificationType) { NSString *authStr = [NSString stringWithFormat:@"%@:%@", email, password]; NSData *authData = [authStr dataUsingEncoding:NSASCIIStringEncoding]; - NSString *authValue = [NSString stringWithFormat:@"Basic %@", bit_base64String(authData, authData.length)]; + NSString *authValue = [NSString stringWithFormat:@"Basic %@", [authData base64Encoding]]; [request setValue:authValue forHTTPHeaderField:@"Authorization"]; } return request; diff --git a/Classes/BITHockeyHelper.h b/Classes/BITHockeyHelper.h index 1f39fdab29..4c5bdee4fc 100644 --- a/Classes/BITHockeyHelper.h +++ b/Classes/BITHockeyHelper.h @@ -32,8 +32,6 @@ /* NSString helpers */ NSString *bit_URLEncodedString(NSString *inputString); NSString *bit_URLDecodedString(NSString *inputString); -NSString *bit_base64StringPreiOS7(NSData * data, unsigned long length); -NSString *bit_base64String(NSData * data, unsigned long length); BOOL bit_validateEmail(NSString *email); NSString *bit_keychainHockeySDKServiceName(void); diff --git a/Classes/BITHockeyHelper.m b/Classes/BITHockeyHelper.m index e30b99f5df..8ac4687e7c 100644 --- a/Classes/BITHockeyHelper.m +++ b/Classes/BITHockeyHelper.m @@ -33,13 +33,6 @@ #import "HockeySDKPrivate.h" #import -static char base64EncodingTable[64] = { - 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', - 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', - 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', - 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/' -}; - #pragma mark NSString helpers NSString *bit_URLEncodedString(NSString *inputString) { @@ -59,74 +52,6 @@ NSString *bit_URLDecodedString(NSString *inputString) { ); } -NSString *bit_base64StringPreiOS7(NSData * data, unsigned long length) { - unsigned long ixtext, lentext; - long ctremaining; - unsigned char input[3], output[4]; - short i, charsonline = 0, ctcopy; - const unsigned char *raw; - NSMutableString *result; - - lentext = [data length]; - if (lentext < 1) - return @""; - result = [NSMutableString stringWithCapacity: lentext]; - raw = [data bytes]; - ixtext = 0; - - while (true) { - ctremaining = (long)(lentext - ixtext); - if (ctremaining <= 0) - break; - for (unsigned long y = 0; y < 3; y++) { - unsigned long ix = (ixtext + y); - if (ix < lentext) - input[y] = raw[ix]; - else - input[y] = 0; - } - output[0] = (input[0] & 0xFC) >> 2; - output[1] = (unsigned char)((input[0] & 0x03) << 4) | ((input[1] & 0xF0) >> 4); - output[2] = (unsigned char)((input[1] & 0x0F) << 2) | ((input[2] & 0xC0) >> 6); - output[3] = input[2] & 0x3F; - ctcopy = 4; - switch (ctremaining) { - case 1: - ctcopy = 2; - break; - case 2: - ctcopy = 3; - break; - } - - for (i = 0; i < ctcopy; i++) - [result appendString: [NSString stringWithFormat: @"%c", base64EncodingTable[output[i]]]]; - - for (i = ctcopy; i < 4; i++) - [result appendString: @"="]; - - ixtext += 3; - charsonline += 4; - - if ((length > 0) && (charsonline >= length)) - charsonline = 0; - } - return result; -} - -NSString *bit_base64String(NSData * data, unsigned long length) { -#if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_6_1 - SEL base64EncodingSelector = NSSelectorFromString(@"base64EncodedStringWithOptions:"); - if ([data respondsToSelector:base64EncodingSelector]) { - return [data base64EncodedStringWithOptions:0]; - } else { -#endif - return bit_base64StringPreiOS7(data, length); -#if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_6_1 - } -#endif -} - BOOL bit_validateEmail(NSString *email) { NSString *emailRegex = @"(?:[a-z0-9!#$%\\&'*+/=?\\^_`{|}~-]+(?:\\.[a-z0-9!#$%\\&'*+/=?\\^_`{|}"