Реализация безопасности в GCDAsyncSocket

Я пытаюсь реализовать безопасность в GCDAsyncSocket, используя самозаверяющий сертификат. После вызова startTLS метод didReceiveTrust не вызывается.

SecIdentityRef identityRef = nil;
NSArray *certs = [[NSArray alloc] initWithObjects:(__bridge id)identityRef, nil];
NSMutableDictionary *settings = [NSMutableDictionary dictionaryWithCapacity:3];

[settings setObject:[NSNumber numberWithInteger:0] forKey:GCDAsyncSocketSSLProtocolVersionMax];
[settings setObject:[NSNumber numberWithBool:YES] forKey:GCDAsyncSocketManuallyEvaluateTrust];
[settings setObject:certs forKey:GCDAsyncSocketSSLCertificates];

person Nipun    schedule 26.01.2016    source источник


Ответы (1)


Вы не показываете, где используется settings.

В вашем вызове startTLS вы должны установить GCDAsyncSocketManuallyEvaluateTrust в @YES:

[self.socket startTLS:@{GCDAsyncSocketManuallyEvaluateTrust: @YES}];

Соответствующая документация: http://cocoadocs.org/docsets/CocoaAsyncSocket/7.4.1/Classes/GCDAsyncSocket.html#//api/name/startTLS:

person Andrew Bruce    schedule 03.05.2016