From bfb2f64b6b8f63695877b5ca86d239a8139c5511 Mon Sep 17 00:00:00 2001 From: Diego Mello Date: Wed, 30 Mar 2022 15:03:21 -0300 Subject: [PATCH 1/3] Fix read certificate from mmkv --- Libraries/Network/RCTHTTPRequestHandler.mm | 12 +++++++----- Libraries/WebSocket/RCTSRWebSocket.m | 12 +++++++----- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/Libraries/Network/RCTHTTPRequestHandler.mm b/Libraries/Network/RCTHTTPRequestHandler.mm index dc3298785a1d..08a388104465 100644 --- a/Libraries/Network/RCTHTTPRequestHandler.mm +++ b/Libraries/Network/RCTHTTPRequestHandler.mm @@ -129,7 +129,7 @@ -(void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticati NSString *host = challenge.protectionSpace.host; // Read the clientSSL info from MMKV - __block NSDictionary *clientSSL; + __block NSString *clientSSL; SecureStorage *secureStorage = [[SecureStorage alloc] init]; // https://github.com/ammarahm-ed/react-native-mmkv-storage/blob/master/src/loader.js#L31 @@ -141,13 +141,15 @@ -(void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticati NSData *cryptKey = [key dataUsingEncoding:NSUTF8StringEncoding]; MMKV *mmkv = [MMKV mmkvWithID:@"default" cryptKey:cryptKey mode:MMKVMultiProcess]; - clientSSL = [mmkv getObjectOfClass:[NSDictionary class] forKey:host]; + clientSSL = [mmkv getStringForKey:host]; + NSData *data = [clientSSL dataUsingEncoding:NSUTF8StringEncoding]; + id dict = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; NSURLCredential *credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]; - if (clientSSL != (id)[NSNull null]) { - NSString *path = [clientSSL objectForKey:@"path"]; - NSString *password = [clientSSL objectForKey:@"password"]; + if (dict != (id)[NSNull null]) { + NSString *path = [dict objectForKey:@"path"]; + NSString *password = [dict objectForKey:@"password"]; credential = [self getUrlCredential:challenge path:path password:password]; } diff --git a/Libraries/WebSocket/RCTSRWebSocket.m b/Libraries/WebSocket/RCTSRWebSocket.m index 7b8931b816ce..dd5ccc0b6f8c 100644 --- a/Libraries/WebSocket/RCTSRWebSocket.m +++ b/Libraries/WebSocket/RCTSRWebSocket.m @@ -551,7 +551,7 @@ - (void)_initializeStreams #endif // Read the clientSSL info from MMKV - __block NSDictionary *clientSSL; + __block NSString *clientSSL; SecureStorage *secureStorage = [[SecureStorage alloc] init]; // https://github.com/ammarahm-ed/react-native-mmkv-storage/blob/master/src/loader.js#L31 @@ -563,11 +563,13 @@ - (void)_initializeStreams NSData *cryptKey = [key dataUsingEncoding:NSUTF8StringEncoding]; MMKV *mmkv = [MMKV mmkvWithID:@"default" cryptKey:cryptKey mode:MMKVMultiProcess]; - clientSSL = [mmkv getObjectOfClass:[NSDictionary class] forKey:host]; + clientSSL = [mmkv getStringForKey:host]; + NSData *data = [clientSSL dataUsingEncoding:NSUTF8StringEncoding]; + id dict = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; - if (clientSSL != (id)[NSNull null]) { - NSString *path = [clientSSL objectForKey:@"path"]; - NSString *password = [clientSSL objectForKey:@"password"]; + if (dict != (id)[NSNull null]) { + NSString *path = [dict objectForKey:@"path"]; + NSString *password = [dict objectForKey:@"password"]; [self setClientSSL:path password:password options:SSLOptions]; } From c33a921be4a6cb1caabfd218bd9410b5560288c0 Mon Sep 17 00:00:00 2001 From: Diego Mello Date: Wed, 30 Mar 2022 15:04:09 -0300 Subject: [PATCH 2/3] Bump RN version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2ddca6605762..867355b74ca3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-native", - "version": "0.64.2", + "version": "0.64.2-rocket", "bin": "./cli.js", "description": "A framework for building native apps using React", "license": "MIT", From b26d63f41f011b8b92a5c1421e1c65a7429f7552 Mon Sep 17 00:00:00 2001 From: Diego Mello Date: Wed, 30 Mar 2022 17:25:43 -0300 Subject: [PATCH 3/3] Fix completions --- Libraries/Network/RCTHTTPRequestHandler.mm | 9 ++++----- Libraries/WebSocket/RCTSRWebSocket.m | 12 ++++++------ 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/Libraries/Network/RCTHTTPRequestHandler.mm b/Libraries/Network/RCTHTTPRequestHandler.mm index 08a388104465..dc8c9f2d0d9c 100644 --- a/Libraries/Network/RCTHTTPRequestHandler.mm +++ b/Libraries/Network/RCTHTTPRequestHandler.mm @@ -139,15 +139,14 @@ -(void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticati return; } + NSURLCredential *credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]; NSData *cryptKey = [key dataUsingEncoding:NSUTF8StringEncoding]; MMKV *mmkv = [MMKV mmkvWithID:@"default" cryptKey:cryptKey mode:MMKVMultiProcess]; clientSSL = [mmkv getStringForKey:host]; - NSData *data = [clientSSL dataUsingEncoding:NSUTF8StringEncoding]; - id dict = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; - - NSURLCredential *credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]; - if (dict != (id)[NSNull null]) { + if ([clientSSL length] != 0) { + NSData *data = [clientSSL dataUsingEncoding:NSUTF8StringEncoding]; + id dict = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; NSString *path = [dict objectForKey:@"path"]; NSString *password = [dict objectForKey:@"password"]; credential = [self getUrlCredential:challenge path:path password:password]; diff --git a/Libraries/WebSocket/RCTSRWebSocket.m b/Libraries/WebSocket/RCTSRWebSocket.m index dd5ccc0b6f8c..11722ddc2b26 100644 --- a/Libraries/WebSocket/RCTSRWebSocket.m +++ b/Libraries/WebSocket/RCTSRWebSocket.m @@ -564,14 +564,14 @@ - (void)_initializeStreams NSData *cryptKey = [key dataUsingEncoding:NSUTF8StringEncoding]; MMKV *mmkv = [MMKV mmkvWithID:@"default" cryptKey:cryptKey mode:MMKVMultiProcess]; clientSSL = [mmkv getStringForKey:host]; - NSData *data = [clientSSL dataUsingEncoding:NSUTF8StringEncoding]; - id dict = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; + if ([clientSSL length] != 0) { + NSData *data = [clientSSL dataUsingEncoding:NSUTF8StringEncoding]; + id dict = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; - if (dict != (id)[NSNull null]) { - NSString *path = [dict objectForKey:@"path"]; - NSString *password = [dict objectForKey:@"password"]; + NSString *path = [dict objectForKey:@"path"]; + NSString *password = [dict objectForKey:@"password"]; - [self setClientSSL:path password:password options:SSLOptions]; + [self setClientSSL:path password:password options:SSLOptions]; } [_outputStream setProperty:SSLOptions