All Projects → idpass → idpass-lite-java

idpass / idpass-lite-java

Licence: Apache-2.0 License
Java wrapper for idpass-lite, a library to create and interact with secure and biometrically-binding QR code identity cards

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to idpass-lite-java

PersonalAnalytics
Personal Analytics project to increase knowledge workers' awareness about work and productivity.
Stars: ✭ 47 (+123.81%)
Mutual labels:  biometrics
keystroke-dynamics
Demo to show keystroke dynamics / keystroke biometrics
Stars: ✭ 25 (+19.05%)
Mutual labels:  biometrics
mycloud
Tradle MyCloud: digital financial grade blockchain-based identity
Stars: ✭ 13 (-38.1%)
Mutual labels:  digital-identity
iot-device-management
Leveraging Ethereum blockchain platform for identity, authentication and reputation of IoT devices
Stars: ✭ 84 (+300%)
Mutual labels:  digital-identity
EDCC-Palmprint-Recognition
EDCC: An efficient and accurate algorithm for palmprint recognition.
Stars: ✭ 103 (+390.48%)
Mutual labels:  biometrics
FaceLivenessDetection-SDK
3D Passive Face Liveness Detection (Anti-Spoofing) & Deepfake detection. A single image is needed to compute liveness score. 99,67% accuracy on our dataset and perfect scores on multiple public datasets (NUAA, CASIA FASD, MSU...).
Stars: ✭ 85 (+304.76%)
Mutual labels:  biometrics
MinutiaeNet
Code and models for paper "Robust Minutiae Extractor: Integrating Deep Networks and Fingerprint Domain Knowledge" at International Conference on Biometrics (ICB) 2018
Stars: ✭ 93 (+342.86%)
Mutual labels:  biometrics
Voice2Mesh
CVPR 2022: Cross-Modal Perceptionist: Can Face Geometry be Gleaned from Voices?
Stars: ✭ 67 (+219.05%)
Mutual labels:  biometrics
verity
Evernym Verity is a decentralized protocol platform for issuing and verifying digital credentials. This repository contains the back-end service which is accessed using the Verity SDK. This is a read-only mirror. Contributions are welcomed at https://gitlab.com/evernym .
Stars: ✭ 18 (-14.29%)
Mutual labels:  digital-identity
SSBiometricsAuthentication
Biometric factors allow for secure authentication on the Android platform.
Stars: ✭ 87 (+314.29%)
Mutual labels:  biometrics
BiometricAutomationDemo
Dependency free iOS biometric automation example.
Stars: ✭ 53 (+152.38%)
Mutual labels:  biometrics
Palmprint-Recognition-in-the-Wild
No description or website provided.
Stars: ✭ 22 (+4.76%)
Mutual labels:  biometrics
Biometric-Authentication-Android
A sample implementation of AndroidX biometrics API using Kotlin. Authenticate using biometrics or PIN/Password if biometrics isn't available on device. Fully implemented in Jetpack compose using Material 3 dynamic theming and also has a separate implementation in xml with MDC 3.
Stars: ✭ 29 (+38.1%)
Mutual labels:  biometrics
bob
Bob is a free signal-processing and machine learning toolbox originally developed by the Biometrics group at Idiap Research Institute, in Switzerland. - Mirrored from https://gitlab.idiap.ch/bob/bob
Stars: ✭ 38 (+80.95%)
Mutual labels:  biometrics
seeing-red
Using PPG Obtained via Smartphone Cameras for Authentication
Stars: ✭ 29 (+38.1%)
Mutual labels:  biometrics
Gait-Recognition-Using-Smartphones
Deep Learning-Based Gait Recognition Using Smartphones in the Wild
Stars: ✭ 77 (+266.67%)
Mutual labels:  biometrics
TABTestKit
Library designed to make writing and maintaining automated tests for iOS applications. This includes automation of bio-metrics and controlling of mock servers
Stars: ✭ 53 (+152.38%)
Mutual labels:  biometrics
Dyamic Graph Representation
Official Dynamic Graph Representation PyTorch implement for iris/face recognition
Stars: ✭ 22 (+4.76%)
Mutual labels:  biometrics
DeepLearning-Gdansk2019-tutorial
Ordinal Regression tutorial for the International Summer School on Deep Learning 2019
Stars: ✭ 66 (+214.29%)
Mutual labels:  biometrics
Fingerprint-Enhancement-Python
Using oriented gabor filters to enhance fingerprint images
Stars: ✭ 157 (+647.62%)
Mutual labels:  biometrics

ID PASS Lite for Java

CircleCI

A Java wrapper for the idpass-lite library, providing an API to create and interact with secure and biometrically-binding QR code identity cards.

id front id back

