Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/filip26/iron-verifiable-credentials

A Verifiable Credentials Processor & API
https://github.com/filip26/iron-verifiable-credentials

credentials credentials-issuer credentials-verification java verifiable-credentials verifiable-credentials-data-model

Last synced: 2 months ago
JSON representation

A Verifiable Credentials Processor & API

Awesome Lists containing this project

README

        

# Iron Verifiable Credentials Processor

An implementation of the [W3C Verifiable Credentials](https://www.w3.org/TR/vc-data-model/) model and processing in Java.

[![Java 17 CI](https://github.com/filip26/iron-verifiable-credentials/actions/workflows/java17-build.yml/badge.svg)](https://github.com/filip26/iron-verifiable-credentials/actions/workflows/java17-build.yml)
[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=filip26_iron-verifiable-credentials&metric=security_rating)](https://sonarcloud.io/summary/new_code?id=filip26_iron-verifiable-credentials)
[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=filip26_iron-verifiable-credentials&metric=sqale_rating)](https://sonarcloud.io/dashboard?id=filip26_iron-verifiable-credentials)
[![Maven Central](https://img.shields.io/maven-central/v/com.apicatalog/iron-verifiable-credentials.svg?label=Maven%20Central)](https://search.maven.org/search?q=g:com.apicatalog%20AND%20a:iron-verifiable-credentials)
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)

## Features

* Issuer, Verifier, Holder
* Signature Suites
* [W3C Data Integrity Cryptosuites](https://www.w3.org/TR/vc-data-integrity/)
* [ECDSA-SD-2023](https://github.com/filip26/iron-ecdsa-sd-2023) [selective disclosure]
* [EdDSA-RDFC-2022](https://github.com/filip26/iron-eddsa-rdfc-2022)
* [ECDSA-RDFC-2019](https://github.com/filip26/iron-ecdsa-rdfc-2019) [P-256, P-384]
* [BBS-2023](https://github.com/filip26/iron-bbs-cryptosuite-2023) (planned)
* [Ed25519Signature2020](https://github.com/filip26/iron-ed25519-cryptosuite-2020)
* Have you implemented a signature suite? List it here, open PR.
* Credentail Status Verification
* Bitstring Status List (planned)
* Data Models
* [v2.0](https://w3c.github.io/vc-data-model/)
* [v1.1](https://www.w3.org/TR/vc-data-model/)

[Community compatibility dashboard for Verifiable Credentials](https://canivc.com/)

## Usage

This repository provides common logic and primitives to easily implement a signature suite. It is intended to be used together with a suite, or suites, of your choice, e.g. [ECDSA SD 2023](https://github.com/filip26/iron-ecdsa-sd-2023). Read the suite(s) documentation for specifics.

### Verifier

```javascript
// create a new verifier instance
static Verifier VERIFIER = Verifier.with(SUITE1, SUITE2, ...)
// options
.base(...)
.loader(...)
.useBundledContexts(true|false)
.statusValidator(...)
.subjectValidator(...)
// ...
;

try {
// verify the given input proof(s)
var verifiable = VERIFIER.verify(credential|presentation);

// or with runtime parameters e.g. domain, challenge, etc.
var verifiable = VERIFIER.verify(credential|presentation, parameters);

// get verified details
verifiable.subject()
verifiable.id()
verifiable.type()
// ...

} catch (VerificationError | DocumentError e) {
...
}

```

### Issuer

```javascript
// create a new issuer instance
Issuer ISSUER = SUITE.createIssuer(keyPairProvider)
// options
.base(...)
.loader(...)
.useBundledContexts(true|false)
// ...
;

try {
// issue a new verifiable, i.e. sign the input and add a new proof
var verifiable = ISSUER.sign(credential|presentation, proofDraft).compacted();

} catch (SigningError | DocumentError e) {
...
}
```

### Holder

```javascript
// create a new holder instance
static Holder HOLDER = Holder.with(SUITE1, SUITE2, ...)
// options
.base(...)
.loader(...)
.useBundledContexts(true|false)
// ...
;

try {
// derive a new signed credentials disclosing selected claims only
var verifiable = HOLDER.derive(credential, selectors).compacted();

} catch (SigningError | DocumentError e) {
...
}
```

## Documentation

![Verification Data Flow](/doc/iron-vc-signature-verification-data-flow-v1.0.6.png)

![Core Data Model](/doc/iron-vc-core-data-model-v1.0.3.png)

[![javadoc](https://javadoc.io/badge2/com.apicatalog/iron-verifiable-credentials/javadoc.svg)](https://javadoc.io/doc/com.apicatalog/iron-verifiable-credentials)

## Installation

### Maven
Java 17+

```xml

com.apicatalog
iron-verifiable-credentials
0.14.0

```

Iron VC SDK for Android is distributed under a commercial license. [Contact](mailto:[email protected])

## Contributing

All PR's welcome!

### Building

Fork and clone the project repository.

#### Java 17
```bash
> cd iron-verfiable-credentials
> mvn clean package
```

## Extensions
* [Iridium](https://github.com/filip26/iridium-cbor-ld) - A CBOR-based Processor for Linked Data
* [VC HTTP API & Service](https://github.com/filip26/iron-vc-api)
* [LEXREX](https://lexrex.web.app/) - Semantic vocabularies visual builder and manager

## Resources

* [VC Playground](https://vcplayground.org/)
* [Community compatibility dashboard for Verifiable Credentials](https://canivc.com/)
* [W3C Verifiable Credentials Data Model v2.0](https://w3c.github.io/vc-data-model/)
* [W3C Verifiable Credentials Data Model v1.1](https://www.w3.org/TR/vc-data-model/)
* [W3C Verifiable Credentials Use Cases](https://www.w3.org/TR/vc-use-cases/)
* [W3C Verifiable Credentials Implementation Guidelines 1.0](https://www.w3.org/TR/vc-imp-guide/)
* [W3C Decentralized Identifiers (DIDs) v1.0](https://www.w3.org/TR/did-core/)
* [The did:key Method v0.7](https://w3c-ccg.github.io/did-method-key/)

## Sponsors



## Commercial Support
Commercial support is available at [email protected]