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() función de nuevo.
Si se introduce un secreto no válido, se producirá un error 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 establecer un secreto de cifrado, el SessionListener.onError() con un código de error igual a 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 abonado no puede descodificar los medios de un flujo debido a un secreto de cifrado incorrecto, el SubscriberListener.onError() 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() con un error cuyo código es ErrorCode.EncryptionSecretMissing.
Si un abonado encuentra un error interno al descifrar un paquete, el Subscriber.onError() con un error cuyo código es ErrorCode.DecryptionInternalError.