We are happy to present to you our new Java library on GitHub that introduces our open source integration library to Android developers and anyone else who works in a Java environment. It simplifies the access and interaction with public and permissioned REMChain nodes.

The library was developed thanks to the efforts of the Remme tech community, particularly one of the hackathon teams which proposed a OAuth use case and struggled due to the lack of such a library.

How Remme PKI (d) protocol can be used

For authentication in different types of applications using REMChain and generated certificates/keys;

For generating keys for end-to-end encryption of calls/messages in chats etc. and decryption using public keys of this account, retrieving them from REMChain;

For signing documents, files, photos/videos, etc. and ensuring their secure transfer between devices when the recipient automatically verifies the signatures, retrieving the keys from REMChain;

For options, based on current protocol features.

What you need to know before you start

To be comfortable working with this library, the developer must:

Know how to work with a Java Development Kit version 8 or higher;

Understand what the Functional Interface is;

Have basic experience with WebSockets, the JSON-RPC 2.0 protocol, protocol buffers;

If you go deeper, to work with custom keys, you will need basic knowledge of cryptography, ECDSA keys, EdDSA keys, RSA keys and certificates based on the RSA key. Understand how these keys and certificates are formed, how they are built etc.

How to integrate Remme protocol using Java library

If you are curious about distributed PKI, and wish to test our solution, go on with the next steps:

Get the full address of the node and the address of the web socket to subscribe to events; Understand what type of keys you will work with; Create an account; Create a Remme Client and use the functionality that you need for your tasks.

For comfortable work with Java library, we can advise the Apache commons group libraries as the most popular and proven. To work with cryptography we can recommend the Bouncy Castle provider and their library.

We hope our Java library release will help you start working with Remme PKI (d) protocol and search use cases for our TLS/SSL certificates in the Android environment and enterprise software. We are an open source project and this is the tech community contribution, so feel free to actively share your feedback, propose any improvement ideas and PRs on GitHub, and join our tech community on Gitter chat.

Behind the scenes

Since the library was developed by a member of our tech community, we’ve asked to share feedback on their contribution to our open source project. This can be useful for those who are thinking about the development of another library for REMChain since these challenges are mirrored for each of them.

While developing the current library, contributors have faced the difficulties of cryptography, namely making the Java library work just like other Remme libraries, in particular, ECDSA keys.

They needed:

To figure out how to get a compressed public key and how to convert it back;

To understand the concepts of DER and ASN1 encoding;

To go deep into signatures using the ECDSA private key;

To compare and make it work in the same way as it does in other Remme libraries.

Here are some useful articles that the team used during the development process:

We are always happy to see valuable contributions from our tech community. We hope the next release will describe your idea that makes Remme better and more comfortable for everyone who believes in the internet without the hierarchy of Certificate Authorities.