mirror of
https://github.com/moonlight-stream/moonlight-ios.git
synced 2025-07-23 12:44:19 +00:00
75 lines
2.3 KiB
Objective-C
75 lines
2.3 KiB
Objective-C
//
|
|
// HttpManager.m
|
|
// Limelight
|
|
//
|
|
// Created by Diego Waxemberg on 10/16/14.
|
|
// Copyright (c) 2014 Limelight Stream. All rights reserved.
|
|
//
|
|
|
|
#import "HttpManager.h"
|
|
|
|
@implementation HttpManager {
|
|
NSString* _baseURL;
|
|
NSString* _host;
|
|
NSString* _uniqueId;
|
|
NSString* _deviceName;
|
|
}
|
|
|
|
static const NSString* PORT = @"47984";
|
|
|
|
|
|
- (id) initWithHost:(NSString*) host uniqueId:(NSString*) uniqueId deviceName:(NSString*) deviceName {
|
|
self = [super init];
|
|
_host = host;
|
|
_uniqueId = uniqueId;
|
|
_deviceName = deviceName;
|
|
_baseURL = [[NSString stringWithFormat:@"https://%@:%@", host, PORT]
|
|
stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
|
|
return self;
|
|
}
|
|
|
|
- (NSURL*) newPairRequestWithSalt:(NSData*)salt andCert:(NSData*)cert {
|
|
NSLog(@"host: %@ \nport: %@ \nuniqueID: %@ \ndeviceName: %@ \nsalt: %@ \ncert: %@", _host, PORT, _uniqueId, _deviceName, salt, cert);
|
|
NSString* urlString = [[NSString stringWithFormat:@"%@/pair?uniqueid=%@&devicename=%@&updateState=1&phrase=getservercert&salt=%@&clientcert=%@", _baseURL, _uniqueId, _deviceName, [self bytesToHex:salt], [self bytesToHex:cert]] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
|
|
NSURL* url = [[NSURL alloc] initWithString:urlString];
|
|
NSLog(@"pair url: %@", url);
|
|
return url;
|
|
}
|
|
|
|
- (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* PIN = [NSString stringWithFormat:@"%d%d%d%d",
|
|
arc4random() % 10, arc4random() % 10,
|
|
arc4random() % 10, arc4random() % 10];
|
|
NSLog(@"PIN: %@", PIN);
|
|
return PIN;
|
|
}
|
|
|
|
- (NSData*) saltPIN:(NSString*)PIN {
|
|
NSMutableData* saltedPIN = [[NSMutableData alloc] initWithCapacity:20];
|
|
[saltedPIN appendData:[self randomBytes:16]];
|
|
[saltedPIN appendBytes:[PIN UTF8String] length:4];
|
|
|
|
NSLog(@"Salted PIN: %@", [saltedPIN description]);
|
|
|
|
return saltedPIN;
|
|
}
|
|
|
|
- (NSData*) randomBytes:(NSInteger)length {
|
|
char* bytes = malloc(length);
|
|
arc4random_buf(bytes, length);
|
|
NSData* randomData = [NSData dataWithBytes:bytes length:length];
|
|
free(bytes);
|
|
return randomData;
|
|
}
|
|
|
|
@end
|