SSI/NFC desktop/terminal API

Overview

Gimly

Gimly SSI Card Terminal

Gimly SSI Card Terminal is a REST API for Self Sovereign Identity interactions between apps, servers, terminals having an NFC reader and NFC cards.

The API is used as an easy integration means for Desktop, Terminal and Server environments equipped with a NFC reader. The API is targeted at Self Sovereign Identity and Authentication use cases, meaning it can be used to create asymmetric keys for Decentralized Identifiers, as well as store and present Verifiable Credentials and Verifiable Presentations. Given the private key is securely stored in the NFC cards protected environment, it means the solution provides security for SSI use cases on desktop and terminal environments which typically would not be possible otherwise.

API Documentation

The below examples are the most common use cases.

The full API documentation including all endpoints can be found here

To view the API definition online open editor.swagger.io

Scanning a card

To start working with the NFC card, you typically have to scan the card first

Simply doing a GET call to the root / will return basic NFC card information once you tapped the NFC card to the reader.

scanCard

CardInfoResult scanCard()

Parameters

This endpoint does not need any parameter.

Return type

CardInfoResult

Creating a key(pair) on the NFC card

This creates an asymmetric keypair on the NFC card. The private key will never be disclosed and is safely stored in the card. The public key is disclosed. The key can be used as a regular keypair, not using DIDs at all if desired. To access and use the key later you can use the public key value, its card index or the DID Key id value

createKey

KeyResults createKey(cardId, CreateKeyRequest)

Parameters

Name Type Description Notes
cardId String The Id of a card [optional] [default to null]
CreateKeyRequest CreateKeyRequest [optional]

Return type

KeyResults

Sign using the key on the NFC card

This method allows you to sign one or more inputs using the private key stored on the NFC card.

signUsingKey

SignResponse signUsingKey(keyId, SignRequest, cardId)

Parameters

Name Type Description Notes
keyId String The Key index, public key or DID/Verification method key id [default to null]
SignRequest SignRequest Signs one or more inputs, typically hashes in hex format
cardId String The Id of a card [optional] [default to null]

Return type

SignResponse

Add a proof to a credential

This method adds a proof to the supplied credential, using the private key on the NFC card and thus making it a Verifiable Credential. It allows for optional storage of the VC on the NFC card.

signCredential

SignCredentialResponse signCredential(keyId, SignCredentialRequest, cardId)

Parameters

Name Type Description Notes
keyId String The Key index, public key or DID/Verification method key id [default to null]
SignCredentialRequest SignCredentialRequest Signs one or more inputs, typically hashes in hex format
cardId String The Id of a card [optional] [default to null]

Return type

SignCredentialResponse

Add a proof to a presentation

Sign ths supplied presentation using the key on the NFC card, adding a proof and making it a verifiable presentation. Please note that verifiable presentations cannot be stored, as the nature of Verifiable Presentations is to use them on singular invocations only

signPresentation

SignPresentationResponse signPresentation(keyId, SignPresentationRequest, cardId)

Signs a presentation (adds a proof)

Parameters

Name Type Description Notes
keyId String The Key index, public key or DID/Verification method key id [default to null]
SignPresentationRequest SignPresentationRequest Signs a presentation
cardId String The Id of a card [optional] [default to null]

Return type

SignPresentationResponse

Get all Verifiable Credentials stored on the NFC card

Verified Credentials that are self-issued as well as externally issued with a subject that related to the NFC card, can be stored on the NFC card. This method returns all stored Verifiable Credentials.

getStoredCredentials

StoredCredentialsResponse getStoredCredentials(cardId)

Parameters

Name Type Description Notes
cardId String The Id of a card [optional] [default to null]

Return type

StoredCredentialsResponse

TODO

  • Mock testing once we have the latest cards
  • Auth support on the endpoints itself
  • Integration with GraalVM for native executables
  • Windows service integration
  • Docker support with USB?
  • Do we want direct DID creation support, instead of external application created DIDs and only KID resolution?
  • SDK generation for popular languages
