Metadata-Version: 2.1
Name: pyxart
Version: 0.2.1
Summary: Python implementation of Asynchronous Ratchet Trees
Home-page: https://github.com/PranayAnchuri/pyxart/
License: MIT
Author: Pranay Anchuri
Author-email: pranay@xmtp.com
Requires-Python: >=3.7,<4.0
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Requires-Dist: XEdDSA (>=0.6,<0.7)
Requires-Dist: art (>=5.7,<6.0)
Requires-Dist: cmd2 (>=2.4.2,<3.0.0)
Requires-Dist: cryptography (>=37.0.4,<38.0.0)
Requires-Dist: google-api-python-client (>=2.45,<3.0)
Requires-Dist: grpcio (>=1.48.1,<2.0.0)
Requires-Dist: grpcio-reflection (>=1.44,<2.0)
Requires-Dist: grpcio-tools (>=1.44,<2.0)
Requires-Dist: protobuf (>=3.20,<4.0)
Requires-Dist: pynacl (>=1.5,<2.0)
Requires-Dist: pytest (>=7.1,<8.0)
Requires-Dist: rich (>=12.5.1,<13.0.0)
Description-Content-Type: text/markdown

# pyxart
Python implementation of Asynchronous Ratchet Trees

# Setup

## Install (conda + pip)

```
conda create --name <venv name> python=3.10
pip install .
```
## gRPC and protobuf

```
python -m grpc_tools.protoc -I src/pyxart/protobuf --python_out=. --grpc_python_out=. src/pyxart/protobuf/*
```

## start server

```
python demo_server.py
```

## start client

```
python demo_client.py <client_name>
```

## Orchestration

Create four shells A, B, C, and D

In A,
```
python demo_server.py Alice
register
```

In B

```
python demo_client.py Bob
register
```

In C

```
python demo_client.py Charlie
register
```

In D
```
python demo_client.py Dave
register
```

In B


```
create_group charlie dave
```

In C, D

```
get_my_groups
```

In B

```
send_message <group_name_from_previous_output> <plain text message>
```
In C, D

```
get_messages <group_name>
```

# Demo

The following screenshot shows a demo of a grpc server and four clients.

![](https://github.com/PranayAnchuri/pyxart/blob/main/demo.gif)



# references

- https://research.facebook.com/publications/on-ends-to-ends-encryption-asynchronous-group-messaging-with-strong-security-guarantees/

