Digital Signing through Smart-ID, our open source gift.

27 February 2020 - Becca Melhuish

Here at Citizen OS, we’ve been busy writing two free, open source sets of code in JavaScript, which act as interfaces for using Estonia’s Smart-ID and Mobile-ID services. They’re yours if you want them!

The Estonian ID-card inserted into a port in a laptop.

The Estonian ID Card for online authentication and digital signatures

One of the backbones of Estonia’s advanced system of e-governance — e-ID with digital signatures — is set for some behind-the-scenes changes this coming November.

While most Estonian residents and e-residents will continue to happily use their ID card, Mobile-ID or Smart-ID for online services as per usual this Autumn, changes to software support provided for these e-ID initiatives will be shaking things up a little at the back-end.

In a nutshell, the providers of the Estonian government’s e-ID services will be making changes to the software support provided to those using their Smart-ID and Mobile-ID products.

Their DigiDoc Service, which allows for the storage, sharing, reading, and therefore verification of digital signatures, will no longer be provided as part of the new software supporting their Smart-ID and Mobile-ID services.

This means that businesses and organisations wanting to continue to include digital signing capabilities in their online services will need to either develop their own code, or pay for additional code development services.

So, being such enthusiastic supporters of online voting, e-democracy and participation here at Citizen OS, we decided to help. We have written two free, open source sets of code in JavaScript — the most popular programming language — which act as interfaces for using the Smart-ID and Mobile-ID services.

You can access the open source codes on GitHub for Smart-ID and for Mobile-ID.

Any JavaScript developers wanting to use these codes will still need to have to have a contract with SK Solutions for the use of the Mobile-ID/Smart-ID services, but won’t suffer any additional development costs for the code. Both code libraries can also be used for the verification of ID card signature certificates, for users who are digitally signing with the use of their physical ID card and card reader.

And because online security is our top priority, our new codes include all the security features of the DigiDoc service as default, while several of these were previously optional. Our JavaScript code even includes some security features not included in the PHP and Java code examples provided by SK Solutions themselves.

We’ll be using both these codes ourselves too, to ensure that Estonian users of our Citizen OS platform can still use their ID card, Mobile-ID or Smart-ID to log in and vote or sign petitions using their digital signatures.

This code comes at a particularly important time for Estonian e-governance, as following the November 2018 ruling that the legal standing of a Smart-ID digital signature is now equal to that of a handwritten signature, new software for digital signing was launched by the Estonian government this month. This new software allows citizens to digitally sign even more quickly and easily using the Smart-ID service.

Digital signing also has a big role to play in Estonia’s innovative and unique e-residency initiative, which allows non-Estonian nationals to set up a business in Estonia, and manage it from anywhere in the world — entirely online.

Ilmar Türk, our trusty Software Developer who brought these two new codes to life, says:

“We’re proud to play a small part in making e-governance and online participation possible, and hope that these small code libraries will give a little extra boost to the future of e-democracy and citizen involvement, both within Estonia and the wider world.”

“And a big thank you to our friend Andri Möll from Rahvaalgatus, who created the brilliant code library Undersign.js. It allows our users to sign their decisions with eIDAS-compatible digital signatures and later download them as shareable ASiC-E containers — a huge help to us in our own code development.”

If any other countries are feeling inspired to create their own Smart-ID based local government initiative for citizen involvement, or a citizens’ initiative portal for public participation and proposals like Estonia’s Rahvaalgatus platform, then just drop us a line at — we’re up for it!