Files
react-native-code-push/ios/CodePush/JWT/Core/Supplement/JWTBase64Coder.m
Ruslan Bikkinin 4ab0e5e9fe Implement code signing for client ios SDK (#974)
* Add JWT Library to ios project

* Add new option PublicKey to Info.plist

* Implement code signing mechanism

Update JWT library to 3.0.0-beta4
Implement signature verification mechanism

* Undo redundant changes

* Minor improvements

* Minor fixes

Add additional checking for specific update situations
Fix bugs
Refactor method names

* Add new dependencies to podspec

* Minor improvements

Fix log messages
2017-09-13 11:28:22 +03:00

71 lines
2.0 KiB
Objective-C
Executable File

//
// JWTBase64Coder.m
// Pods
//
// Created by Lobanov Dmitry on 05.10.16.
//
//
#import "JWTBase64Coder.h"
@interface JWTBase64Coder (ConditionLinking)
+ (BOOL)isBase64AddtionsAvailable;
@end
@implementation JWTBase64Coder (ConditionLinking)
+ (BOOL)isBase64AddtionsAvailable {
return [[NSData class] respondsToSelector:@selector(dataWithBase64UrlEncodedString:)];
}
@end
#if __has_include("MF_Base64Additions.h")
#import <MF_Base64Additions.h>
#endif
@implementation JWTBase64Coder
+ (NSString *)base64UrlEncodedStringWithData:(NSData *)data {
if ([self isBase64AddtionsAvailable] && [data respondsToSelector:@selector(base64UrlEncodedString)]) {
return [data performSelector:@selector(base64UrlEncodedString)];
}
else {
return [data base64EncodedStringWithOptions:0];
}
}
+ (NSData *)dataWithBase64UrlEncodedString:(NSString *)urlEncodedString {
if ([self isBase64AddtionsAvailable] && [[NSData class] respondsToSelector:@selector(dataWithBase64UrlEncodedString:)]) {
return [[NSData class] performSelector:@selector(dataWithBase64UrlEncodedString:) withObject:urlEncodedString];
}
else {
return [[NSData alloc] initWithBase64EncodedString:urlEncodedString options:0];
}
}
@end
@implementation JWTBase64Coder (JWTStringCoder__Protocol)
- (NSString *)stringWithData:(NSData *)data {
return [self.class base64UrlEncodedStringWithData:data];
}
- (NSData *)dataWithString:(NSString *)string {
return [self.class dataWithBase64UrlEncodedString:string];
}
@end
@implementation JWTStringCoder__For__Encoding
+ (instancetype)utf8Encoding {
JWTStringCoder__For__Encoding *coding = [self new];
coding.stringEncoding = NSUTF8StringEncoding;
return coding;
}
@end
@implementation JWTStringCoder__For__Encoding (JWTStringCoder__Protocol)
- (NSString *)stringWithData:(NSData *)data {
return [[NSString alloc] initWithData:data encoding:self.stringEncoding];
}
- (NSData *)dataWithString:(NSString *)string {
return [string dataUsingEncoding:self.stringEncoding];
}
@end