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() Methode wieder.
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 das Ereignis Session.Error mit einem Fehlercode gesendet, der auf ErrorCode.EncryptionSecretMissing:
private void Session_Error(object sender, ErrorEventArgs error)
{
if (Error.ErrorCode == ErrorCode.EncryptionSecretMissing) {
// Notify the user that they cannot join the session
}
}
Session.Error += Session_Error;
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() Funktion führt zu der Publisher.Error Ereignis, das mit einem Fehler gesendet wird, bei dem der Code auf ErrorCode.EncryptionInternalError. Für eine optimale Benutzerfreundlichkeit sollte die Anwendung ein vom Benutzer eingegebenes Geheimnis validieren, bevor sie die Session.Publish() Methode:
private void Publisher_Error(object sender, ErrorEventArgs error)
{
if (Error.ErrorCode == ErrorCode.EncryptionInternalError) {
// The application should communicate that the secret was not set.
}
}
Publisher.Error += Publisher_Error;
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 Subscriber.Error Ereignis wird mit einem Fehler gesendet, dessen Code auf ErrorCode.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:
private void Subscriber_Error(object sender, ErrorEventArgs error)
{
if (Error.ErrorCode == ErrorCode.EncryptionSecretMismatch) {
// Activate a UI element communicating that there's been an encryption secret mismatch.
}
}
Subscriber.Error += Subscriber_Error;
Session.Subscribe(Subscriber);
Wenn ein Teilnehmer bei der Entschlüsselung eines Pakets auf einen internen Fehler stößt, wird der Subscriber.Error Ereignis wird mit einem Fehler gesendet, dessen Code auf ErrorCode.DecryptionInternalError.