Advertisement
Guest User

Untitled

a guest
Oct 6th, 2015
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.80 KB | None | 0 0
  1. @try
  2. {
  3.  
  4. NSString *certificatePath = [[NSBundle mainBundle]pathForResource:@"server" ofType:@"p12"];
  5. NSData *certicateData = [NSData dataWithContentsOfFile:certificatePath];
  6.  
  7. CFArrayRef keyRef;
  8. OSStatus status =SecPKCS12Import((__bridge CFDataRef)certicateData,(__bridge CFDictionaryRef)@{(__bridge NSString*)kSecImportExportPassphrase :@"*********"}, &keyRef);
  9.  
  10. if(status!=noErr)
  11. {
  12. NSLog(@"PKCS12 import error %i",(int)status);
  13. return;
  14. }
  15. CFDictionaryRef identityDict=CFArrayGetValueAtIndex(keyRef, 0);
  16. SecIdentityRef identityRef=(SecIdentityRef)CFDictionaryGetValue(identityDict, kSecImportItemIdentity);
  17.  
  18. SecCertificateRef certificate;
  19. status = SecIdentityCopyCertificate(identityRef, &certificate);
  20.  
  21. if (status != noErr)
  22. {
  23. NSLog(@"sec identity copy failed: %i", (int)status);
  24. return;
  25. }
  26.  
  27.  
  28. CFReadStreamRef readStream;
  29. CFWriteStreamRef writeStream;
  30.  
  31. CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)@"localhost", 8080, &readStream, &writeStream);
  32.  
  33. NSArray *certificates = [NSArray arrayWithObjects:(__bridge id)identityRef, (__bridge id)certificate, nil];
  34.  
  35. CFReadStreamSetProperty(readStream, kCFStreamPropertyShouldCloseNativeSocket, kCFBooleanTrue);
  36. CFWriteStreamSetProperty(writeStream, kCFStreamPropertyShouldCloseNativeSocket, kCFBooleanTrue);
  37.  
  38. CFReadStreamSetProperty(readStream, kCFStreamPropertySocketSecurityLevel, kCFStreamSocketSecurityLevelNegotiatedSSL);
  39. CFWriteStreamSetProperty(writeStream, kCFStreamPropertySocketSecurityLevel, kCFStreamSocketSecurityLevelNegotiatedSSL);
  40.  
  41.  
  42. NSDictionary *settings = @{(id)kCFStreamSSLCertificates:certificates,
  43. (id)kCFStreamSSLIsServer:@YES};
  44.  
  45.  
  46. CFReadStreamSetProperty(readStream, kCFStreamPropertySSLSettings, (__bridge CFDictionaryRef)(settings));
  47. CFWriteStreamSetProperty(writeStream, kCFStreamPropertySSLSettings, (__bridge CFDictionaryRef)(settings));
  48.  
  49.  
  50. self.inpuStream=(__bridge NSInputStream*)readStream;
  51. self.outpuStream=(__bridge NSOutputStream*)writeStream;
  52.  
  53. [self.inpuStream setDelegate:self];
  54. [self.outpuStream setDelegate:self];
  55.  
  56. [self.inpuStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
  57. [self.outpuStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
  58.  
  59.  
  60. CFReadStreamOpen(readStream);
  61. CFWriteStreamOpen(writeStream);
  62.  
  63. if([self.outpuStream streamStatus] == NSStreamStatusOpen)
  64. NSLog(@"Open (%@)",@"opened");
  65. else
  66. NSLog(@"Open (%@)",@"not opened");
  67.  
  68.  
  69.  
  70. }@catch (NSException *exception)
  71. {
  72. NSLog(@"Error (%@)",exception);
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement