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). Pour qu'un client React Native rejoigne une session chiffrée de bout en bout, définissez la propriété encryptionSecret prop de la OTSession de la composante :

<OTSession
  applicationId="api-key"
  sessionId="session-id"
  token="token"
  encryptionSecret="initial-encryption-secret"
>
  <OTPublisher />
  <OTSubscriber />
</OTSession>

Un secret valide est une chaîne de 8 à 256 caractères.

Vous pouvez modifier le secret en réglant le paramètre encryptionSecret à une propriété de l'état React et de changer sa valeur :

<OTSession
  applicationId="api-key"
  sessionId="session-id"
  token="token"
  encryptionSecret={this.state.encryptionSecret}>
>
  <OTPublisher />
  <OTSubscriber />
</OTSession>

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.

Les OTSubscriber error() est invoqué lorsque l'abonné n'est pas en mesure de décoder les médias d'un flux en raison d'un secret de cryptage non adapté (ou non défini) :

<OTSubscriber
eventHandlers={{
    error: event => {
    // Show UI notification.
    },
}}
>

Les OTSession error() est invoqué si le client tente de se connecter à une session chiffrée de bout en bout qui a été initialisée avec un secret de chiffrement non valide (ou sans spécifier de secret de chiffrement). Un secret valide est une chaîne de 8 à 256 caractères. Pour une meilleure expérience utilisateur, l'application doit détecter un secret invalide fourni par l'utilisateur avant d'activer la fonction OTSession encryptionSecret prop. Dans l'exemple suivant, une session est initialisée avec un secret vide (et donc invalide), ce qui provoque une erreur lors de la tentative de connexion :

<OTSession
  applicationId="api-key"
  sessionId="session-id"
  token="token"
  encryptionSecret=""
  eventHanders={{
    error: event => {
      // An error event is dispatched if you set an invalid encryption secret
    }
  }}
>
  <OTPublisher />
  <OTSubscriber />
</OTSession>