signall-protocol-js
v3.3.0
Published
Complete Signal Protocol implementation in pure JavaScript for Node.js
Maintainers
Readme
🗐 Signal Protocol JS
Signal Protocol JS is a complete, pure JavaScript (Node.js) implementation of the Signal Protocol.
It provides end-to-end encryption, forward secrecy, and secure session management — similar to what is used by Signal and WhatsApp.
✨ Features
| 🔑 Keys & Identity | 🤝 Key Exchange | 🔄 Ratchet | 🛡️ Security | 💾 Storage | 📦 Backup | 🚀 Pure JS | |--------------------|-----------------|------------|-------------|------------|-----------|------------| | Identity Keys | X3DH (Triple DH)| Double Ratchet | Forward Secrecy | SessionStore | Backup & Restore | No native deps |
📦 Installation
| Package Manager | Command |
|-----------------|---------|
| npm | npm install signall-protocol-js |
| Yarn | yarn add signall-protocol-js |
🚀 Quick Start
| Step | Code |
|------|------|
| Initialize a client | import SignalProtocolClient from 'signal-protocol-js';\n\nconst alice = new SignalProtocolClient('[email protected]');\nawait alice.initialize();\n\nconsole.log('Alice Fingerprint:', alice.sessionStore.getIdentityKey().getFingerprint()); |
| Messaging between Alice & Bob | const bob = new SignalProtocolClient('[email protected]');\nawait bob.initialize();\n\n// Alice gets Bob's key bundle\nconst bobKeyBundle = bob.getKeyBundle();\n\n// Alice starts the conversation\nconst initialMessage = await alice.startConversation('[email protected]', bobKeyBundle);\n\n// Bob accepts\nawait bob.acceptConversation('[email protected]', initialMessage);\n\n// Encrypted message\nconst encrypted = await alice.encryptMessage('[email protected]', 'Hello Bob!');\nconst decrypted = await bob.decryptMessage('[email protected]', encrypted);\n\nconsole.log('Bob received:', decrypted); |
| Session Management | // Regenerate PreKeys\nalice.regeneratePreKeys(50);\n\n// Regenerate Signed PreKey\nalice.regenerateSignedPreKey();\n\n// Show stats\nconsole.log(alice.getStatistics()); |
💾 Project Structure
| Folder/File | Description |
|-------------|-------------|
| keys/ | IdentityKey, PreKey, SignedPreKey |
| protocol/ | X3DH, Double Ratchet |
| session/ | Session handling and storage |
| SignalProtocol.js | Main client implementation |
| demo.js | Full working demo with Alice & Bob |
📊 Demo
Run the included demo to test encrypted communication between two clients:
