Settings

Theme

Show HN: Node.js port of WhisperSystem's libsignal

github.com

88 points by tooker · 16 comments

Reader

3 threads
TheAceOfHearts

One of the nice things about JS versions of stuff is being able to run it everywhere. With that being said, I'd be skeptical of using this since it doesn't appear to have any tests at all. How do we know it's actually compatible with libsignal?

  • mschulze

    > One of the nice things about JS versions of stuff is being able to run it everywhere.

    To my knowledge node does not run on SPARC processors (because V8 doesn't).

  • egeozcan

    This has a native part written in c and only runs on node.js v8 and up, according to the package.json.

    • qznc

      So it is "bindings", but not a "port"?

    • tookerOP

      The C components are just a few emscripten compiled curve25519-donna and ed25519 functions for elliptic curve routines. It comes directly from the web library without any alteration. Honestly I was surprised at how well it works and the performance isn't too shabby. I did several investigations of replacing it with libsodium and others but the the emscripten builds have been pretty reliable for us..

  • jszymborski

    The original version is written in Java, which sorta invented "run-it-everywhere"

    • dabockster

      Meh, I personally prefer "complie-it-everywhere" since you gain all the speed benefits of running it native.

      • justinjlynn

        Well, to be fair, with Java you are compiling bytecode everywhere before and while you run. So, you're not wrong.

micaksica

How much is this based on the libsignal-protocol-JavaScript code? Where does it differ from it? Where are the tests to test protocol steps?

I actually love seeing things like this, but it’d be nice if there was some more documentation on the project. Crypto libraries generally aren’t the kind of thing you want to pick up when they’re new unless they are both heavily audited and developed by those with backgrounds in crypto work.

  • tookerOP

    It's ported directly from the javascript lib so most of the interfaces are exactly the same (async differences in some cases and a couple storage interface differences, see: <https://github.com/ForstaLabs/libsignal-node/issues/1>). The commit history is intact as well. Haven't had enough time to port tests but she works.. We use it for various bots in our signal based message platform.

sandGorgon

What disturbs me about this port is that they did not use Typescript. I would have expected that they would use a strongly typesafe language in the ideal case.

  • badminton1

    Many checks still need to be done in runtime. Bindings to C code can cause the program to exit if you pass incorrect input.

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection