CONIKS is a key management system that provides transparency and privacy for end-user public keys. CONIKS protects end-to-end encrypted communications against malicious or compromised communication providers and surveillance by storing users' encryption keys in tamper-evident and publicly auditable key directories on the server side. This allows messaging clients to verify the identity of users automatically, and prevents malicious/compromised servers from hijacking secure communications without getting caught.
This repository provides a Golang implementation of the CONIKS system. The implementation consists of a library, described in the following section, a standalone CONIKS-server and -client, and a registration proxy using this library.
The packages in this library implement the various components of the CONIKS system and may be imported individually.
application: CONIKS application-layer library.
cli: CONIKS command-line tools (registration bots, key server, and test client).
crypto: Cryptographic algorithms and operations
merkletree: Merkle prefix tree and related data structures
utils: Utility functions
protocol: CONIKS protocols implementation/library
storage: Hooks for persistent storage backend (currently unused)
You need to have Golang version 1.9 or higher installed. If Golang is set up correctly, you can simply run:
go get github.com/coniks-sys/coniks-go/...
Please keep in mind that this CONIKS library is under active development. The repository may contain experimental features that aren't fully tested. We recommend using a tagged release.
Current Core Developers
Releases of coniks-go will be signed with one of the following GPG keys:
- Arlo Breault <email@example.com>
- Ismail Khoffi <Ismail.Khoffi@gmail.com>
- Marcela Melara <firstname.lastname@example.org>
- Vu Quoc Huy <email@example.com>