Features

  • Create and verify card with face
  • Verify card with PIN
  • Sign and encrypt with card
  • Add, revoke, and verify certificates
  • Generate and read QR codes

Installation

Declare Maven Central repository in the dependency configuration, then add this library in the dependencies. An example using build.gradle:

repositories {
    mavenCentral()
}

dependencies {
    implementation "org.idpass:idpass-lite-java:0.1"
    implementation 'com.google.protobuf:protobuf-java:3.12.2'
}

If you want to build this library from source, instructions to do so can be found in the Building from source wiki page.

Usage

To begin, we import the different classes from the library that we want to use. We can see this snippet and the rest of the example code in our test suite:

import org.api.proto.Certificates;
import org.api.proto.Ident;
import org.api.proto.KeySet;
import org.api.proto.byteArray;
import org.idpass.lite.Card;
import org.idpass.lite.IDPassHelper;
import org.idpass.lite.IDPassReader;
import org.idpass.lite.proto.Date;
import org.idpass.lite.proto.*;
import org.idpass.lite.test.utils.Helper;

Refer to the API Reference for documentation about the available classes.

We then create an instance of the IDPassReader class. This is going to need some keys and certificates so we define those as well.

// Generate cryptographic keys and initialize a keyset using these keys
byte[] encryptionkey = IDPassHelper.generateEncryptionKey();
byte[] signaturekey = IDPassHelper.generateSecretSignatureKey();
byte[] publicVerificationKey = IDPassHelper.getPublicKey(signaturekey);

KeySet keyset = KeySet.newBuilder()
    .setEncryptionKey(ByteString.copyFrom(encryptionkey))
    .setSignatureKey(ByteString.copyFrom(signaturekey))
    .addVerificationKeys(byteArray.newBuilder()
        .setTyp(byteArray.Typ.ED25519PUBKEY)
        .setVal(ByteString.copyFrom(publicVerificationKey)).build())
    .build();

// Generate certificates (this is optional)
byte[] rootkey = IDPassHelper.generateSecretSignatureKey();
Certificate rootcert = IDPassReader.generateRootCertificate(rootkey);
Certificates rootcerts = Certificates.newBuilder().addCert(rootcert).build();
Certificate childcert = IDPassReader.generateChildCertificate(rootkey, publicVerificationKey);
Certificates certchain = Certificates.newBuilder().addCert(childcert).build();

// Initialize IDPassReader object with the keyset and an optional certificate
IDPassReader reader = new IDPassReader(keyset, rootcerts);

Alternatively, we can create an IDPassReader instance using a PKCS12 keystore file:

File p12File = new File("/path/to/demokeys.cfg.p12");
InputStream inputStream = new FileInputStream(p12File);
IDPassReader reader = new IDPassReader("default", inputStream, "changeit", "changeit");

Once we have an IDPassReader instance, we can then use it to generate a secure and biometrically-binding ID PASS Lite QR code identity card:

// Scan photo of card ID owner
byte[] photo = Files.readAllBytes(Paths.get("testdata/florence_ID_Photo.jpg"));

// Set identity details into `Ident` object
Ident ident = Ident.newBuilder()
    .setPhoto(ByteString.copyFrom(photo))
    .setGivenName("MARION FLORENCE")
    .setSurName("DUPONT")
    .setPin("1234")
    .setDateOfBirth(Date.newBuilder().setYear(1985).setMonth(1).setDay(1))
    .addPubExtra(Pair.newBuilder().setKey("Sex").setValue("F"))
    .addPubExtra(Pair.newBuilder().setKey("Nationality").setValue("French"))
    .addPubExtra(Pair.newBuilder().setKey("Date Of Issue").setValue("02 JAN 2025"))
    .addPubExtra(Pair.newBuilder().setKey("Date Of Expiry").setValue("01 JAN 2035"))
    .addPubExtra(Pair.newBuilder().setKey("ID").setValue("SA437277"))
    .addPrivExtra(Pair.newBuilder().setKey("SS Number").setValue("2 85 01 75 116 001 42"))
    .build();

// Generate a secure ID PASS Lite ID
Card card = reader.newCard(ident, certchain);

The following are some examples of what can be done with the generated ID PASS Lite card. Refer to the API Reference for more documentation.

// (1) Render the ID PASS Lite ID as a secure QR code image
BufferedImage qrCode = Helper.toBufferedImage(card);

// (2) Scan the generated ID PASS Lite QR code with the reader
Card readCard = reader.open(Helper.scanQRCode(qrCode));

// (3) Biometrically authenticate into ID PASS Lite QR code ID using face recognition
readCard.authenticateWithFace(photo);

// Private identity details shall be available when authenticated
readCard.getGivenName();

Related projects

  • idpass-lite - A library to create and issue biometrically-binding QR code identity cards.

License

Apache-2.0 License

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].