#jose #zero-knowledge #jwk #jwp #jpt

json-proof-token

A library implementation based on the new JOSE Working Group draft specifications: JSON Web Proof (JWP), JSON Proof Token (JPT) and JSON Proof Algorithm (JPA)

27 releases

new 0.4.1 Mar 24, 2025
0.3.5 Apr 5, 2024
0.3.4 Mar 19, 2024
0.2.9 Dec 22, 2023
0.1.8 Nov 30, 2023

#63 in Authentication

Download history 1328/week @ 2024-12-02 1342/week @ 2024-12-09 907/week @ 2024-12-16 140/week @ 2024-12-23 392/week @ 2024-12-30 828/week @ 2025-01-06 1227/week @ 2025-01-13 1449/week @ 2025-01-20 963/week @ 2025-01-27 882/week @ 2025-02-03 1183/week @ 2025-02-10 1581/week @ 2025-02-17 1913/week @ 2025-02-24 1336/week @ 2025-03-03 2007/week @ 2025-03-10 1716/week @ 2025-03-17

7,300 downloads per month
Used in 13 crates (4 directly)

Apache-2.0

120KB
2K SLoC

json-proof-token

License

Decoder

Here you can find a simple decoder for JSON Proof Tokens.

Description

Rust library implementing the new JOSE Working Group drafts:

The specification work for this can be found here.

Supported Features

JSON Web Keys (JWK)

JWK is defined in RFC 7517.

NOTE: To represent BLS keys this implementation refers to draft-ietf-cose-bls-key-representations-05.

JWKs are currently used in the proof generation and verification of JWPs.

The tables below represent which kty and crv are supported at momement.

JWK Key Type

Key Type Support
OKP
EC
RSA
oct

JWK Elliptic Curve

The standard list of Elliptic Curves can be found here:

Curve Name Support
P-256
P-384
P-521
secp256k1
Ed25519
Ed448
X25519
X448

This list is made from the currenlty active draft Barreto-Lynn-Scott Elliptic Curve Key Representations for JOSE and COSE - v05.

Curve Name Support
BLS12381G2
BLS12381G1
BLS48581G2
BLS48581G2

JSON Web Proof Algorithms

The supported algorithm are defined in in the JPA specification.

NOTE: Keep in mind that these specifications are in the early stages, and there is a high likelihood that they will undergo significant changes in the future.

Single Use

Algorithm Support Remarks
SU-ES256
SU-ES384
SU-ES3512

BBS

The BBS-SHAKE256 value is temporary and awaits an update to the official draft that will define names to support the ciphersuite BBS_BLS12381G1_XOF:SHAKE-256_SSWU_RO_H2G_HM2S_ specified in BBS+.:

Algorithm Support Remarks
BBS
BBS-SHAKE256

MAC

These are defined here:

Algorithm Support Remarks
MAC-H256
MAC-H384
MAC-H512
MAC-K25519
MAC-K448
MAC-H256K

JSON Web Proof Serialization

Format Support
Compact
JSON
CBOR

Getting Started

Requirements

Usage

Add this to your Cargo.toml:

[dependencies]
json-proof-token = "0.4.1"

Example

Take a look at the examples.

Tests

To run the tests

cargo test

Dependencies

~8–10MB
~175K SLoC