올바른 방법입니다. (소켓 연결 후 속성을 설정하는)이 문서화되지 않은 동안이 작업은 내 Monal xmpp 클라이언트에서 직접 작성한 코드이며 Apple에서 응용 프로그램 저장소에 어떤 문제도 부여하지 않았습니다. 연결이 열리고 당신이 NSStreamEventOpenCompleted을 얻고 startTLS에이 클라이언트에서 호스트로 전송되었습니다] 명령되면
NSInputStream *iStream;
NSOutputStream *oStream;
CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)server, port, &iStream, &oStream);
[iStream open];
[oStream open];
: forKey을 :
NSDictionary *settings = [ [NSDictionary alloc ]
initWithObjectsAndKeys:
[NSNumber numberWithBool:YES], @"kCFStreamSSLAllowsExpiredCertificates",
[NSNumber numberWithBool:YES], @"kCFStreamSSLAllowsExpiredRoots",
[NSNumber numberWithBool:YES], @"kCFStreamSSLAllowsAnyRoot",
[NSNumber numberWithBool:NO], @"kCFStreamSSLValidatesCertificateChain",
[NSNull null],@"kCFStreamSSLPeerName",
@"kCFStreamSocketSecurityLevelNegotiatedSSL",
@"kCFStreamSSLLevel",
nil ];
CFReadStreamSetProperty((CFReadStreamRef)iStream,
@"kCFStreamPropertySSLSettings", (CFTypeRef)settings);
CFWriteStreamSetProperty((CFWriteStreamRef)oStream,
@"kCFStreamPropertySSLSettings", (CFTypeRef)settings);
는 setProperty는 전화 해봤 적절한 보안 상수 이미 열려있는 NSSocket에? 기본 SecureTransport 코드가 암호화되지 않은 초기 연결에서 TLS/SSL로 전환하는 것을 지원한다고 생각합니다. –
그래서 이것을 알아 냈습니다. CFsocket을 사용하고 NSsockets를 사용하지 말고 문서에서 그렇게하지 않는다고 말하면 SSL을 적용해야합니다. 보안 연결을 올바르게 협상합니다. – anurodhp
"NSsockets"와 같은 것이 없습니다 – user102008