3 Stimmen

SSL oder TLS Sicherheit auf NSStream setzen

Ich habe einen Netzwerkcode, der NSStream verwendet, und ich möchte Sicherheit hinzufügen. Ich habe versucht, die Dokumentation zu diesem Thema anzuwenden. Ich habe die folgenden Zeilen zu meinem funktionierenden Netzwerkcode hinzugefügt:

[input setValue:NSStreamSocketSecurityLevelNegotiatedSSL forKey:NSStreamSocketSecurityLevelKey];
[output setValue:NSStreamSocketSecurityLevelNegotiatedSSL forKey:NSStreamSocketSecurityLevelKey];

Der Initialisierungscode ist:

-(Connection*) initWithInput:(NSInputStream*) input Output:(NSOutputStream*) output Delegate: (id ) delegate{
self = [super init];
if (self) {

    a_delegate=delegate;

    //set security
    [input setValue:NSStreamSocketSecurityLevelNegotiatedSSL forKey:NSStreamSocketSecurityLevelKey];
    [output setValue:NSStreamSocketSecurityLevelNegotiatedSSL forKey:NSStreamSocketSecurityLevelKey];

    a_input=input;
    a_output=output;

    //Set delegate to self
    [a_input setDelegate:self];
    [a_output setDelegate:self];

    //Schedule in run loop
    [a_input scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
    [a_output scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];

    //open streams
    [a_input open];
    [a_output open];

}
return self;
}

Aber wenn mein Connection-Objekt initialisiert wird, erhalte ich eine Fehlermeldung und das Netzwerk funktioniert nicht:

[<__NSCFInputStream 0x60800028e970> setValue:forUndefinedKey:]:
this class is not key value coding-compliant for the key kCFStreamPropertySocketSecurityLevel.

Mache ich etwas falsch?

4voto

impact27 Punkte 517

Ok, ich habe das Problem gefunden. Ich sollte setProperty:forKey: anstelle von setValue:forKey: verwenden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X