diff --git a/README.md b/README.md index becc46be..4104f470 100644 --- a/README.md +++ b/README.md @@ -13,8 +13,9 @@ Hopae, a founding member of OpenWallet Foundation, is building wallet module in Currently compliant with: -- **[draft-ietf-oauth-selective-disclosure-jwt-08](https://datatracker.ietf.org/doc/draft-ietf-oauth-selective-disclosure-jwt/)** -- **[draft-ietf-oauth-sd-jwt-vc-03](https://datatracker.ietf.org/doc/draft-ietf-oauth-sd-jwt-vc/)** +- **[draft-ietf-oauth-selective-disclosure-jwt-13](https://datatracker.ietf.org/doc/draft-ietf-oauth-selective-disclosure-jwt/)** +- **[draft-ietf-oauth-sd-jwt-vc-05](https://datatracker.ietf.org/doc/draft-ietf-oauth-sd-jwt-vc/)** +- **[draft-ietf-oauth-status-list-05](https://datatracker.ietf.org/doc/draft-ietf-oauth-status-list/)** ## **Background** @@ -53,6 +54,7 @@ By adhering to these design principles, "Selective Disclosure for JWT" aims to s - **[@sd-jwt/hash](./packages/hash/README.md)**: SHA-256 support for SD JWT - **[@sd-jwt/crypto-nodejs](./packages/node-crypto/README.md)**: Nodejs Crypto support for SD JWT - **[@sd-jwt/crypto-browser](./packages/browser-crypto/README.md)**: Browser Crypto support for SD JWT +- **[@sd-jwt/jwt-status-list](./packages/jwt-status-list/README.md)**: Token Status List ## Online Debugging Tool diff --git a/docs/index.html b/docs/index.html index e930409e..c22638e4 100644 --- a/docs/index.html +++ b/docs/index.html @@ -100,8 +100,9 @@

What is SD-JWT VC?

Specification Compliance

Installation

diff --git a/examples/sd-jwt-example/all.ts b/examples/sd-jwt-example/all.ts index 35335bf5..c95b20ba 100644 --- a/examples/sd-jwt-example/all.ts +++ b/examples/sd-jwt-example/all.ts @@ -1,6 +1,6 @@ import { SDJwtInstance } from '@sd-jwt/core'; import type { DisclosureFrame } from '@sd-jwt/types'; -import { createSignerVerifier, digest, generateSalt } from './utils'; +import { createSignerVerifier, digest, generateSalt, ES256 } from './utils'; (async () => { const { signer, verifier } = await createSignerVerifier(); @@ -9,7 +9,7 @@ import { createSignerVerifier, digest, generateSalt } from './utils'; const sdjwt = new SDJwtInstance({ signer, verifier, - signAlg: 'EdDSA', + signAlg: ES256.alg, hasher: digest, hashAlg: 'SHA-256', saltGenerator: generateSalt, @@ -103,6 +103,6 @@ import { createSignerVerifier, digest, generateSalt } from './utils'; // Verify the presentation using the public key and the required claims // return a boolean result - const verified = await sdjwt.verify(credential, requiredClaims); + const verified = await sdjwt.verify(presentation, requiredClaims); console.log('verified:', verified); })(); diff --git a/examples/sd-jwt-example/basic.ts b/examples/sd-jwt-example/basic.ts index 0eb05125..95bd59bd 100644 --- a/examples/sd-jwt-example/basic.ts +++ b/examples/sd-jwt-example/basic.ts @@ -1,6 +1,6 @@ import { SDJwtInstance } from '@sd-jwt/core'; import type { DisclosureFrame } from '@sd-jwt/types'; -import { createSignerVerifier, digest, generateSalt } from './utils'; +import { createSignerVerifier, digest, ES256, generateSalt } from './utils'; (async () => { const { signer, verifier } = await createSignerVerifier(); @@ -9,7 +9,7 @@ import { createSignerVerifier, digest, generateSalt } from './utils'; const sdjwt = new SDJwtInstance({ signer, verifier, - signAlg: 'EdDSA', + signAlg: ES256.alg, hasher: digest, hashAlg: 'SHA-256', saltGenerator: generateSalt, diff --git a/examples/sd-jwt-example/custom.ts b/examples/sd-jwt-example/custom.ts index 7c1fda53..aeb5066f 100644 --- a/examples/sd-jwt-example/custom.ts +++ b/examples/sd-jwt-example/custom.ts @@ -1,6 +1,6 @@ import { SDJwtInstance } from '@sd-jwt/core'; import type { DisclosureFrame } from '@sd-jwt/types'; -import { createSignerVerifier, digest, generateSalt } from './utils'; +import { createSignerVerifier, digest, ES256, generateSalt } from './utils'; (async () => { const { signer, verifier } = await createSignerVerifier(); @@ -9,7 +9,7 @@ import { createSignerVerifier, digest, generateSalt } from './utils'; const sdjwt = new SDJwtInstance({ signer, verifier, - signAlg: 'EdDSA', + signAlg: ES256.alg, hasher: digest, hashAlg: 'SHA-256', saltGenerator: generateSalt, diff --git a/examples/sd-jwt-example/custom_header.ts b/examples/sd-jwt-example/custom_header.ts index 5dcaece3..d4bbd869 100644 --- a/examples/sd-jwt-example/custom_header.ts +++ b/examples/sd-jwt-example/custom_header.ts @@ -1,6 +1,6 @@ import { SDJwtInstance } from '@sd-jwt/core'; import type { DisclosureFrame } from '@sd-jwt/types'; -import { createSignerVerifier, digest, generateSalt } from './utils'; +import { createSignerVerifier, digest, ES256, generateSalt } from './utils'; (async () => { const { signer, verifier } = await createSignerVerifier(); @@ -9,7 +9,7 @@ import { createSignerVerifier, digest, generateSalt } from './utils'; const sdjwt = new SDJwtInstance({ signer, verifier, - signAlg: 'EdDSA', + signAlg: ES256.alg, hasher: digest, hashAlg: 'SHA-256', saltGenerator: generateSalt, diff --git a/examples/sd-jwt-example/decode.ts b/examples/sd-jwt-example/decode.ts index a14247b2..184fe279 100644 --- a/examples/sd-jwt-example/decode.ts +++ b/examples/sd-jwt-example/decode.ts @@ -1,5 +1,5 @@ import { SDJwtInstance } from '@sd-jwt/core'; -import { createSignerVerifier, digest, generateSalt } from './utils'; +import { createSignerVerifier, digest, ES256, generateSalt } from './utils'; (async () => { const { signer, verifier } = await createSignerVerifier(); @@ -7,7 +7,7 @@ import { createSignerVerifier, digest, generateSalt } from './utils'; // Create SDJwt instance for use const sdjwt = new SDJwtInstance({ signer, - signAlg: 'EdDSA', + signAlg: ES256.alg, verifier, hasher: digest, saltGenerator: generateSalt, diff --git a/examples/sd-jwt-example/decoy.ts b/examples/sd-jwt-example/decoy.ts index cda6e11d..e9dec0f7 100644 --- a/examples/sd-jwt-example/decoy.ts +++ b/examples/sd-jwt-example/decoy.ts @@ -1,6 +1,6 @@ import { SDJwtInstance } from '@sd-jwt/core'; import type { DisclosureFrame } from '@sd-jwt/types'; -import { createSignerVerifier, digest, generateSalt } from './utils'; +import { createSignerVerifier, digest, ES256, generateSalt } from './utils'; (async () => { const { signer, verifier } = await createSignerVerifier(); @@ -9,7 +9,7 @@ import { createSignerVerifier, digest, generateSalt } from './utils'; const sdjwt = new SDJwtInstance({ signer, verifier, - signAlg: 'EdDSA', + signAlg: ES256.alg, hasher: digest, hashAlg: 'SHA-256', saltGenerator: generateSalt, diff --git a/examples/sd-jwt-example/kb.ts b/examples/sd-jwt-example/kb.ts index 09c0bce3..0c375dc7 100644 --- a/examples/sd-jwt-example/kb.ts +++ b/examples/sd-jwt-example/kb.ts @@ -1,6 +1,6 @@ import { SDJwtInstance } from '@sd-jwt/core'; import type { DisclosureFrame } from '@sd-jwt/types'; -import { createSignerVerifier, digest, generateSalt } from './utils'; +import { createSignerVerifier, digest, ES256, generateSalt } from './utils'; (async () => { const { signer, verifier } = await createSignerVerifier(); @@ -8,12 +8,12 @@ import { createSignerVerifier, digest, generateSalt } from './utils'; // Create SDJwt instance for use const sdjwt = new SDJwtInstance({ signer, - signAlg: 'EdDSA', + signAlg: ES256.alg, verifier, hasher: digest, saltGenerator: generateSalt, kbSigner: signer, - kbSignAlg: 'EdDSA', + kbSignAlg: ES256.alg, kbVerifier: verifier, }); const claims = { diff --git a/examples/sd-jwt-example/sdjwtobject.ts b/examples/sd-jwt-example/sdjwtobject.ts index 6f565b41..1e5cdacf 100644 --- a/examples/sd-jwt-example/sdjwtobject.ts +++ b/examples/sd-jwt-example/sdjwtobject.ts @@ -1,6 +1,6 @@ import { SDJwtInstance } from '@sd-jwt/core'; import type { DisclosureFrame } from '@sd-jwt/types'; -import { createSignerVerifier, digest, generateSalt } from './utils'; +import { createSignerVerifier, digest, ES256, generateSalt } from './utils'; (async () => { const { signer, verifier } = await createSignerVerifier(); @@ -8,12 +8,12 @@ import { createSignerVerifier, digest, generateSalt } from './utils'; // Create SDJwt instance for use const sdjwt = new SDJwtInstance({ signer, - signAlg: 'EdDSA', + signAlg: ES256.alg, verifier, hasher: digest, saltGenerator: generateSalt, kbSigner: signer, - kbSignAlg: 'EdDSA', + kbSignAlg: ES256.alg, kbVerifier: verifier, }); // Issuer Define the claims object with the user's information diff --git a/examples/sd-jwt-example/utils.ts b/examples/sd-jwt-example/utils.ts index 3eb5426d..8e68c6d9 100644 --- a/examples/sd-jwt-example/utils.ts +++ b/examples/sd-jwt-example/utils.ts @@ -1,5 +1,5 @@ import { ES256, digest, generateSalt } from '@sd-jwt/crypto-nodejs'; -export { digest, generateSalt }; +export { digest, generateSalt, ES256 }; export const createSignerVerifier = async () => { const { privateKey, publicKey } = await ES256.generateKeyPair(); diff --git a/examples/sd-jwt-vc-example/all.ts b/examples/sd-jwt-vc-example/all.ts index 9b64dfa9..9a83e1d0 100644 --- a/examples/sd-jwt-vc-example/all.ts +++ b/examples/sd-jwt-vc-example/all.ts @@ -1,6 +1,6 @@ import { SDJwtVcInstance } from '@sd-jwt/sd-jwt-vc'; import type { DisclosureFrame } from '@sd-jwt/types'; -import { createSignerVerifier, digest, generateSalt } from './utils'; +import { createSignerVerifier, digest, ES256, generateSalt } from './utils'; (async () => { const { signer, verifier } = await createSignerVerifier(); @@ -9,7 +9,7 @@ import { createSignerVerifier, digest, generateSalt } from './utils'; const sdjwt = new SDJwtVcInstance({ signer, verifier, - signAlg: 'EdDSA', + signAlg: ES256.alg, hasher: digest, hashAlg: 'SHA-256', saltGenerator: generateSalt, diff --git a/examples/sd-jwt-vc-example/basic.ts b/examples/sd-jwt-vc-example/basic.ts index 2ed209bb..dff14700 100644 --- a/examples/sd-jwt-vc-example/basic.ts +++ b/examples/sd-jwt-vc-example/basic.ts @@ -1,6 +1,6 @@ import { SDJwtVcInstance } from '@sd-jwt/sd-jwt-vc'; import type { DisclosureFrame } from '@sd-jwt/types'; -import { createSignerVerifier, digest, generateSalt } from './utils'; +import { createSignerVerifier, digest, ES256, generateSalt } from './utils'; (async () => { const { signer, verifier } = await createSignerVerifier(); @@ -9,7 +9,7 @@ import { createSignerVerifier, digest, generateSalt } from './utils'; const sdjwt = new SDJwtVcInstance({ signer, verifier, - signAlg: 'EdDSA', + signAlg: ES256.alg, hasher: digest, hashAlg: 'SHA-256', saltGenerator: generateSalt, diff --git a/examples/sd-jwt-vc-example/custom.ts b/examples/sd-jwt-vc-example/custom.ts index 1a2a5a7a..a9e48ec4 100644 --- a/examples/sd-jwt-vc-example/custom.ts +++ b/examples/sd-jwt-vc-example/custom.ts @@ -1,6 +1,6 @@ import { SDJwtVcInstance } from '@sd-jwt/sd-jwt-vc'; import type { DisclosureFrame } from '@sd-jwt/types'; -import { createSignerVerifier, digest, generateSalt } from './utils'; +import { createSignerVerifier, digest, ES256, generateSalt } from './utils'; (async () => { const { signer, verifier } = await createSignerVerifier(); @@ -9,7 +9,7 @@ import { createSignerVerifier, digest, generateSalt } from './utils'; const sdjwt = new SDJwtVcInstance({ signer, verifier, - signAlg: 'EdDSA', + signAlg: ES256.alg, hasher: digest, hashAlg: 'SHA-256', saltGenerator: generateSalt, diff --git a/examples/sd-jwt-vc-example/custom_header.ts b/examples/sd-jwt-vc-example/custom_header.ts index 31eb3d8b..0b8cab75 100644 --- a/examples/sd-jwt-vc-example/custom_header.ts +++ b/examples/sd-jwt-vc-example/custom_header.ts @@ -1,6 +1,6 @@ import { SDJwtVcInstance } from '@sd-jwt/sd-jwt-vc'; import type { DisclosureFrame } from '@sd-jwt/types'; -import { createSignerVerifier, digest, generateSalt } from './utils'; +import { createSignerVerifier, digest, ES256, generateSalt } from './utils'; (async () => { const { signer, verifier } = await createSignerVerifier(); @@ -9,7 +9,7 @@ import { createSignerVerifier, digest, generateSalt } from './utils'; const sdjwt = new SDJwtVcInstance({ signer, verifier, - signAlg: 'EdDSA', + signAlg: ES256.alg, hasher: digest, hashAlg: 'SHA-256', saltGenerator: generateSalt, diff --git a/examples/sd-jwt-vc-example/decode.ts b/examples/sd-jwt-vc-example/decode.ts index ccf1faab..bcd4b2f0 100644 --- a/examples/sd-jwt-vc-example/decode.ts +++ b/examples/sd-jwt-vc-example/decode.ts @@ -1,5 +1,5 @@ import { SDJwtVcInstance } from '@sd-jwt/sd-jwt-vc'; -import { createSignerVerifier, digest, generateSalt } from './utils'; +import { createSignerVerifier, digest, ES256, generateSalt } from './utils'; (async () => { const { signer, verifier } = await createSignerVerifier(); @@ -7,12 +7,12 @@ import { createSignerVerifier, digest, generateSalt } from './utils'; // Create SDJwt instance for use const sdjwt = new SDJwtVcInstance({ signer, - signAlg: 'EdDSA', + signAlg: ES256.alg, verifier, hasher: digest, saltGenerator: generateSalt, kbSigner: signer, - kbSignAlg: 'EdDSA', + kbSignAlg: ES256.alg, kbVerifier: verifier, }); diff --git a/examples/sd-jwt-vc-example/decoy.ts b/examples/sd-jwt-vc-example/decoy.ts index 109e4c47..b8fc3c43 100644 --- a/examples/sd-jwt-vc-example/decoy.ts +++ b/examples/sd-jwt-vc-example/decoy.ts @@ -1,6 +1,6 @@ import { SDJwtVcInstance } from '@sd-jwt/sd-jwt-vc'; import type { DisclosureFrame } from '@sd-jwt/types'; -import { createSignerVerifier, digest, generateSalt } from './utils'; +import { createSignerVerifier, digest, ES256, generateSalt } from './utils'; (async () => { const { signer, verifier } = await createSignerVerifier(); @@ -9,7 +9,7 @@ import { createSignerVerifier, digest, generateSalt } from './utils'; const sdjwt = new SDJwtVcInstance({ signer, verifier, - signAlg: 'EdDSA', + signAlg: ES256.alg, hasher: digest, hashAlg: 'SHA-256', saltGenerator: generateSalt, diff --git a/examples/sd-jwt-vc-example/kb.ts b/examples/sd-jwt-vc-example/kb.ts index 6ce9858c..39a889ef 100644 --- a/examples/sd-jwt-vc-example/kb.ts +++ b/examples/sd-jwt-vc-example/kb.ts @@ -1,6 +1,6 @@ import { SDJwtVcInstance } from '@sd-jwt/sd-jwt-vc'; import type { DisclosureFrame } from '@sd-jwt/types'; -import { createSignerVerifier, digest, generateSalt } from './utils'; +import { createSignerVerifier, digest, ES256, generateSalt } from './utils'; (async () => { const { signer, verifier } = await createSignerVerifier(); @@ -8,12 +8,12 @@ import { createSignerVerifier, digest, generateSalt } from './utils'; // Create SDJwt instance for use const sdjwt = new SDJwtVcInstance({ signer, - signAlg: 'EdDSA', + signAlg: ES256.alg, verifier, hasher: digest, saltGenerator: generateSalt, kbSigner: signer, - kbSignAlg: 'EdDSA', + kbSignAlg: ES256.alg, kbVerifier: verifier, }); const claims = { diff --git a/examples/sd-jwt-vc-example/sdjwtobject.ts b/examples/sd-jwt-vc-example/sdjwtobject.ts index 798f8a19..0f1c0e1c 100644 --- a/examples/sd-jwt-vc-example/sdjwtobject.ts +++ b/examples/sd-jwt-vc-example/sdjwtobject.ts @@ -1,6 +1,6 @@ import { SDJwtVcInstance } from '@sd-jwt/sd-jwt-vc'; import type { DisclosureFrame } from '@sd-jwt/types'; -import { createSignerVerifier, digest, generateSalt } from './utils'; +import { createSignerVerifier, digest, ES256, generateSalt } from './utils'; (async () => { const { signer, verifier } = await createSignerVerifier(); @@ -8,12 +8,12 @@ import { createSignerVerifier, digest, generateSalt } from './utils'; // Create SDJwt instance for use const sdjwt = new SDJwtVcInstance({ signer, - signAlg: 'EdDSA', + signAlg: ES256.alg, verifier, hasher: digest, saltGenerator: generateSalt, kbSigner: signer, - kbSignAlg: 'EdDSA', + kbSignAlg: ES256.alg, kbVerifier: verifier, }); // Issuer Define the claims object with the user's information diff --git a/examples/sd-jwt-vc-example/utils.ts b/examples/sd-jwt-vc-example/utils.ts index 3eb5426d..8e68c6d9 100644 --- a/examples/sd-jwt-vc-example/utils.ts +++ b/examples/sd-jwt-vc-example/utils.ts @@ -1,5 +1,5 @@ import { ES256, digest, generateSalt } from '@sd-jwt/crypto-nodejs'; -export { digest, generateSalt }; +export { digest, generateSalt, ES256 }; export const createSignerVerifier = async () => { const { privateKey, publicKey } = await ES256.generateKeyPair();