Vaccert is a cryptography-based vaccine certification app, built with React Native. It works in exactly the same way as the EU Digital COVID Certificate and the NHS COVID Pass, but is faster, has a more modern and accessible UI, provides verification capabilities in the same app, and is completely open-source. The one Vaccert app can be used by citizens to prove their vaccination status and verify those of others, as well as by NHS staff to issue and sign vaccination certificates. It also provides a simple and easy-to-use interface for managing staff private keys.
When a person is vaccinated, a member of NHS staff will open the Vaccert app and create a new certificate. The person's name, date of birth, and NHS number will be entered, along with details of the vaccination. The certificate will then be signed using a private key stored only on the member of staff's device, and a QR code will be generated for the person to scan, importing the certificate onto their device where it will be saved.
If the person is later asked for proof of vaccination, for example when travelling abroad, they will open the Vaccert app and show their QR code. The person requesting proof will also open the Vaccert app and press the "Verify a Vaccert" button. When they scan the person's QR code, their device will retrieve the corresponding public key from the online database, and use this to verify the certificate's signature. If this process is successful, the Vaccert app will show that the certificate is valid.
- Create a new Firebase project and add a web app to it
- Store the credentials in
.env
as described inkeystore.ts
. - The credentials also need to be accessible from the admin console, so they must also be stored in
admin/.env
as described in the admin console'sApp.tsx
. - Enable Realtime Database and email/password authentication.
- Create one user with an email address and a password, and copy their UID.
- Set up the database rules as stored in
database-rules.json
. - Create one value in the database called
admin
with your UID as its value.
- Install dependencies with
npm i
in the project directory. - Start the app with
npm start
.
- Install dependencies with
npm i
in theadmin/
directory. - Start the app with
npm start
(this will automatically compile the Rust to WASM).
- React Native mobile app
- React admin console
- create-react-app toolchain
- Rust RSA RSA key generation (compiled to WASM)
- Firebase
- Realtime Database to store public keys for verification
Vaccert is in no way endorsed by the NHS, Department of Health and Social Care, or any other body. The NHS logo and name are trade marks owned by the Secretary of State for Health and Social Care and are reproduced here to show what Vaccert would look like in production use by the NHS. The logo was obtained from the MIT-licensed nhsuk/nhsuk-frontend
repository as an SVG and was then modified and converted to a PNG in compliance with the license. Copyright for source repository: Copyright (c) 2019 NHS Digital.