sxweetlollipop2912 / minimal-signal-protocol-go

E2EE Signal protocol X3DH and Double Ratchet implementation

Home Page:https://deluxe-scabiosa-998.notion.site/CS434-Signal-Protocol-Reimplementation-76c713270368472b823eaa75c8620112

Repository from Github https://github.comsxweetlollipop2912/minimal-signal-protocol-goRepository from Github https://github.comsxweetlollipop2912/minimal-signal-protocol-go

minimal-signal-protocol-go

How to run

Requirements:

  • golang v1.22
  1. Run redis on Docker:
docker run -d -p 6379:6379 redis/redis-stack-server:latest
  1. Run the server:
go run cmd/server/main.go
  1. Run the client with a username (like alice):
go run cmd/client/main.go alice

If the username does not exist yet, new keys will be created for this user and stored in secrets/.env.<username> .

Note when reading source code

  • Alice is the message sender
  • Bob is the message receiver
  • crypto/ contains the cryptographic utilities
  • protocol/ contains the Signal protocol implementation