Merge branch 'master' of github.com:limelight-stream/limelight-ios

This commit is contained in:
Cameron Gutman
2014-10-18 22:44:02 -04:00
6 changed files with 36 additions and 11 deletions
+1
View File
@@ -12,5 +12,6 @@
- (void) generateKeyPairUsingSSl; - (void) generateKeyPairUsingSSl;
- (NSString*) getUniqueID; - (NSString*) getUniqueID;
- (NSData*) readCertFromFile;
@end @end
+7
View File
@@ -17,6 +17,13 @@
} }
- (NSData*) readCertFromFile {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *certFile = [documentsDirectory stringByAppendingPathComponent:@"client.crt"];
return [NSData dataWithContentsOfFile:certFile];
}
- (void) generateKeyPairUsingSSl { - (void) generateKeyPairUsingSSl {
NSLog(@"Generating Certificate: "); NSLog(@"Generating Certificate: ");
CertKeyPair certKeyPair = generateCertKeyPair(); CertKeyPair certKeyPair = generateCertKeyPair();
+3 -1
View File
@@ -9,6 +9,8 @@
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
@interface HttpManager : NSObject @interface HttpManager : NSObject
- (id) initWithHost:(NSString*) host uniqueId:(NSString*) uniqueId deviceName:(NSString*) deviceName;
- (NSString*) generatePIN; - (NSString*) generatePIN;
- (NSString*) saltPIN:(NSString*)PIN; - (NSData*) saltPIN:(NSString*)PIN;
- (NSURL*) newPairRequestWithSalt:(NSData*)salt andCert:(NSData*)cert;
@end @end
+12 -6
View File
@@ -28,15 +28,21 @@ static const NSString* PORT = @"47984";
return self; return self;
} }
- (NSURL*) newPairRequestWithSalt:(NSString*)salt andCert:(NSString*)cert { - (NSURL*) newPairRequestWithSalt:(NSData*)salt andCert:(NSData*)cert {
NSURL* url = [[NSURL alloc] initWithString: NSLog(@"host: %@ \nport: %@ \nuniqueID: %@ \ndeviceName: %@ \nsalt: %@ \ncert: %@", _host, PORT, _uniqueId, _deviceName, salt, cert);
[NSString stringWithFormat:@"http://%@:%@/pair?uniqueid=%@&devicename=%@&updateState=1&phrase=getservercert&salt=%@&clientcert=%@", NSString* urlString = [[NSString stringWithFormat:@"%@/pair?uniqueid=%@&devicename=%@&updateState=1&phrase=getservercert&salt=%@&clientcert=%@", _baseURL, _uniqueId, _deviceName, [self bytesToHex:salt], [self bytesToHex:cert]] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
_host, PORT, _uniqueId, _deviceName, salt, cert]]; NSURL* url = [[NSURL alloc] initWithString:urlString];
NSLog(@"pair url: %@", url);
return url; return url;
} }
- (void) initiatePairing { - (NSString*) bytesToHex:(NSData*)data {
const unsigned char* bytes = [data bytes];
NSMutableString *hex = [[NSMutableString alloc] init];
for (int i = 0; i < [data length]; i++) {
[hex appendFormat:@"%02X" , bytes[i]];
}
return hex;
} }
- (NSString*) generatePIN { - (NSString*) generatePIN {
+1 -1
View File
@@ -9,7 +9,7 @@
#import <UIKit/UIKit.h> #import <UIKit/UIKit.h>
#import "MDNSManager.h" #import "MDNSManager.h"
@interface MainFrameViewController : UIViewController <UIPickerViewDataSource, UIPickerViewDelegate, MDNSCallback> @interface MainFrameViewController : UIViewController <UIPickerViewDataSource, UIPickerViewDelegate, MDNSCallback, NSURLConnectionDelegate>
@property (strong, nonatomic) IBOutlet UIPickerView *HostPicker; @property (strong, nonatomic) IBOutlet UIPickerView *HostPicker;
- (IBAction)StreamButton:(UIButton *)sender; - (IBAction)StreamButton:(UIButton *)sender;
- (IBAction)PairButton:(UIButton *)sender; - (IBAction)PairButton:(UIButton *)sender;
+12 -3
View File
@@ -88,9 +88,18 @@ MDNSManager* mDNSManager;
mDNSManager = [[MDNSManager alloc] initWithCallback:self]; mDNSManager = [[MDNSManager alloc] initWithCallback:self];
[mDNSManager searchForHosts]; [mDNSManager searchForHosts];
CryptoManager* cryptMan = [[CryptoManager alloc] init]; CryptoManager* cryptMan = [[CryptoManager alloc] init];
[cryptMan getUniqueID]; NSString* uniqueId = [cryptMan getUniqueID];
HttpManager* hMan = [[HttpManager alloc] init]; [cryptMan generateKeyPairUsingSSl];
[hMan saltPIN:[hMan generatePIN]]; NSData* cert = [cryptMan readCertFromFile];
HttpManager* hMan = [[HttpManager alloc] initWithHost:hostAddr uniqueId:uniqueId deviceName:@"roth"];
NSString* PIN = [hMan generatePIN];
NSData* saltedPIN = [hMan saltPIN:PIN];
NSLog(@"PIN: %@, saltedPIN: %@", PIN, saltedPIN);
NSURL* pairUrl = [hMan newPairRequestWithSalt:saltedPIN andCert:cert];
NSURLRequest* pairRequest = [[NSURLRequest alloc] initWithURL:pairUrl];
NSLog(@"making pair request: %@", [pairRequest description]);
NSData* pairData = [NSURLConnection sendSynchronousRequest:pairRequest returningResponse:nil error:nil];
NSLog(@"Pair response: %@", [pairData description]);
} }
- (void)updateHosts:(NSArray *)hosts { - (void)updateHosts:(NSArray *)hosts {