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 el 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);
Una clave válida es una cadena de entre 8 y 256 caracteres. Puedes cambiar la clave llamando a la función Session.setEncryptionSecret() función de nuevo.
Si se establece un secreto no válido, se producirá un InvalidEncryptionSecret error.
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 haber configurado un secreto de cifrado, el SessionListener.onError() El controlador de eventos se invoca con un código de error establecido en 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);
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 el método PublisherListener.onError() con un error cuyo código es ErrorCode.EncryptionSecretMissing. 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:
// 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);
Si un suscriptor no puede descodificar el contenido multimedia de una transmisión debido a una clave de cifrado incorrecta, el SubscriberListener.onError() El controlador de eventos se activa 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:
// 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(suscriptor);
Si la aplicación intenta suscribirse sin establecer un secreto de cifrado, la aplicación Subscriber.onError() El controlador de eventos se activa con un error cuyo código está establecido en ErrorCode.EncryptionSecretMissing.
Si un abonado encuentra un error interno al descifrar un paquete, el Subscriber.onError() El controlador de eventos se activa con un error cuyo código está establecido en ErrorCode.DecryptionInternalError.