Note that there are some explanatory texts on larger screens.

plurals
  1. POAdd SSL to iOS Application Sync
    primarykey
    data
    text
    <p>I'm syncing my Mac application with my iPhone application using NSStream and am trying to encrypt the communication with SSL. I've tried to run <code>CFReadStreamSetProperty(readStream, kCFStreamPropertySSLSettings, (CFTypeRef)settings)</code> on the iPhone side and <code>CFWriteStreamSetProperty(writeStream, kCFStreamPropertySSLSettings, (CFTypeRef)settings)</code> on the Mac side when I set up the NSInputStream and NSOutputStream respectively. For the settings dictionary, I'm following the advice of <a href="http://iphonedevelopment.blogspot.com/2010/05/nsstream-tcp-and-ssl.html" rel="nofollow">http://iphonedevelopment.blogspot.com/2010/05/nsstream-tcp-and-ssl.html</a> and ignoring the properties of the certificate. However, encrypting it in this way doesn't seem to work as the transfer does not go through - is there something else I need to do to get this functionality working?</p> <p>Thanks!</p> <p>EDIT: Here's some code:</p> <p>On the Mac:</p> <pre><code>NSOutputStream *outStream; [service getInputStream:nil outputStream:&amp;outStream]; [outStream open]; [outStream setProperty:NSStreamSocketSecurityLevelNegotiatedSSL forKey:NSStreamSocketSecurityLevelKey]; NSDictionary *settings = [[NSDictionary alloc] initWithObjectsAndKeys: [NSNumber numberWithBool:YES], kCFStreamSSLAllowsExpiredCertificates, [NSNumber numberWithBool:YES], kCFStreamSSLAllowsAnyRoot, [NSNumber numberWithBool:NO], kCFStreamSSLValidatesCertificateChain, kCFNull,kCFStreamSSLPeerName, nil]; CFWriteStreamSetProperty((CFWriteStreamRef)outStream, kCFStreamPropertySSLSettings, (CFTypeRef)settings); int bytes = [outStream write:[rawPacket bytes] maxLength:[rawPacket length]]; [outStream close]; </code></pre> <p>On the iPhone:</p> <pre><code>CFReadStreamRef readStream; NSString *filePath = [NSHomeDirectory() stringByAppendingPathComponent:@"file"]; NSOutputStream *fileStream = [NSOutputStream outputStreamToFileAtPath:self.filePath append:NO]; [fileStream open]; CFStreamCreatePairWithSocket(NULL, fd, &amp;readStream, NULL); NSInputStream *networkStream = (NSInputStream *) readStream; CFRelease(readStream); [networkStream setProperty:(id)kCFBooleanTrue forKey:(NSString *)kCFStreamPropertyShouldCloseNativeSocket]; networkStream.delegate = self; [networkStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; [networkStream open]; [self.networkStream setProperty:NSStreamSocketSecurityLevelNegotiatedSSL forKey:NSStreamSocketSecurityLevelKey]; NSDictionary *settings = [[NSDictionary alloc] initWithObjectsAndKeys: [NSNumber numberWithBool:YES], kCFStreamSSLAllowsExpiredCertificates, [NSNumber numberWithBool:YES], kCFStreamSSLAllowsAnyRoot, [NSNumber numberWithBool:NO], kCFStreamSSLValidatesCertificateChain, kCFNull,kCFStreamSSLPeerName, nil]; CFReadStreamSetProperty((CFReadStreamRef)self.networkStream, kCFStreamPropertySSLSettings, (CFTypeRef)settings); </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload