Skip to content

Autres exemples

WARNING

Ces exemples ont été écrits avec une ancienne version du SDK, cette page est en cours d'actualisation.

Web : Exemple complet

Un projet de démonstration est disponible : https://github.com/seald/sdk-web-chat-demo/.

Le projet est un simple chat, fait avec React et Firebase.

Le répertoire contient 2 branches :

  • master qui contient le chat normal, sans chiffrement
  • encrypted qui chiffre tous les messages avec le Seald SDK et protège les identités avec le plugin @seald-io/sdk-plugin-ssks-password

Vous pouvez comparer les deux, pour voir comment le Seald SDK a été ajouté, à l'adresse https://github.com/seald/sdk-web-chat-demo/compare/encrypted

React-native : Exemple minimal

Un projet de démonstration est disponible : https://github.com/seald/sdk-react-native-demo.

Le projet est une démonstration minimale, ne contenant pas d'interface utilisateur. Il s'agit simplement d'un bouton permettant d'exécuter une fonction de démonstration.

Cette fonction de test va :

  • Créer une instance du SDK, sdk1, avec le plugin SSKS Password, créer une identité, et la sauvegarder.
  • Créer une deuxième instance du SDK, sdk2, similaire à la première, avec une deuxième identité.
  • Le SDK sdk1 crée une session d'échange chiffrée partagée avec sdk2.
  • sdk1 chiffre un message pour les membres de la session. sdk2 déchiffre le message.
  • sdk2 chiffre une réponse pour les membres de la session. sdk1 déchiffre le message.
  • Créer une instance du SDK, sdk3, et récupérer l'identité créée par sdk1.
  • sdk3 se reconnecte à la session de chiffrement créée précédemment, et vérifie qu'il peut déchiffrer les messages.

Exemple rapide

Si vous voulez juste vous faire une idée de comment on peut utiliser le Seald SDK, voici un snippet :

js
import SealdSDK from '@seald-io/sdk'
import SealdSDKPluginSSKSPassword from '@seald-io/sdk-plugin-ssks-password'

const appId = '00000000-0000-1000-a000-7ea300000000' // Le Seald appID de mon app
const apiURL = 'https://api.staging-0.seald.io/' // L'URL du serveur d'API à utiliser
const keyStorageURL = 'https://ssks.staging-0.seald.io/' // L'URL du serveur de stockage d'identités à utiliser
const myUserId = 'My-User-ID-in-my-app' // L'ID de l'utilisateur actuel dans mon app

const seald = SealdSDK({ appId, apiURL, plugins: [SealdSDKPluginSSKSPassword(keyStorageURL)] })
await seald.initialize()

// Si vous créez un compte pour la première fois
const password = 'SuperSecretPassword' // Le mot de passe de l'utilisateur. Sera utilisé pour chiffrer leurs clés d'identité
const signupJWT = 'json-web-token-for-signup' // Calculé par votre serveur
const { sealdId: mySealdId } = await seald.initiateIdentity({ signupJWT }) // Créer son identité Seald
await seald.ssksPassword.saveIdentity({ userId: myUserId, password }) // Sauvegarder l'identité Seald, chiffrée par le mot de passe, sur le serveur SSKS

// Si vous récupérez un compte déjà créé
const password_ = 'SuperSecretPassword' // Le mot de passe de l'utilisateur. Sera utilisé pour déchiffrer leurs clés d'identité
const { sealdId: retrievedSealdId } = await seald.ssksPassword.retrieveIdentity({ userId: myUserId, password: password_ })

// Chiffrer / déchiffrer des fichiers
const encryptedFile = await seald.encryptFile('Secret file content', 'SecretFile.txt', { sealdIds: [otherUserSealdId] })
const decryptedFile = await seald.decryptFile(encryptedFile)

// Utiliser des sessions
const session = await seald.createEncryptionSession({ sealdIds: [otherUserSealdId] })
const encryptedMessage = await session.encryptMessage('SecretMessage')
const decryptedMessage = await session.decryptMessage(encryptedMessage)
await session.addRecipients({ sealdIds: [anotherUserSealdId] })
await session.revokeRecipients({ sealdIds: [otherUserSealdId] })

const sessionBis = await seald.retrieveEncryptionSession({ encryptedMessage })
const decryptedMessageBis = await sessionBis.decryptMessage(encryptedMessage)
import SealdSDK from '@seald-io/sdk'
import SealdSDKPluginSSKSPassword from '@seald-io/sdk-plugin-ssks-password'

const appId = '00000000-0000-1000-a000-7ea300000000' // Le Seald appID de mon app
const apiURL = 'https://api.staging-0.seald.io/' // L'URL du serveur d'API à utiliser
const keyStorageURL = 'https://ssks.staging-0.seald.io/' // L'URL du serveur de stockage d'identités à utiliser
const myUserId = 'My-User-ID-in-my-app' // L'ID de l'utilisateur actuel dans mon app

const seald = SealdSDK({ appId, apiURL, plugins: [SealdSDKPluginSSKSPassword(keyStorageURL)] })
await seald.initialize()

// Si vous créez un compte pour la première fois
const password = 'SuperSecretPassword' // Le mot de passe de l'utilisateur. Sera utilisé pour chiffrer leurs clés d'identité
const signupJWT = 'json-web-token-for-signup' // Calculé par votre serveur
const { sealdId: mySealdId } = await seald.initiateIdentity({ signupJWT }) // Créer son identité Seald
await seald.ssksPassword.saveIdentity({ userId: myUserId, password }) // Sauvegarder l'identité Seald, chiffrée par le mot de passe, sur le serveur SSKS

// Si vous récupérez un compte déjà créé
const password_ = 'SuperSecretPassword' // Le mot de passe de l'utilisateur. Sera utilisé pour déchiffrer leurs clés d'identité
const { sealdId: retrievedSealdId } = await seald.ssksPassword.retrieveIdentity({ userId: myUserId, password: password_ })

// Chiffrer / déchiffrer des fichiers
const encryptedFile = await seald.encryptFile('Secret file content', 'SecretFile.txt', { sealdIds: [otherUserSealdId] })
const decryptedFile = await seald.decryptFile(encryptedFile)

// Utiliser des sessions
const session = await seald.createEncryptionSession({ sealdIds: [otherUserSealdId] })
const encryptedMessage = await session.encryptMessage('SecretMessage')
const decryptedMessage = await session.decryptMessage(encryptedMessage)
await session.addRecipients({ sealdIds: [anotherUserSealdId] })
await session.revokeRecipients({ sealdIds: [otherUserSealdId] })

const sessionBis = await seald.retrieveEncryptionSession({ encryptedMessage })
const decryptedMessageBis = await sessionBis.decryptMessage(encryptedMessage)