Session Desktop - Onion routing based messenger
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
Go to file
sachaaaaa a7f999aeb1
Merge pull request #391 from sachaaaaa/show_seed_errors
Report mnemonic errors instead of silent failure
6 years ago
.github linting 6 years ago
.tx
_locales Add a toggle option for typing indicators; use short ttl for them 6 years ago
app Allow start-prod and start-prod-multi so launch in production (mainnet) mode 6 years ago
build
components
config Use different seed nodes for development vs production and strip 2 characters from pubkey on testnet 6 years ago
fixtures
fonts
images Add a button to paste pubkey from clipboard if valid 6 years ago
js Merge pull request #391 from sachaaaaa/show_seed_errors 6 years ago
libloki Merge pull request #391 from sachaaaaa/show_seed_errors 6 years ago
libtextsecure Better document magic numbers 6 years ago
mnemonic_languages languages json 6 years ago
mockup_servers
protos send "unreachable" ping to allow half-p2p 6 years ago
stylesheets Merge pull request #391 from sachaaaaa/show_seed_errors 6 years ago
test Fix tests 6 years ago
ts Add a button to paste pubkey from clipboard if valid 6 years ago
.aptly.conf
.editorconfig
.eslintignore Merge signal-1.24.0 7 years ago
.eslintrc.js Add eslint rule to enforce curlys, run eslint --fix to automatically apply this rule and add swapfiles to gitignore 6 years ago
.gitattributes
.gitignore Ignore ctags file 6 years ago
.gitlab-ci.yml
.nvmrc
.prettierignore Merge signal-1.24.0 7 years ago
.prettierrc.js
.travis.yml Remove travis windows. 7 years ago
.yarnclean
CONTRIBUTING.md linting 6 years ago
Gruntfile.js
LICENSE
LOKI-NOTES.md
README.md Update README.md 6 years ago
about.html
about_preload.js
appveyor.yml Skip `lint-deps` on appveyor, which triggers a failed build 7 years ago
aptly.sh
background.html Report mnemonic error in a toast instead of silently fail 6 years ago
bower.json
debug_log.html
debug_log_preload.js
dev-app-update.yml.sample
find_broken_perms.sh
fix_broken_perms.sh
index.html
main.js Add a toggle option for typing indicators; use short ttl for them 6 years ago
metrics.html
metrics_app.js
package.json Bump version number 6 years ago
password.html
password_preload.js Fix password error 6 years ago
permissions_popup.html
permissions_popup_preload.js
preload.js Merge pull request #371 from BeaudanBrown/testnet 6 years ago
prepare_beta_build.js
prepare_import_build.js
settings.html Add a toggle option for typing indicators; use short ttl for them 6 years ago
settings_preload.js Add a toggle option for typing indicators; use short ttl for them 6 years ago
styleguide.config.js
travis.sh
tsconfig.json
tslint.json
yarn.lock Clearnet p2p with https (no verification yet) 6 years ago

README.md

Loki Messenger

Build Status

Loki Messenger allows for truly decentralized, end to end, and private encrypted chats. Loki Messenger is built to handle both online and fully Asynchronous offline messages. Loki messenger implements the Signal protocol for message encryption. Our Client interface is a fork of Signal Messenger. All communication that passes through Loki messenger is routed through Lokinet.

Summary

Loki messenger integrates directly with Loki Service Nodes, which are a set of distributed, decentralized and Sybil resistant nodes. Service Nodes act as both federated servers which store messages offline, and a set of nodes which allow for onion routing functionality obfuscating users IP Addresses. For a full understanding of how Loki messenger works, read the Loki whitepaper.

Online Messages

If Alice and Bob are both online they can simply resolve each others public keys, to introduction sets, this functionality is handled by interfacing with Lokinet. With the appropriate introduction sets Alice and Bob can create a path and using onion routing pass messages through the Loki network without giving away personally identifiable information like their IP address.

Offline messages

Offline messaging uses Swarms, given any users public key the user can resolve a public key to a specific grouping of Service Nodes (AKA Swarm) each user in Loki Messenger belongs to a Swarm. When routing a message offline the user selects a Service node in the destination users Swarm, when the user comes online they query any node in their Swarm, if the Swarm is holding any messages for the user they disseminate those messages to the user.

Swarm Messaging

Spam protections for Loki Messenger are based on a Proof of Work which is attached to any message that exceeds a default size or Time To Live, this process is discussed further in the Loki whitepaper.

Want to Contribute? Found a Bug or Have a feature request?

Please search for any existing issues that describe your bugs in order to avoid duplicate submissions. Submissions can be made by making a pull request to our development branch, if you don't know where to start contributing , try reading the Github issues page for ideas.

Build instruction

Build instructions can be found in CONTRIBUTING.md.

License

Copyright 2018- Current, Loki Foundation Copyright 2014-2018, Open Whisper Systems Licensed under the GPLv3: http://www.gnu.org/licenses/gpl-3.0.html