Setting the encryption secret

Las sesiones cifradas de extremo a extremo se crean mediante las API del servidor (véase Activación del cifrado mediante la función API REST).

Antes de que el cliente publique o se suscriba, llame a la función Session.SetEncryptionSecret() método:

Session.SetEncryptionSecret("encryption-secret");
Session.Connect(TOKEN);

Un secreto válido es una cadena de entre 8 y 256 caracteres. Puede cambiar el secreto llamando a la función Session.SetEncryptionSecret() método de nuevo.

Events and errors

Los eventos y errores son esenciales para gestionar el comportamiento del cifrado dirigido por el usuario. El cifrado de extremo a extremo utiliza el modelo de secreto compartido: se espera que todos los participantes en la sesión utilicen el mismo secreto para cifrar sus medios y descifrar los de los demás.

Si un cliente intenta conectarse a una sesión cifrada de extremo a extremo sin establecer un secreto de cifrado, se envía el evento Session.Error con un código de error establecido en 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);

Si un usuario intenta publicar en una sesión cifrada de extremo a extremo sin haber especificado un secreto de cifrado, al llamar a la función Session.Publish() da como resultado la función Publisher.Error que se envía con un error cuyo código es ErrorCode.EncryptionInternalError. Para obtener la mejor experiencia de usuario, la aplicación debe validar un secreto proporcionado por el usuario antes de llamar a la función Session.Publish() método:

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);

Si un abonado no puede descodificar los medios de un flujo debido a un secreto de cifrado incorrecto, el Subscriber.Error con un error cuyo código es ErrorCode.EncryptionSecretMismatch. Es importante comunicar al usuario que los medios no se están recibiendo debido a un desajuste de cifrado y no a un fallo de conexión o a un problema de audio/vídeo:

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);

Si un abonado encuentra un error interno al descifrar un paquete, el Subscriber.Error con un error cuyo código es ErrorCode.DecryptionInternalError.