Crate libwhisper [−] [src]
Angel Whisper
The reference implementation of Angel Whisper Wire Protocol under
development. As of today, this is the only documentation of protocol
available. This is refactoring of my first
attempt to write this
thing. However my first attempt was too broad, so I've made a decision to
separate llsd
module into its own crate to allow the creation of
implementation in other languages.
Angel Whisper is my attempt to build light and fast wire protocol that is suitable in IoT world and the just regular world. However, no promises. This library meant to handle encryption as well and decoding/encoding of frames. This library doesn't handle anything else like request routing, RPC, etc. The plan is to build a framework on top of this.
This library in no way production or even development ready. Meaning everything including wire format is subject to change. The goal is to have at least three languages talking to each other using this protocol by the end of 2017.
Usage
TODO: Write usage instructions here
Development
Right now I'm using taskwarrior for task management, which is obviously
won't scale for more than one developer. I use @andoriyu
handle pretty
much everywhere you can find me either on gitter, IRC, //!twitter, whatever
and ask for a task or tell me how much this library suck.
Questions I would be asking
Do I need any help?
Yes.
Is it secure?
Maybe, maybe not. I'm not a cryptographer. However, this protocol is based
on CurveZMQ. I didn't write my own implementation of cryptographic
primitives. This library relies on libsodium
.
Why does it use secp256k1 at the beginning instead of Curve25519?
Because I had a dream where I built ethereum wallet with p2p direct messaging. Therefore, I ended up using secp256k1 public keys for identity. First attempt was using Curve25519. After some discussions, I've decided to switch back to Curve25519.
What other languages it supports?
Right now — only rust. In a very close feature — C via rust library. Next step is Ruby via c library. After that pure Kotlin implementation.
Modules
errors |
This module contain error type returned by this library. |
frame |
This is how frames look on the wire. This module doesn't handle Frame generation — generation is done in session module. |
session |
This module handles Session (singular) management. The session is responsible for Frame generation and encryption. |