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 Session.setEncryptionSecret() Methode:

session.setEncryptionSecret("encryption-secret");
session.connect(TOKEN);

Ein gültiges Geheimnis ist eine Zeichenfolge zwischen 8 und 256 Zeichen. Sie können das Geheimnis ändern, indem Sie die Funktion Session.setEncryptionSecret() Funktion 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 ein Client versucht, eine Verbindung zu einer Ende-zu-Ende-verschlüsselten Sitzung herzustellen, ohne ein Verschlüsselungsgeheimnis zu setzen, wird der SessionListener.onError() Ereignisbehandlungsroutine wird mit einem Fehlercode aufgerufen, der auf ErrorCode.EncryptionSecretMissing:

// Implementation of SessionListener.onError():
@Override
public void onError(Session session, OpentokError opentokError) {
  if (opentokError.getErrorCode() == ErrorCode.EncryptionSecretMissing) {
    // Notify the user that they cannot join the session
  }
}

session.connect(token); 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 Session.publish() Methode führt zu der PublisherListener.onError() Ereignis-Handler, der mit einem Fehler aufgerufen wird, dessen Code auf ErrorCode.EncryptionSecretMissing gesetzt ist. Um die Benutzerfreundlichkeit zu erhöhen, sollte die Anwendung ein vom Benutzer eingegebenes Geheimnis überprüfen, bevor sie die Session.publish() Methode:

// Implementation of PublisherListener.onError():
@Override
public void onError(PublisherKit publisher, OpentokError opentokError) {
  if (opentokError.getErrorCode() == ErrorCode.EncryptionInternalError) {
    // The application should communicate that the secret was not set.
  }
}
session.publish(publisher);

Wenn ein Teilnehmer aufgrund eines falschen Verschlüsselungsgeheimnisses nicht in der Lage ist, die Medien eines Streams zu entschlüsseln, wird der SubscriberListener.onError() Ereignisbehandlungsroutine wird mit einem Fehler aufgerufen, dessen Code auf ErrorCode gesetzt ist.EncryptionSecretMismatch. Es ist wichtig, dem Benutzer mitzuteilen, dass die Medien aufgrund eines Verschlüsselungsfehlers und nicht aufgrund eines Verbindungsfehlers oder eines Audio-/Videoproblems nicht empfangen werden können:

// Implementation of Subscriber.onError():
@Override
public void onError(SubscriberKit publisher, OpentokError opentokError) {
  if (opentokError.getErrorCode() == ErrorCode.EncryptionSecretMismatch) {
    // Activate a UI element communicating that there's been an encryption secret mismatch.
  }
}

session.subscribe(subscriber); Wenn die Anwendung versucht, sich zu abonnieren, ohne ein Verschlüsselungsgeheimnis zu setzen, wird die Subscriber.onError() Ereignisbehandlungsroutine wird mit einem Fehler aufgerufen, dessen Code auf ErrorCode.EncryptionSecretMissing.

Wenn ein Teilnehmer bei der Entschlüsselung eines Pakets auf einen internen Fehler stößt, wird der Subscriber.onError() Ereignisbehandlungsroutine wird mit einem Fehler aufgerufen, dessen Code auf ErrorCode.DecryptionInternalError.