https://github.com/ajayos/libsignal
https://github.com/ajayos/libsignal
Last synced: about 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/ajayos/libsignal
- Owner: Ajayos
- License: gpl-3.0
- Created: 2023-04-27T18:44:24.000Z (about 2 years ago)
- Default Branch: master
- Last Pushed: 2024-01-17T09:12:16.000Z (over 1 year ago)
- Last Synced: 2025-02-15T07:35:56.221Z (2 months ago)
- Language: JavaScript
- Size: 41 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
libsignal-node
========
Signal protocol implementation for Node.js based on
[libsignal-protocol-javascript](https://github.com/WhisperSystems/libsignal-protocol-javascript).[](https://www.npmjs.com/package/libsignal)
[](https://github.com/ForstaLabs/libsignal-node)Overview
--------
A ratcheting forward secrecy protocol that works in synchronous and
asynchronous messaging environments.PreKeys
--------
This protocol uses a concept called 'PreKeys'. A PreKey is an ECPublicKey and
an associated unique ID which are stored together by a server. PreKeys can also
be signed.At install time, clients generate a single signed PreKey, as well as a large
list of unsigned PreKeys, and transmit all of them to the server.Sessions
--------
Signal Protocol is session-oriented. Clients establish a "session," which is
then used for all subsequent encrypt/decrypt operations. There is no need to
ever tear down a session once one has been established.Sessions are established in one of two ways:
1. PreKeyBundles. A client that wishes to send a message to a recipient can
establish a session by retrieving a PreKeyBundle for that recipient from the
server.
2. PreKeySignalMessages. A client can receive a PreKeySignalMessage from a
recipient and use it to establish a session.State
--------
An established session encapsulates a lot of state between two clients. That
state is maintained in durable records which need to be kept for the life of
the session.State is kept in the following places:
* Identity State. Clients will need to maintain the state of their own identity
key pair, as well as identity keys received from other clients.
* PreKey State. Clients will need to maintain the state of their generated
PreKeys.
* Signed PreKey States. Clients will need to maintain the state of their signed
PreKeys.
* Session State. Clients will need to maintain the state of the sessions they
have established.License
--------
Licensed under the GPLv3: http://www.gnu.org/licenses/gpl-3.0.html* Copyright 2015-2016 Open Whisper Systems
* Copyright 2017-2018 Forsta Inc