Skip to content

CONIKS Java Library v0.4.0

Pre-release
Pre-release
Compare
Choose a tag to compare
@masomel masomel released this 05 Sep 19:44
· 72 commits to master since this release
v0.4.0

The main goals of this release are to set the basis for transitioning the Java reference implementation to a more developer-friendly, usable Java library. This requires substantial code reorganization into individually reusable packages, adding unit tests, and stricter adherence to the CONIKS specification given in the original paper.

As first steps, we renamed this repo to coniks-java, and switched to Maven builds. We also refactored the cryptographic operations and utility functions into individual packages, and added unit tests to these packages. Additionally, we implemented cryptographic commitments, which are used by the Merkle tree to protect the privacy of user data during lookups.

Addressed issues: #33, #34, #35, and #40

In this Release

Renaming coniks-ref-implementation to coniks-java

We decided to rename this repo to coniks-java to signal the transition to a more developer-friendly and usable library. As we begin developing CONIKS libraries for other languages, we seek to make our implementations more cohesive and compatible, so we believe this new name is more suitable for a Java library and helps establish a clear naming scheme for the different CONIKS implementations.

Maven builds

To improve the maintainability and usability of the library, we move to Maven builds. Using Maven facilitates dependency management, testing, and packaging, and we hope this will improve developers' ability to import and use any (or all) coniks-java packages.

Restructuring the code base

We designed our Golang implementation (coniks-go) to be more modular and usable from the start; to make the Golang and Java CONIKS APIs compatible, we plan to follow the same code base structure in both implementations (see #32). Transitioning to coniks-go's code structure in coniks-java will take some time as existing features are migrated to their respective individual packages, so we have decided to reorganize the coniks-java code base incrementally.

Important: As we restructure the code base, we will deprecate the parts of the API we have migrated, so please make sure to update any code that may be using the deprecated APIs.

Unit Tests

To improve the maintainability and developer-friendliness of coniks-java, we have started adding unit tests. These unit tests do not cover any existing code that will be deprecated and replaced by the new individual packages, they only cover new packages. We measure our test coverage using coveralls.

crypto and util packages

Since the crypto and util packages are the most fundamental packages of a CONIKS implementation, these are the first two packages we refactored and covered by unit tests.

Cryptographic commitments

As part of our effort to adhere to the CONIKS specification more closely, we implemented a basic cryptographic commitment scheme that is designed to protect the privacy of users' data during key lookups. This scheme will be used in the upcoming Merkle tree package.