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 chiffrementencrypted
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 avecsdk2
. 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 parsdk1
. 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 :
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)