The page covers two things:

  1. The libcontrac library is an implementation of the crypto portion of the Apple/Google Exposure Notification API (once upn a time referred to as the Contract Tracing API). It uses OpenSSL but has otherwise fairly light dependencies, and so should be compatible across a range of platforms.
  2. The harbour-contrac app is a version of Germany's Corona-Warn-App for Sailfish OS. It builds on the libcontrac code with additional Bluetooth and server upload/download support.


For more info about the library see the library's API documentation and the official draft specs from Apple/Google. There's are also a post on my blog that gives a short and more accessible overview of the specification.

The source code for libcontrac is available under a GPLv2 licence from my home git server, but also mirrored on github.


The harbour-contrac app for is a full reimplementation of Germany's Corona-Warn-App. The official apps only run on Android and iOS, whereas harbour-contrac has been built to run on Sailfish OS. It's available for use by anyone running Sailfish OS, although it's still only a beta version at this stage and connects to test servers (running the official test server code) rather than the official production servers.

I'm hoping it will be possible to use it with the official production servers in the near future.

For more info or to install it on your phone see the app's OpenRepos page.

The source code is available under a GPLv2 licence from github.

Contrac main page
Contrac TeleTAN input page
Contrac cover page


10 most recent items

16 Sep 2020 : Contrac 0.6.2 released #
I've just pushed the latest changes to github and made Contrac 0.6.2 available from OpenRepos. This update adds new Chinese translations and fixes a bug that prevented the update button from being used daily (a borked calculation meant you could only update every two days, or thereabouts).
14 Sep 2020 : Contrac 0.6.1 released #
After a busy weekend of work, Contrac 0.6.1 is now available from OpenRepos and with code on github. The latest improvements include Chinese translations (thanks to the sterling work of dashinfantry) a homescreen cover, attenuation value configuration, and risk configuration downloaded from the Corona-Warn-App servers to ensure the risk evaluations mirror the official app.
6 Sep 2020 : Contrac 0.5.1 released #
The latest version of Contrac now analyses the keys downloaded from the server against thoe collected using Bluetooth and provides an up-to-date risk assessment for the user. This is a pretty big step, because it means the app now has all the pieces needed to perform the full exposure notification cycle (diagnosis upload, key download, exposure analysis). There are still plenty of potential improvements of course, the main one being that it needs to be plugged in to the official severs rather than my test server, but hopefully that'll come soon. In the meantime, get it from OpenRepos and github.
1 Sep 2020 : Contrac 0.4.1 released #
Version 0.4.1 of Contac, an exposure notification app compatible with Germany's Covid-Warn-App is now available from OpenRepos and github. This latest version adds a bunch of improvements behind-the-scenes, including the encrypted metadata component of the BLE beacons and an improved data aggregation algorithm.
24 Aug 2020 : Contrac 0.3.1 alpha now available #
The new version of Contrac is now available from OpenRepos and github. This is a small, but hopefully useful, update. The daemon now has persistent state, so if it's set to scan/advertise for beacons it will remain in that state even after a restart.
22 Aug 2020 : Contrac 0.2.1 alpha now available #
Another Contrac update. It now has a page to allow users to enter an officially-provided TeleTAN so that they can upload their diagnosis keys from the app to the Corona-Warn-App servers. This latest version is available from OpenRepos and as always the source is also available from github.
9 Aug 2020 : Contrac 0.1.1 alpha now available #
The second release of Contrac is now available from OpenRepos. This version allows uploads to and downloads from the official Corona-Warn-App servers, although currently it's only set up to interact with the test servers.
7 Jul 2020 : Contrac 0.0.1 alpha now available #
The first release of Contrac, my Corona-Warn-App-compatible Exposure Notification app for Sailfish OS, is now available from OpenRepos. This is very much an alpha version, intended just for testing. It'll send and receive the GApple BLE beacons and store the results, but there's no capability to interact with the servers just yet.


  • Contrac Contrac
    Version 0.6.2 (16 Sep 2020) for SailfishOS.
    A (nearly) full reimplementation of Germany's Corona-Warn-App for Sailfish OS. It supports BLE beacon send/receive, diagnosis key upload/downlaod and exposure checking. More info...
    Download: binary, source, screenshot.
  • libcontrac libcontrac
    Version 0.01 (22 Apr 2020) for libc.
    An implementation of the crypto portion of the Apple/Google Exposure Notification API. It uses OpenSSL but has otherwise fairly light dependencies for use across different platforms. More info...
    Download: source.


Uncover Disqus comments