Использование SSLSetEnabledCiphers с AFNetworking для отключения слабых шифров
Я пытаюсь отключить некоторые (слабые) шифры, такие как один DES, один 40-битный DES и т. Д.
Я пытался использовать этот кусок кода изКак установить SSL-шифры при использовании CFSocket / CFStream в Какао? и из сообщения списка рассылкиCFNetwork SSL и длительные задержки блокировки но мне нужен доступ к данным сокета, чтобы получитьCFDataRef
.
Вот код, который я пытался вставить в метод рукопожатия вAFURLConnectionOperation
учебный класс:
- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge (NSURLAuthenticationChallenge *)challenge{
CFReadStreamRef stream = [sock getCFReadStream];
CFDataRef data = CFReadStreamCopyProperty(stream, kCFStreamPropertySocketSSLContext);
// Extract the SSLContextRef from the CFData
SSLContextRef sslContext;
CFDataGetBytes(data, CFRangeMake(0, sizeof(SSLContextRef)), &sslContext);
// Get all enabled ciphers
size_t numCiphers;
SSLGetNumberEnabledCiphers(sslContext,&numCiphers);
SSLCipherSuite ciphers[numCiphers];
SSLGetEnabledCiphers(sslContext,ciphers,&numCiphers);
// Create a new cipher array with only non-DH ciphers, and set it
SSLCipherSuite finalCiphers[numCiphers];
int numFinalCiphers = 0;
for(int i=0; i<numCiphers; i++) {
SSLCipherSuite suite = ciphers[i];
if(!cipherSuiteUsesDH(suite)) {
finalCiphers[numFinalCiphers] = suite;
numFinalCiphers++;
}
}
SSLSetEnabledCiphers(sslContext,finalCiphers,numFinalCiphers);
}
Любая помощь будет принята с благодарностью.
РЕДАКТИРОВАТЬ: К сожалению, это существующий проект, и он все еще использует версию 1 AFNetworking.