Skip to main content

Forsta messaging protocol library

Project description

librelay-python

Signal based Python library for end-to-end crypto with Forsta messaging platform.

Maturity License Change Log Version

About

This is a Python library used to communicate with the Forsta messaging platform. The underlying protocol is based on the Signal end-to-end crypto system. The primary differences surround how provisioning is done and the data payload, which is a custom JSON specification, https://goo.gl/eX7gyC

Installation

Ensure that you are using Python 3.6 or higher and simply install from GitHub:

$ pip3 install librelay

Storage

Librelay needs a backing store for holding crypto material. The default storage backing is fs which will store files in your local file-system under ~/.librelay/storage.

To support multiple instances of librelay on a single computer use relay.storage.setLabel('<something-unique>') to shard your storage into a unique namespace.

Provisioning

PREREQUISITE: To use librelay you must first have a valid Forsta account. You can sign-up for free at https://app.forsta.io/join. Once you have a valid Forsta account you need to provision your librelay based application.

With your Forsta account (e.g. @myusername:myorgname) you can get started with the registerAccount function or the registerDevice function if adding supplemental devices.

import asyncio
import relay

async def main():
    userTag = input("Enter your login (e.g user:org): ")
    validator = await relay.AtlasClient.requestAuthenticationCode(userTag)
    await validator(input("SMS Verification Code: "))
    await relay.registerAccount();
    print("Successfully registered account")

asyncio.get_event_loop().run_until_complete(main())

Ref: https://github.com/ForstaLabs/librelay-python/blob/master/examples/register.py

Message Receiving

Once your application is provisioned you can participate in the messaging platform. The simplest way to get familiar with the platform is to listen for incoming messages and examine the content sent to your application in a debugger. Here is a very simple example of receiving messages.

import asyncio
import relay

async def onMessage(ev):
    print("Got message", ev.data)


async def main():
    msgReceiver = relay.MessageReceiver.factory()
    msgReceiver.addEventListener('message', onMessage)
    await msgReceiver.connect()
    await msgReceiver.closed()

asyncio.get_event_loop().run_until_complete(main())

Ref: https://github.com/ForstaLabs/librelay-python/blob/master/examples/recvmessage.py

Message Sending

import asyncio
import relay


async def main():
    msgSender = relay.MessageSender.factory()
    to = input("To: ")  # Should be tag format. e.g @support:forsta.io
    text = input("Message: ")
    await msgSender.send(to=to, text=text)

asyncio.get_event_loop().run_until_complete(main())

Ref: https://github.com/ForstaLabs/librelay-python/blob/master/examples/sendmessage.py

Cryptography Notice

This distribution includes cryptographic software. The country in which you currently reside may have restrictions on the import, possession, use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check your country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted. See https://www.wassenaar.org/ for more information.

The U.S. Government Department of Commerce, Bureau of Industry and Security (BIS), has classified this software as Export Commodity Control Number (ECCN) 5D002.C.1, which includes information security software using or performing cryptographic functions with asymmetric algorithms. The form and manner of this distribution makes it eligible for export under the License Exception ENC Technology Software Unrestricted (TSU) exception (see the BIS Export Administration Regulations, Section 740.13) for both object code and source code.

License

Licensed under the GPLv3: http://www.gnu.org/licenses/gpl-3.0.html

  • Copyright 2014-2016 Open Whisper Systems
  • Copyright 2017-2019 Forsta Inc.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

librelay-0.10.0.tar.gz (34.5 kB view details)

Uploaded Source

File details

Details for the file librelay-0.10.0.tar.gz.

File metadata

  • Download URL: librelay-0.10.0.tar.gz
  • Upload date:
  • Size: 34.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.39.0 CPython/3.7.5

File hashes

Hashes for librelay-0.10.0.tar.gz
Algorithm Hash digest
SHA256 3b4f6cdf67b7366a16e9d12ee4e4fa771eed7579356dd384434213d03b22214c
MD5 8940b1da1b87f2984c20fb977eea7ded
BLAKE2b-256 f103bf430ea4f8493c13f7cce6a8afdcbce676b086305d4e8bc4c466faa710f3

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page