Setting the encryption secret
Les sessions cryptées de bout en bout sont créées à l'aide des API du serveur (voir Activation du cryptage à l'aide de l'option API REST).
Avant que le client ne publie ou ne s'abonne, appelez la fonction Session.setEncryptionSecret() méthode :
session.setEncryptionSecret("encryption-secret");
session.connect(TOKEN);
Un secret valide est une chaîne de 8 à 256 caractères. Vous pouvez modifier le secret en appelant la fonction Session.setEncryptionSecret() à nouveau.
La définition d'un secret non valide entraînera un InvalidEncryptionSecret erreur.
Events and errors
Les événements et les erreurs sont essentiels pour gérer le comportement du chiffrement piloté par l'utilisateur. Le chiffrement de bout en bout utilise le modèle du secret partagé : tous les participants à la session sont censés utiliser le même secret pour chiffrer leurs données et déchiffrer celles des autres.
Si un client tente de se connecter à une session chiffrée de bout en bout sans définir de secret de chiffrement, l'option SessionListener.onError() est appelé avec un code d'erreur égal à 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 utilisateur tente de publier dans une session chiffrée de bout en bout sans avoir spécifié de secret de chiffrement, l'appel de la fonction Session.publish() aboutit à la méthode PublisherListener.onError() appelé avec une erreur dont le code est ErrorCode.EncryptionSecretMissing. Pour une meilleure expérience utilisateur, l'application doit valider le secret fourni par l'utilisateur avant d'appeler la fonction Session.publish() méthode :
// 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 abonné n'est pas en mesure de décoder les médias d'un flux en raison d'un secret de cryptage erroné, la fonction SubscriberListener.onError() est appelé avec une erreur dont le code est ErrorCode.EncryptionSecretMismatch. Il est important d'indiquer à l'utilisateur que le média n'est pas reçu en raison d'une erreur de cryptage et non d'une défaillance de la connexion ou d'un problème audio/vidéo :
// 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) ;
Si l'application tente de s'abonner sans définir de secret de chiffrement, la fonction Subscriber.onError() est appelé avec une erreur dont le code est fixé à ErrorCode.EncryptionSecretMissing.
Si un abonné rencontre une erreur interne lors du décryptage d'un paquet, la fonction Subscriber.onError() est appelé avec une erreur dont le code est fixé à ErrorCode.DecryptionInternalError.