json-proof-token
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.
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 |
✘ |
NOTE: Currently, the
OKP
implementation makes reference to RFC 8037, but it may later be updated to point to the draft from the COSE WG, in order to support also BLS Elliptic Curve Keys (used in BBS+).
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 mentioned before, in section 2.2.3.
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 |
✘ | Named here |
BBS
These alg
values are temporary and await an update to the official draft that will define names to support both ciphersuites specified in BBS+.:
- BBS_BLS12381G1_XMD:SHA-256_SSWU_RO_H2G_HM2S_
- BBS_BLS12381G1_XOF:SHAKE-256_SSWU_RO_H2G_HM2S_
Algorithm | Support | Remarks |
---|---|---|
BLS12381-SHA256 |
✔ | |
BLS12381-SHAKE256 |
✔ | |
BLS12381-SHA256-PROOF |
✔ | |
BLS12381-SHAKE256-PROOF |
✔ |
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 | ✘ |
Getting Started
Requirements
Usage
Add this to your Cargo.toml:
[dependencies]
json-proof-token = "0.1.7"
Example
Take a look at the examples.
Tests
TBD