You might also like...
Flutter NFC Project - A new flutter plugin to help developers looking to use internal hardware inside iOS or Android devices for reading and writing NFC tags
Briar-desktop - A desktop program for Briar, bringing secure messaging to your desktop and mobile devices

Briar Desktop A desktop program for Briar, bringing secure messaging to your des

Terminal Game. Black and White have only pawns. White wins if their pawn moved to 8th line. Black wins if their pawn moves to 1st line. If black or white haven't any move, then no one wins(stalemate))

Only-Pawns-Chess Terminal game for 2 players Regular chess but all sides have only pawns Rules This game extend all the rules of regular chess but it

Termux - an Android terminal application and Linux environment

Termux application Termux is an Android terminal application and Linux environment. Note that this repository is for the app itself (the user interfac

vShell (Virtual Shell) — a successor of Termux project which provides an alternate implementation of the Linux terminal emulator for Android OS

vShell (Virtual Shell) — a successor of Termux project which provides an alternate implementation of the Linux terminal emulator for Android OS

Android app with a simple NFC payment system to manage visitor consumption at short-duration events and festivals. (Research project)
Android app with a simple NFC payment system to manage visitor consumption at short-duration events and festivals. (Research project)

Clevent Também disponível em Português Clevent is an Android application developed for a Undergraduate Research that uses NFC technology to create a p

An Android App meant to use NFC technology to communicate with and emulate RFID tags

An Android App meant to use NFC technology to communicate with and emulate RFID tags. Built by Niklaas Cotta & Jordan Whiteley, for CIS 433 WI22.

NFC NDEF Reader and Writer. there are two separate activities for reading and writing.

kotlin-nfc-sample NFC NDEF Reader and Writer. there are two separate activities for reading and writing. Steps Clone the Project Open with Android Stu

A desktop code editor app using Jetpack Compose for Desktop and IntelliJ Platform
A desktop code editor app using Jetpack Compose for Desktop and IntelliJ Platform

Compose Code Editor A desktop code editor app using Jetpack Compose for Desktop and IntelliJ Platform. Project Structure The code is contained in the

💻 A cross-platform desktop application to identify libraries used inside an android application. Made possible by Compose Desktop ⚡
💻 A cross-platform desktop application to identify libraries used inside an android application. Made possible by Compose Desktop ⚡

🚀 stackzy A desktop app to analyse APK. Built using Compose desktop ✨ Demo Watch demo 📽️ Usage Show usage 💻 Install Platform Download Status Linux

Test-compose-for-desktop - Hello World in Compose for Desktop

Testing Run from command line: ./gradlew run Regular build: ./gradlew packageUb

Snake-compose-for-desktop - Snake Game - implemented using Compose for Desktop
Snake-compose-for-desktop - Snake Game - implemented using Compose for Desktop

A Snake game, built with Compose for Desktop snake-compose-for-desktop is my imp

Welcome Fruit Ninja 🥝  on Jetpack Compose Desktop 🚀, using Canvas API 🎨
Welcome Fruit Ninja 🥝 on Jetpack Compose Desktop 🚀, using Canvas API 🎨

Compose-Fruit-Ninja 🥝 Welcome Fruit Ninja on Jetpack Compose Desktop 🚀 , using Canvas API 🎨 Featured on jetc-dev How to Run From gradle tab from ri

Alien invasion 👾 gane is back! this time specially on Jetpack Compose Desktop 🚀, using Canvas API 🎨
Alien invasion 👾 gane is back! this time specially on Jetpack Compose Desktop 🚀, using Canvas API 🎨

Compose Space-Invaders 👾 Alien invasion 👾 is back! this time specially on Jetpack Compose Desktop 🚀 , using Canvas API 🎨 Featured on Compose Diges

Jetpack Compose Boids | Flocking Insect 🐜. bird or Fish simulation using Jetpack Compose Desktop 🚀, using Canvas API 🎨
Jetpack Compose Boids | Flocking Insect 🐜. bird or Fish simulation using Jetpack Compose Desktop 🚀, using Canvas API 🎨

🐜 🐜 🐜 Compose flocking Ants(boids) 🐜 🐜 🐜 Jetpack compose Boids | Flocking Insect. bird or Fish simulation using Jetpack Compose Desktop 🚀 , usi

Consumer desktop from nutrition-framework API
Consumer desktop from nutrition-framework API

About This Project (work-in-progress 👷 🔧️ 👷‍♀️ ⛏ ) Consumer Dari Nutrition Framework General Framework for Application Development Around Nutrition

A Kotlin Multiplatform Project using TMDB Api. Currently supports Android,iOS,Desktop and web platforms
A Kotlin Multiplatform Project using TMDB Api. Currently supports Android,iOS,Desktop and web platforms

A Kotlin Multiplatform Project using TMDB Api(https://www.themoviedb.org/). Currently this project is implemented in following platforms Andr

Open-source Desktop library to connect Alsat pardakht peyment API
Open-source Desktop library to connect Alsat pardakht peyment API

Open-source Desktop library to connect Alsat pardakht peyment API

Android Application that plays music through a Spotify API based on a user's current location found through Google Maps API and also checking Google Weather API.

GeoStereo Android Application that plays music through a Spotify API based on a user's current location found through Google Maps API and also checkin

Owner
Gimly
Gimly helps clients leverage blockchain, IoT and other new technologies for their business needs.
Gimly
A logger with a small, extensible API which provides utility on top of Android's normal Log class.

This is a logger with a small, extensible API which provides utility on top of Android's normal Log class. I copy this class into all the little apps

Jake Wharton 9.8k Dec 30, 2022
Android library which makes it easy to handle the different obstacles while calling an API (Web Service) in Android App.

API Calling Flow API Calling Flow is a Android library which can help you to simplify handling different conditions while calling an API (Web Service)

Rohit Surwase 19 Nov 9, 2021
Trail is a simple logging system for Java and Android. Create logs using the same API and the library will detect automatically in which platform the code is running.

Trail Trail is a simple logging system for Java and Android. Create logs using the same API and the library will detect automatically in which platfor

Mauricio Togneri 13 Aug 29, 2022
Expirable Disk Lru Cache is a secure(with encryption) wrapper for [DiskLruCache](https://github.com/JakeWharton/DiskLruCache) that allows expiring of key/value pairs by specifying evictionTimeSpan. It has very simple API.

ExpirableDiskLruCache ExpirableDiskLruCache is a wrapper for DiskLruCache that allows expiring of key/value pairs by specifying evictionTimeSpan. It h

Vijay Rawat 24 Oct 3, 2022
The REST API backend server for the Jalgaon CoHelp application.

API Service - Jalgaon CoHelp The REST API backend server for the Jalgaon CoHelp application. ?? Technology / Tools used Kotlin: Programming language f

Jalgaon CoHelp 25 Jul 7, 2022
Perfect replacement for startActivityForResult(), based on the Activity Result API.

ActivityResultLauncher English | 中文 Activity Result API is an official tool used to replace the method of startActivityForResult() and onActivityResul

DylanCai 167 Nov 30, 2022
⚙ A beautiful and extensible API for bulding preferences screen

Material Preferences ?? Installation Add this in app's build.gradle file: implementation 'com.imangazaliev.material-prefs:core:<version>' implementati

Mahach Imangazaliev 59 Jul 26, 2022
A modern contacts Android API.

A modern contacts Android API.

Alex Styl 410 Jan 3, 2023
Consumer android from nutrition-framework API

About This Project (work-in-progress ?? ??️ ??‍♀️ ⛏ ) Consumer Dari Nutrition Framework General Framework for Application Development Around Nutrition

Faisal Amir 0 Feb 24, 2022
The SSI Kit is a technology stack for enabling Self-Sovereign Identity (SSI) in any application.

Walt.ID SSI Kit The Walt.ID SSI Kit is a holistic SSI solution, with primarily focus on the European EBSI/ESSIF ecosystem. The core services are in th

walt.id 53 Dec 29, 2022