Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Build Status Coverage Status


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.

Golang 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

For usage instructions, see the documentation in their respective packages: CONIKS-server, a simple command-line client, and the registration-proxy.


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.

API Documentation

Current Core Developers

Releases of coniks-go will be signed with one of the following GPG keys: