threema-gateway 0.4.1

A client library for the Threema Gateway.
Documentation

Rust SDK for Threema Gateway

Travis CI Crates.io Version Crates.io Downloads Rust

This is a work-in-progress implementation of a Threema Gateway client library in Rust.

Not everything is implemented yet, but sending simple and end-to-end encrypted messages works.

Docs

Features

Sending

  • Send simple messages
  • Send end-to-end encrypted messages

Lookup

  • Look up ID by phone number
  • Look up ID by e-mail
  • Look up ID by phone number hash
  • Look up ID by e-mail hash
  • Look up capabilities by ID
  • Look up public key by ID
  • Look up remaining credits

Receiving

  • Verify MAC of incoming message
  • Decrypt incoming message

Files

  • Download files
  • Upload files

Usage

Take a look at the examples in the examples/ directory to see how they're implemented.

Lookup public key:

cargo run --example lookup_pubkey -- <our_id> <secret> <their_id>

Send simple transport-encrypted encrypted message:

cargo run --example send_simple -- <from> id <to-id> <secret> <text>...
cargo run --example send_simple -- <from> email <to-email> <secret> <text>...
cargo run --example send_simple -- <from> phone <to-phone> <secret> <text>...

Send e2e encrypted message:

cargo run --example send_e2e -- <from> <to> <secret> <private-key> <text>...

Look up Threema ID by phone:

cargo run --example lookup_id -- by_phone <from> <secret> 41791234567

Look up Threema ID by email hash:

cargo run --example lookup_id -- by_email_hash <from> <secret> 1ea093239cc5f0e1b6ec81b866265b921f26dc4033025410063309f4d1a8ee2c

License

Licensed under either of

Contributing

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.