Setting the encryption secret

End-to-End-verschlüsselte Sitzungen werden mit Hilfe von Server-APIs erstellt (siehe Aktivieren der Verschlüsselung mit dem REST-API).

Bevor der Client publiziert oder abonniert, rufen Sie die [OTSession setEncryptionSecret:error:] Methode:

OTError *error = nil;
[_session setEncryptionSecret:@"encryption-secret" error:&error];
if (error)
{
    // Notify the user.
}

Ein gültiges Geheimnis ist eine Zeichenfolge zwischen 8 und 256 Zeichen. Sie können das Geheimnis ändern, indem Sie die Funktion Session.setEncryptionSecret() Methode wieder.

Das Setzen eines ungültigen Geheimnisses führt zu einer InvalidEncryptionSecret Fehler.

Events and errors

Ereignisse und Fehler sind wesentlich für die Verwaltung des benutzergesteuerten Verschlüsselungsverhaltens. Bei der Ende-zu-Ende-Verschlüsselung wird das Modell des gemeinsamen Geheimnisses verwendet: Es wird erwartet, dass alle Teilnehmer der Sitzung dasselbe Geheimnis verwenden, um ihre Medien zu verschlüsseln und die der anderen zu entschlüsseln.

Wenn der Client versucht, eine Verbindung zu einer Ende-zu-Ende-verschlüsselten Sitzung herzustellen und das Verschlüsselungsgeheimnis vor dem Verbindungsaufbau nicht festgelegt hat, wird ein Fehler mit dem Code EncryptionSecretMissing:

OTError *error = nil;
[_session connectWithToken:kToken error:&error];
if (error && (error.code == EncryptionSecretMissing))
{
    // Notify the user of the error connecting.
}

Wenn ein Benutzer versucht, in einer Ende-zu-Ende-verschlüsselten Sitzung zu veröffentlichen, ohne ein Verschlüsselungsgeheimnis angegeben zu haben, wird der Aufruf der [OTSession publish:error:] Methode führt zu einem Fehler, dessen Code auf OTPublisherEncryptionSecretMissing. Um die Benutzerfreundlichkeit zu erhöhen, sollte die Anwendung ein vom Benutzer eingegebenes Geheimnis vor der Veröffentlichung validieren:

OTError *error = nil;
[_session publish:_publisher error:&error];
if (error && (error.code == OTPublisherEncryptionSecretMissing))
{
    // The application should communicate that the secret was not set.
}

Wenn ein Teilnehmer aufgrund eines falschen Verschlüsselungsgeheimnisses nicht in der Lage ist, die Medien eines Streams zu entschlüsseln, wird der [OTSubscriberKitDelegate subscriber:didFailWithError:] Nachricht wird mit einem Fehler gesendet, dessen Code auf ErrorCode.EncryptionSecretMismatch gesetzt ist. Es ist wichtig, dem Benutzer mitzuteilen, dass die Medien aufgrund einer Verschlüsselungsfehlanpassung und nicht aufgrund eines Verbindungsfehlers oder eines Audio-/Videoproblems nicht empfangen werden:

// Implementation of [OTSubscriberKitDelegate subscriber:didFailWithError:]:
- (void)subscriber:(OTSubscriberKit*)subscriber
  didFailWithError:(OTError*)error
{
    if (error && (error.code == EncryptionSecretMismatch)) {
    // Activate a UI element communicating that there's been an encryption secret mismatch.
    }
}

[_session subscribe:_subscriber error:&error];
// ...

Wenn ein Teilnehmer bei der Entschlüsselung eines Pakets auf einen internen Fehler stößt, wird der [OTSubscriberKitDelegate subscriber:didFailWithError:] wird eine Nachricht mit einem Fehler gesendet, dessen Code auf OTSubscriberDecryptionInternalError.