From d88df4fc9f4a704f9c4cf208a0b302dca4fc2d29 Mon Sep 17 00:00:00 2001 From: Timo Glastra Date: Thu, 31 Oct 2024 19:32:13 +0530 Subject: [PATCH 1/3] feat: mso mdoc handling Signed-off-by: Timo Glastra --- ...rm-direct-post-jwt-auth-response-params.ts | 2 +- packages/siop-oid4vp/lib/__tests__/IT.spec.ts | 1 - .../siop-oid4vp/lib/__tests__/MsoMdoc.spec.ts | 251 ++++ .../__tests__/PresentationExchange.spec.ts | 10 +- .../lib/__tests__/e2e/mattr.launchpad.spec.ts | 1 - .../AuthorizationResponse.ts | 71 +- .../lib/authorization-response/OpenID4VP.ts | 56 +- .../PresentationExchange.ts | 61 +- .../lib/authorization-response/types.ts | 13 +- packages/siop-oid4vp/lib/helpers/Encodings.ts | 5 + packages/siop-oid4vp/lib/helpers/Metadata.ts | 24 +- .../siop-oid4vp/lib/helpers/Revocation.ts | 15 +- packages/siop-oid4vp/lib/rp/RP.ts | 44 +- packages/siop-oid4vp/lib/types/Errors.ts | 1 - packages/siop-oid4vp/lib/types/SIOP.types.ts | 9 +- packages/siop-oid4vp/package.json | 9 +- pnpm-lock.yaml | 1156 +++++++++++------ 17 files changed, 1181 insertions(+), 548 deletions(-) create mode 100644 packages/siop-oid4vp/lib/__tests__/MsoMdoc.spec.ts diff --git a/packages/jarm/lib/jarm-auth-response/v-jarm-direct-post-jwt-auth-response-params.ts b/packages/jarm/lib/jarm-auth-response/v-jarm-direct-post-jwt-auth-response-params.ts index 0530655e..9abb3c44 100644 --- a/packages/jarm/lib/jarm-auth-response/v-jarm-direct-post-jwt-auth-response-params.ts +++ b/packages/jarm/lib/jarm-auth-response/v-jarm-direct-post-jwt-auth-response-params.ts @@ -6,7 +6,7 @@ export const vJarmDirectPostJwtParams = v.looseObject({ ...v.omit(vJarmAuthResponseParams, ['iss', 'aud', 'exp']).entries, ...v.partial(v.pick(vJarmAuthResponseParams, ['iss', 'aud', 'exp'])).entries, - vp_token: v.string(), + vp_token: v.union([v.string(), v.array(v.pipe(v.string(), v.nonEmpty()))]), presentation_submission: v.unknown(), nonce: v.optional(v.string()), }); diff --git a/packages/siop-oid4vp/lib/__tests__/IT.spec.ts b/packages/siop-oid4vp/lib/__tests__/IT.spec.ts index 6d57dbf1..b4ccba53 100644 --- a/packages/siop-oid4vp/lib/__tests__/IT.spec.ts +++ b/packages/siop-oid4vp/lib/__tests__/IT.spec.ts @@ -1831,4 +1831,3 @@ describe('RP and OP interaction should', () => { expect(resState?.status).toBe('error') }) }) - diff --git a/packages/siop-oid4vp/lib/__tests__/MsoMdoc.spec.ts b/packages/siop-oid4vp/lib/__tests__/MsoMdoc.spec.ts new file mode 100644 index 00000000..c4fdcd37 --- /dev/null +++ b/packages/siop-oid4vp/lib/__tests__/MsoMdoc.spec.ts @@ -0,0 +1,251 @@ +import { SigningAlgo } from '@sphereon/oid4vc-common' +import { PEX } from '@sphereon/pex' +import { PresentationDefinitionV2 } from '@sphereon/pex-models' +import { OriginalVerifiableCredential } from '@sphereon/ssi-types' + +import { + OP, + PassBy, + PresentationDefinitionWithLocation, + PresentationExchange, + PresentationVerificationCallback, + PropertyTarget, + ResponseIss, + ResponseType, + RevocationVerification, + RP, + Scope, + SubjectType, + SupportedVersion, + VPTokenLocation, +} from '..' + +import { getVerifyJwtCallback, internalSignature } from './DidJwtTestUtils' +import { getResolver } from './ResolverTestUtils' +import { mockedGetEnterpriseAuthToken, pexHasher, sdJwtVcPresentationSignCallback, WELL_KNOWN_OPENID_FEDERATION } from './TestUtils' + +jest.setTimeout(30000) + +const EXAMPLE_REDIRECT_URL = 'https://acme.com/hello' + +const HOLDER_DID = 'did:example:ebfeb1f712ebc6f1c276e12ec21' + +const mdocBase64UrlUniversity = + 'uQACam5hbWVTcGFjZXOhd2V1LmV1cm9wYS5lYy5ldWRpLnBpZC4xhNgYWGikaGRpZ2VzdElEAHFlbGVtZW50SWRlbnRpZmllcmp1bml2ZXJzaXR5bGVsZW1lbnRWYWx1ZWlpbm5zYnJ1Y2tmcmFuZG9tWCDPDfrRde4BPN5uQhSGnm8zmhFiMm2pjTzx5z3JmEKLKdgYWGOkaGRpZ2VzdElEAXFlbGVtZW50SWRlbnRpZmllcmZkZWdyZWVsZWxlbWVudFZhbHVlaGJhY2hlbG9yZnJhbmRvbVggOUutjAeZTM2jcre7I4Gfeqy81azrsSXtbpWH65QmJTbYGFhhpGhkaWdlc3RJRAJxZWxlbWVudElkZW50aWZpZXJkbmFtZWxlbGVtZW50VmFsdWVoSm9obiBEb2VmcmFuZG9tWCD3XuNqynfdWeNM9qanYauAk5iin3lXV4eCd4RqNaCVBdgYWGGkaGRpZ2VzdElEA3FlbGVtZW50SWRlbnRpZmllcmNub3RsZWxlbWVudFZhbHVlaWRpc2Nsb3NlZGZyYW5kb21YICmBo2MFCt3SoUx36ZNOSPXRcA5hb1ABmy5Q5F9V6_ulamlzc3VlckF1dGiEQ6EBJqIEWDF6RG5hZXJDa3ppOERHNTZRVWN0aTJaSk1jd2ZFcFpLb2VYNW4xRlp3THZjQWZ2VHZpGCGBWPwwgfkwgaCgAwIBAgIQElXcBkTBG_kaIWLYwVbnAzAKBggqhkjOPQQDAjANMQswCQYDVQQGEwJERTAeFw0yNDEwMzAxMTAwMThaFw0yNTEwMzAxMTAwMThaMA0xCzAJBgNVBAYTAkRFMDkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDIgADfu2vJOiV-lZLsM5p3CGYjMXX_hjj9LsQybiK0c9ixVujAjAAMAoGCCqGSM49BAMCA0gAMEUCIQDVhXXnyqyJ7Y8VECpvP4sZ1jTbnQ684CmFAUR2kHuArAIgAhDDybZ9k_sAFpArd9YAlfSBgA6r2SgmhXyxfYdQ26pZAd3YGFkB2LkABmd2ZXJzaW9uYzEuMG9kaWdlc3RBbGdvcml0aG1nU0hBLTI1Nmx2YWx1ZURpZ2VzdHOhd2V1LmV1cm9wYS5lYy5ldWRpLnBpZC4xpABYIHxEA-V6vOFCQAuHYIYARAxRgZ_5DgIUy-i9SL_1AMRiAVggcm01ODxrEhO8x6ZsfdhiiZd-e8Qvww0z-C_jlm-rCoICWCAuLB7-RZv_qA5elyMAWDQZUTQXpR20Y-HyHOel7EsCxgNYIJE9tUTIRvZt8NJSmI4-j0NzqKUtt2DBYQZ9CpoC8o64bWRldmljZUtleUluZm-5AAFpZGV2aWNlS2V5pAECIAEhWCB1WBBG2WGAzEWzM4UUUpcGFiJxtCI6sRp_o0SaMJhnNSJYIDDCu4r2F0N8khrP-Hww23HaQTW4X_-bXYwMED_orB7UZ2RvY1R5cGVxb3JnLmV1LnVuaXZlcnNpdHlsdmFsaWRpdHlJbmZvuQAEZnNpZ25lZMB0MjAyNC0xMC0zMFQxMTowMDoyMFppdmFsaWRGcm9twHQyMDI0LTEwLTMwVDExOjAwOjIwWmp2YWxpZFVudGlswHQyMDI1LTEwLTMwVDExOjAwOjIwWm5leHBlY3RlZFVwZGF0ZfdYQNiBC_noBzIuL0HdBNCe5GWNKQ07GbRc1Kn0yQ2NE4qY6PbPzd3O4UAaTpeqHclMbHOoAJssSAbxIEooKan-vXI' +const mdocBase64UrlUniversityPresentation = + 'uQADZ3ZlcnNpb25jMS4waWRvY3VtZW50c4GjZ2RvY1R5cGVxb3JnLmV1LnVuaXZlcnNpdHlsaXNzdWVyU2lnbmVkuQACam5hbWVTcGFjZXOhd2V1LmV1cm9wYS5lYy5ldWRpLnBpZC4xgtgYWGGkaGRpZ2VzdElEAnFlbGVtZW50SWRlbnRpZmllcmRuYW1lbGVsZW1lbnRWYWx1ZWhKb2huIERvZWZyYW5kb21YICTUPEzNlBwbcWWOXijZrs4Ed37zoxDCKJYvv0qKtpuv2BhYY6RoZGlnZXN0SUQBcWVsZW1lbnRJZGVudGlmaWVyZmRlZ3JlZWxlbGVtZW50VmFsdWVoYmFjaGVsb3JmcmFuZG9tWCC6uRVoNoBBcj5b-IEDTCUFoNEGVGsMSZP-3YuMUVCKrGppc3N1ZXJBdXRohEOhASaiBFgxekRuYWV0bk5naHRrNHk1VzFDNGpBM3E4VmRYbzhlUzNpWWViRm5MR3I3ZlhTYVVUNhghgVj8MIH5MIGgoAMCAQICEF36OiPSysIvMaLWuTCava8wCgYIKoZIzj0EAwIwDTELMAkGA1UEBhMCREUwHhcNMjQxMDMwMTI1ODQ0WhcNMjUxMDMwMTI1ODQ0WjANMQswCQYDVQQGEwJERTA5MBMGByqGSM49AgEGCCqGSM49AwEHAyIAA6VBlDzOG438-hsPWMSY56vJWrz8m5OaIimg0rG0vY6towIwADAKBggqhkjOPQQDAgNIADBFAiBc_30LjkQFX9YxWUyYH5jFK4Smw2h4KKYU85BBH2xDTAIhAKqb7RwT5_qoVJNYcom0x3N1eVd49TuPZfkbNaZsmhi5WQHd2BhZAdi5AAZndmVyc2lvbmMxLjBvZGlnZXN0QWxnb3JpdGhtZ1NIQS0yNTZsdmFsdWVEaWdlc3RzoXdldS5ldXJvcGEuZWMuZXVkaS5waWQuMaQAWCDrF96Sw8aHk1fZ8B92ZQE7I37MHjVSDoEq4MGhHuMIcwFYIAEsfqF7G_6k-lw2NKPRwHlWSalgrYsbXdcqz1ghPa-nAlggGq9DTWd1xmO8O84B0PCKhtf0daiT34V4xkU-wSGHYUwDWCDX5TNczi_TZSwmJ1VVeEzXpKXR9eweibocvAfpmKHEU21kZXZpY2VLZXlJbmZvuQABaWRldmljZUtleaQBAiABIVggN4_nyaOESmuHV8xhsUl2VqxaF83kIraAc2GV7M2-BKEiWCC0GqqvYnJ6U12ccZVDAOH8CeNGs9oOAF46jXJfauTSO2dkb2NUeXBlcW9yZy5ldS51bml2ZXJzaXR5bHZhbGlkaXR5SW5mb7kABGZzaWduZWTAdDIwMjQtMTAtMzBUMTI6NTg6NDRaaXZhbGlkRnJvbcB0MjAyNC0xMC0zMFQxMjo1ODo0NFpqdmFsaWRVbnRpbMB0MjAyNS0xMC0zMFQxMjo1ODo0NFpuZXhwZWN0ZWRVcGRhdGX3WEC3VoysIcxum_HtX5OCFEA3BwzhHcYmESJDzY58vz0Ez7Zo3fmP3D0M8evzMk7_Cz7_hwVL8sdLgiKpho5UXrunbGRldmljZVNpZ25lZLkAAmpuYW1lU3BhY2Vz2BhDuQAAamRldmljZUF1dGi5AAJvZGV2aWNlU2lnbmF0dXJlhEOhASag91hA9peGbzwyivN7UXvk4smItYMdt-RvcU87ZvXdDfRqIQsWSxGLcke2lHcit77fIEAw_8w0MOzM7ObQWK3T4vTMl2lkZXZpY2VNYWP3ZnN0YXR1cwA' + +const sdJwt = + 'eyJ0eXAiOiJ2YytzZC1qd3QiLCJhbGciOiJFZERTQSIsImtpZCI6IiN6Nk1rcnpRUEJyNHB5cUM3NzZLS3RyejEzU2NoTTVlUFBic3N1UHVRWmI1dDR1S1EifQ.eyJ2Y3QiOiJPcGVuQmFkZ2VDcmVkZW50aWFsIiwiZGVncmVlIjoiYmFjaGVsb3IiLCJjbmYiOnsia2lkIjoiZGlkOmtleTp6Nk1rcEdSNGdzNFJjM1pwaDR2ajh3Um5qbkF4Z0FQU3hjUjhNQVZLdXRXc3BRemMjejZNa3BHUjRnczRSYzNacGg0dmo4d1Juam5BeGdBUFN4Y1I4TUFWS3V0V3NwUXpjIn0sImlzcyI6ImRpZDprZXk6ejZNa3J6UVBCcjRweXFDNzc2S0t0cnoxM1NjaE01ZVBQYnNzdVB1UVpiNXQ0dUtRIiwiaWF0IjoxNzMwMjkzMTIzLCJfc2QiOlsiVEtuSUJwVGp3ZmpVdFZra3ZBUWNrSDZxSEZFbmFsb1ZtZUF6UmlzZlNNNCIsInRLTFAxWFM3Vm55YkJET2ZWV3hTMVliNU5TTjhlMVBDMHFqRnBnbjd5XzgiXSwiX3NkX2FsZyI6InNoYS0yNTYifQ.GhgxbTA_cLZ6-enpOrTRqhIoZEzJoJMSQeutQdhcIayhiem9yd8i0x-h6NhQbN1NrNPwi-JQhy5lpNopVia_AA~WyI3NDU5ODc1MjgyODgyMTY5MjY3NTk1MTgiLCJ1bml2ZXJzaXR5IiwiaW5uc2JydWNrIl0~' + +function getPresentationDefinitionV2(withSdJwtInputDescriptor = false): PresentationDefinitionV2 { + const pd: PresentationDefinitionV2 = { + id: 'mDL-sample-req', + input_descriptors: [ + { + id: 'org.eu.university', + format: { + mso_mdoc: { + alg: ['ES256', 'ES384', 'ES512', 'EdDSA', 'ESB256', 'ESB320', 'ESB384', 'ESB512'], + }, + }, + constraints: { + fields: [ + { + path: ["$['eu.europa.ec.eudi.pid.1']['name']"], + intent_to_retain: false, + }, + { + path: ["$['eu.europa.ec.eudi.pid.1']['degree']"], + intent_to_retain: false, + }, + ], + limit_disclosure: 'required', + }, + }, + ], + } + + if (withSdJwtInputDescriptor) { + pd.input_descriptors.push({ + id: 'OpenBadgeCredentialDescriptor', + format: { + 'vc+sd-jwt': { + 'sd-jwt_alg_values': ['EdDSA'], + }, + }, + constraints: { + limit_disclosure: 'required', + fields: [ + { + path: ['$.vct'], + filter: { + type: 'string', + const: 'OpenBadgeCredential', + }, + }, + { + path: ['$.university'], + }, + ], + }, + }) + } + + return pd +} + +function getVCs(): OriginalVerifiableCredential[] { + return [sdJwt, mdocBase64UrlUniversity] +} + +describe('mdoc RP and OP interaction should', () => { + it('succeed when calling with presentation definitions and right verifiable presentation without id token', async () => { + const opMockEntity = await mockedGetEnterpriseAuthToken('OP') + const rpMockEntity = await mockedGetEnterpriseAuthToken('RP') + + const presentationVerificationCallback: PresentationVerificationCallback = async (presentation) => { + // higher level library needs to implement actual verification + return { verified: presentation === mdocBase64UrlUniversityPresentation } + } + + const resolver = getResolver('ethr') + const rp = RP.builder({ + requestVersion: SupportedVersion.SIOPv2_D12_OID4VP_D18, + }) + .withClientId(rpMockEntity.did) + .withHasher(pexHasher) + .withResponseType([ResponseType.VP_TOKEN]) + .withRedirectUri(EXAMPLE_REDIRECT_URL) + .withPresentationDefinition({ definition: getPresentationDefinitionV2() }, [ + PropertyTarget.REQUEST_OBJECT, + PropertyTarget.AUTHORIZATION_REQUEST, + ]) + .withPresentationVerification(presentationVerificationCallback) + .withRevocationVerification(RevocationVerification.NEVER) + .withRequestBy(PassBy.VALUE) + .withCreateJwtCallback(internalSignature(rpMockEntity.hexPrivateKey, rpMockEntity.did, `${rpMockEntity.did}#controller`, SigningAlgo.ES256K)) + .withVerifyJwtCallback(getVerifyJwtCallback(resolver)) + .withAuthorizationEndpoint('www.myauthorizationendpoint.com') + .withClientMetadata({ + client_id: WELL_KNOWN_OPENID_FEDERATION, + idTokenSigningAlgValuesSupported: [SigningAlgo.EDDSA], + requestObjectSigningAlgValuesSupported: [SigningAlgo.EDDSA, SigningAlgo.ES256], + responseTypesSupported: [ResponseType.VP_TOKEN], + vpFormatsSupported: { jwt_vc: { alg: [SigningAlgo.EDDSA] } }, + subjectTypesSupported: [SubjectType.PAIRWISE], + subject_syntax_types_supported: ['did', 'did:key'], + passBy: PassBy.VALUE, + }) + .withSupportedVersions(SupportedVersion.SIOPv2_ID1) + .build() + const op = OP.builder() + .withPresentationSignCallback(sdJwtVcPresentationSignCallback) + .withExpiresIn(1000) + .withHasher(pexHasher) + .withCreateJwtCallback(internalSignature(opMockEntity.hexPrivateKey, opMockEntity.did, `${opMockEntity.did}#controller`, SigningAlgo.ES256K)) + .withVerifyJwtCallback(getVerifyJwtCallback(resolver)) + .withRegistration({ + authorizationEndpoint: 'www.myauthorizationendpoint.com', + idTokenSigningAlgValuesSupported: [SigningAlgo.EDDSA], + issuer: ResponseIss.SELF_ISSUED_V2, + requestObjectSigningAlgValuesSupported: [SigningAlgo.EDDSA, SigningAlgo.ES256], + responseTypesSupported: [ResponseType.ID_TOKEN, ResponseType.VP_TOKEN], + vpFormats: { jwt_vc: { alg: [SigningAlgo.EDDSA] } }, + scopesSupported: [Scope.OPENID_DIDAUTHN, Scope.OPENID], + subjectTypesSupported: [SubjectType.PAIRWISE], + subject_syntax_types_supported: [], + passBy: PassBy.VALUE, + }) + .withSupportedVersions(SupportedVersion.SIOPv2_ID1) + .build() + + const requestURI = await rp.createAuthorizationRequestURI({ + correlationId: '1234', + nonce: 'qBrR7mqnY3Qr49dAZycPF8FzgE83m6H0c2l0bzP4xSg', + state: 'b32f0087fc9816eb813fd11f', + jwtIssuer: { method: 'did', alg: SigningAlgo.ES256K, didUrl: `${rpMockEntity.did}#controller` }, + }) + + // Let's test the parsing + const parsedAuthReqURI = await op.parseAuthorizationRequestURI(requestURI.encodedUri) + expect(parsedAuthReqURI.authorizationRequestPayload).toBeDefined() + expect(parsedAuthReqURI.requestObjectJwt).toBeDefined() + + if (!parsedAuthReqURI.requestObjectJwt) throw new Error('requestObjectJwt is undefined') + const verifiedAuthReqWithJWT = await op.verifyAuthorizationRequest(parsedAuthReqURI.requestObjectJwt) + expect(verifiedAuthReqWithJWT.issuer).toMatch(rpMockEntity.did) + const pex = new PresentationExchange({ + allDIDs: [HOLDER_DID], + allVerifiableCredentials: getVCs(), + hasher: pexHasher, + }) + const pd: PresentationDefinitionWithLocation[] = await PresentationExchange.findValidPresentationDefinitions( + parsedAuthReqURI.authorizationRequestPayload, + ) + const results = await pex.selectVerifiableCredentialsForSubmission(pd[0].definition) + expect(results).toEqual({ + errors: [], + matches: [ + { + name: 'org.eu.university', + rule: 'all', + vc_path: ['$.verifiableCredential[0]'], + type: 'InputDescriptor', + id: 'org.eu.university', + }, + ], + areRequiredCredentialsPresent: 'info', + verifiableCredential: [mdocBase64UrlUniversity], + warnings: [], + vcIndexes: [1], + }) + + // NOTE: for now we don't support creating mdoc presentations yes, so we mock that part. + // Will be added in a follow up PR (need to extend PEX first) + const presentationResult = new PEX().evaluatePresentation(pd[0].definition, mdocBase64UrlUniversityPresentation, { + generatePresentationSubmission: true, + }) + expect(presentationResult).toEqual({ + areRequiredCredentialsPresent: 'info', + errors: [], + presentations: [mdocBase64UrlUniversityPresentation], + value: { + definition_id: 'mDL-sample-req', + descriptor_map: [ + { + format: 'mso_mdoc', + id: 'org.eu.university', + path: '$', + }, + ], + id: expect.any(String), + }, + warnings: [], + }) + + const authenticationResponseWithJWT = await op.createAuthorizationResponse(verifiedAuthReqWithJWT, { + jwtIssuer: { + method: 'did', + alg: SigningAlgo.ES256K, + didUrl: `${rpMockEntity.did}#controller`, + }, + presentationExchange: { + verifiablePresentations: [mdocBase64UrlUniversityPresentation], + vpTokenLocation: VPTokenLocation.AUTHORIZATION_RESPONSE, + presentationSubmission: presentationResult.value, + }, + }) + expect(authenticationResponseWithJWT.response.payload).toBeDefined() + expect(authenticationResponseWithJWT.response.idToken).toBeUndefined() + + const verifiedAuthResponseWithJWT = await rp.verifyAuthorizationResponse(authenticationResponseWithJWT.response.payload, { + presentationDefinitions: [{ definition: pd[0].definition, location: pd[0].location }], + }) + + // Cannot extract nonce, should be handled by the verification callback that verifies + // session transcript, until device response parsing is fixed + expect(verifiedAuthResponseWithJWT.oid4vpSubmission?.nonce).toEqual(undefined) + expect(verifiedAuthResponseWithJWT.idToken).toBeUndefined() + }) +}) diff --git a/packages/siop-oid4vp/lib/__tests__/PresentationExchange.spec.ts b/packages/siop-oid4vp/lib/__tests__/PresentationExchange.spec.ts index 8e87471e..8d69fd5b 100644 --- a/packages/siop-oid4vp/lib/__tests__/PresentationExchange.spec.ts +++ b/packages/siop-oid4vp/lib/__tests__/PresentationExchange.spec.ts @@ -461,7 +461,9 @@ describe('presentation exchange manager tests', () => { const verifiablePresentationResult = await pex.createVerifiablePresentation(pd[0].definition, vcs, presentationSignCallback, {}) await PresentationExchange.validatePresentationsAgainstDefinitions( pd, - verifiablePresentationResult.verifiablePresentations.map(verifiablePresentation => CredentialMapper.toWrappedVerifiablePresentation(verifiablePresentation)), + verifiablePresentationResult.verifiablePresentations.map((verifiablePresentation) => + CredentialMapper.toWrappedVerifiablePresentation(verifiablePresentation), + )[0], undefined, { presentationSubmission: verifiablePresentationResult.presentationSubmission, @@ -524,7 +526,7 @@ describe('presentation exchange manager tests', () => { }, ), ).rejects.toThrow( - 'Could not find VerifiableCredentials matching presentationDefinition object in the provided VC list, details: [{"status":"error","tag":"SubmissionDoesNotSatisfyDefinition","message":"Expected all input descriptors (2) to be satisfifed in submission, but found 1. Missing wa_driver_license"}]', + `message: Could not find VerifiableCredentials matching presentationDefinition object in the provided VC list, details: [{"status":"error","tag":"SubmissionDoesNotSatisfyDefinition","message":"Expected all input descriptors ('wa_driver_license', 'ca_driver_license') to be satisfied in submission, but found 'ca_driver_license'. Missing 'wa_driver_license'"}]`, ) }) @@ -551,7 +553,9 @@ describe('presentation exchange manager tests', () => { await expect( PresentationExchange.validatePresentationsAgainstDefinitions( pd, - verifiablePresentationResult.verifiablePresentations.map(verifiablePresentation => CredentialMapper.toWrappedVerifiablePresentation(verifiablePresentation)), + verifiablePresentationResult.verifiablePresentations.map((verifiablePresentation) => + CredentialMapper.toWrappedVerifiablePresentation(verifiablePresentation), + )[0], () => { throw new Error('Verification failed') }, diff --git a/packages/siop-oid4vp/lib/__tests__/e2e/mattr.launchpad.spec.ts b/packages/siop-oid4vp/lib/__tests__/e2e/mattr.launchpad.spec.ts index 6f2a53bc..f916e415 100644 --- a/packages/siop-oid4vp/lib/__tests__/e2e/mattr.launchpad.spec.ts +++ b/packages/siop-oid4vp/lib/__tests__/e2e/mattr.launchpad.spec.ts @@ -254,6 +254,5 @@ async function presentationSignCalback(args: PresentationSignCallBackParams): Pr .setExpirationTime('2h') .sign(importedJwk) - console.log(`VP: ${jwt}`) return jwt } diff --git a/packages/siop-oid4vp/lib/authorization-response/AuthorizationResponse.ts b/packages/siop-oid4vp/lib/authorization-response/AuthorizationResponse.ts index 9904fd9d..578bc295 100644 --- a/packages/siop-oid4vp/lib/authorization-response/AuthorizationResponse.ts +++ b/packages/siop-oid4vp/lib/authorization-response/AuthorizationResponse.ts @@ -1,29 +1,19 @@ -import { CredentialMapper, Hasher } from '@sphereon/ssi-types'; +import { CredentialMapper, Hasher } from '@sphereon/ssi-types' -import { AuthorizationRequest, VerifyAuthorizationRequestOpts } from '../authorization-request'; -import { assertValidVerifyAuthorizationRequestOpts } from '../authorization-request/Opts'; -import { IDToken } from '../id-token'; -import { - AuthorizationResponsePayload, - ResponseType, - SIOPErrors, - VerifiedAuthorizationRequest, - VerifiedAuthorizationResponse -} from '../types'; +import { AuthorizationRequest, VerifyAuthorizationRequestOpts } from '../authorization-request' +import { assertValidVerifyAuthorizationRequestOpts } from '../authorization-request/Opts' +import { IDToken } from '../id-token' +import { AuthorizationResponsePayload, ResponseType, SIOPErrors, VerifiedAuthorizationRequest, VerifiedAuthorizationResponse } from '../types' import { assertValidVerifiablePresentations, extractNonceFromWrappedVerifiablePresentation, - extractPresentationsFromAuthorizationResponse, - verifyPresentations -} from './OpenID4VP'; -import { assertValidResponseOpts } from './Opts'; -import { createResponsePayload } from './Payload'; -import { - AuthorizationResponseOpts, - PresentationDefinitionWithLocation, - VerifyAuthorizationResponseOpts -} from './types'; + extractPresentationsFromVpToken, + verifyPresentations, +} from './OpenID4VP' +import { assertValidResponseOpts } from './Opts' +import { createResponsePayload } from './Payload' +import { AuthorizationResponseOpts, PresentationDefinitionWithLocation, VerifyAuthorizationResponseOpts } from './types' export class AuthorizationResponse { private readonly _authorizationRequest?: AuthorizationRequest | undefined @@ -134,9 +124,11 @@ export class AuthorizationResponse { }) if (hasVpToken) { - const wrappedPresentations = await extractPresentationsFromAuthorizationResponse(response, { - hasher: verifyOpts.hasher, - }) + const wrappedPresentations = response.payload.vp_token + ? await extractPresentationsFromVpToken(response.payload.vp_token, { + hasher: verifyOpts.hasher, + }) + : [] await assertValidVerifiablePresentations({ presentationDefinitions, @@ -144,9 +136,9 @@ export class AuthorizationResponse { verificationCallback: verifyOpts.verification.presentationVerificationCallback, opts: { ...responseOpts.presentationExchange, - hasher: verifyOpts.hasher - } - }); + hasher: verifyOpts.hasher, + }, + }) } return response @@ -167,18 +159,17 @@ export class AuthorizationResponse { // Gather all nonces const allNonces = new Set() - if (oid4vp) allNonces.add(oid4vp.nonce) + if (oid4vp && oid4vp.nonce) allNonces.add(oid4vp.nonce) if (verifiedIdToken) allNonces.add(verifiedIdToken.payload.nonce) if (merged.nonce) allNonces.add(merged.nonce) - if (allNonces.size === 0) { - throw new Error('both id token and VPs in vp token if present must have a nonce, no nonces were found') - } + // We only verify the nonce if there is one. We handle the case if the nonce is undefined + // but it should be defined elsewhere. So if the nonce is undefined we don't have to verify it const firstNonce = Array.from(allNonces)[0] - if (allNonces.size !== 1 || typeof firstNonce !== 'string') { + if (allNonces.size > 1) { throw new Error('both id token and VPs in vp token if present must have a nonce, and all nonces must be the same') } - if (verifyOpts.nonce && firstNonce !== verifyOpts.nonce) { + if (verifyOpts.nonce && firstNonce && firstNonce !== verifyOpts.nonce) { throw Error(SIOPErrors.BAD_NONCE) } @@ -222,21 +213,17 @@ export class AuthorizationResponse { public async mergedPayloads(opts?: { consistencyCheck?: boolean; hasher?: Hasher }): Promise { let nonce: string | undefined = this._payload.nonce if (this._payload?.vp_token) { - const presentations = await extractPresentationsFromAuthorizationResponse(this, opts) + const presentations = this.payload.vp_token ? await extractPresentationsFromVpToken(this.payload.vp_token, opts) : [] const presentationsArray = Array.isArray(presentations) ? presentations : [presentations] // We do not verify them, as that is done elsewhere. So we simply can take the first nonce - nonce = presentationsArray // FIXME toWrappedVerifiablePresentation() does not extract the nonce yet from mdocs. - // Either it's not availble or we or not reading the SessionTranscript yet - .filter(presentation => !CredentialMapper.isWrappedMdocPresentation(presentation)) + // However the nonce is validated as part of the mdoc verification process (using the session transcript bytes) + // Once it is available we can also test it here, but it will be verified elsewhre as well + .filter((presentation) => !CredentialMapper.isWrappedMdocPresentation(presentation)) .map(extractNonceFromWrappedVerifiablePresentation) - .find(nonce => nonce !== undefined); - - if(!nonce && !this._idToken && presentationsArray.some(presentation => CredentialMapper.isWrappedMdocPresentation(presentation))) { - nonce = 'mdoc' // FIXME toWrappedVerifiablePresentation() does not extract the nonce yet from mdocs. - } + .find((nonce) => nonce !== undefined) } const idTokenPayload = await this.idToken?.payload() diff --git a/packages/siop-oid4vp/lib/authorization-response/OpenID4VP.ts b/packages/siop-oid4vp/lib/authorization-response/OpenID4VP.ts index 09f15db6..27fb6edd 100644 --- a/packages/siop-oid4vp/lib/authorization-response/OpenID4VP.ts +++ b/packages/siop-oid4vp/lib/authorization-response/OpenID4VP.ts @@ -2,6 +2,7 @@ import { parseJWT } from '@sphereon/oid4vc-common' import { IPresentationDefinition, PEX, PresentationSubmissionLocation } from '@sphereon/pex' import { Format } from '@sphereon/pex-models' import { + CompactSdJwtVc, CredentialMapper, Hasher, IVerifiablePresentation, @@ -69,7 +70,9 @@ export const verifyPresentations = async ( authorizationResponse: AuthorizationResponse, verifyOpts: VerifyAuthorizationResponseOpts, ): Promise => { - const presentations = await extractPresentationsFromAuthorizationResponse(authorizationResponse, { hasher: verifyOpts.hasher }) + const presentations = authorizationResponse.payload.vp_token + ? await extractPresentationsFromVpToken(authorizationResponse.payload.vp_token, { hasher: verifyOpts.hasher }) + : [] const presentationDefinitions = verifyOpts.presentationDefinitions ? Array.isArray(verifyOpts.presentationDefinitions) ? verifyOpts.presentationDefinitions @@ -102,19 +105,15 @@ export const verifyPresentations = async ( const presentationsArray = Array.isArray(presentations) ? presentations : [presentations] - const nonces = new Set(presentationsArray.map(extractNonceFromWrappedVerifiablePresentation)) - if (presentationsArray.length > 0 && nonces.size !== 1) { - throw Error(`${nonces.size} nonce values found for ${presentationsArray.length}. Should be 1`) + const presentationsWithoutMdoc = presentationsArray.filter((p) => p.format !== 'mso_mdoc') + const nonces = new Set(presentationsWithoutMdoc.map(extractNonceFromWrappedVerifiablePresentation)) + if (presentationsWithoutMdoc.length > 0 && nonces.size !== 1) { + throw Error(`${nonces.size} nonce values found for ${presentationsWithoutMdoc.length}. Should be 1`) } - // Nonce may be undefined - let nonce = Array.from(nonces)[0] - if(presentationsArray.some(presentation => presentation.format === 'mso_mdoc')) { // FIXME Funke - verifyOpts.nonce = 'mdoc' - nonce = "mdoc" // TODO extract nonce from mdoc session - } - - if (typeof nonce !== 'string') { + // Nonce may be undefined in case there's only mdoc presentations (verified differently) + const nonce = Array.from(nonces)[0] as string | undefined + if (presentationsWithoutMdoc.length > 0 && typeof nonce !== 'string') { throw new Error('Expected all presentations to contain a nonce value') } @@ -132,17 +131,14 @@ export const verifyPresentations = async ( return { nonce, presentations: presentationsArray, presentationDefinitions, submissionData: presentationSubmission } } -export const extractPresentationsFromAuthorizationResponse = async ( - response: AuthorizationResponse, +export const extractPresentationsFromVpToken = async ( + vpToken: Array | W3CVerifiablePresentation | CompactSdJwtVc | string, opts?: { hasher?: Hasher }, ): Promise => { - if (!response.payload.vp_token) return [] - - if (Array.isArray(response.payload.vp_token)) { - return response.payload.vp_token.map((vp) => CredentialMapper.toWrappedVerifiablePresentation(vp, { hasher: opts?.hasher })) + if (Array.isArray(vpToken)) { + return vpToken.map((vp) => CredentialMapper.toWrappedVerifiablePresentation(vp, { hasher: opts?.hasher })) } - - return CredentialMapper.toWrappedVerifiablePresentation(response.payload.vp_token, { hasher: opts?.hasher }) + return CredentialMapper.toWrappedVerifiablePresentation(vpToken, { hasher: opts?.hasher }) } export const createPresentationSubmission = async ( verifiablePresentations: W3CVerifiablePresentation[], @@ -266,7 +262,7 @@ export const putPresentationSubmissionInLocation = async ( } responsePayload.vp_token = - resOpts.presentationExchange?.verifiablePresentations.length === 1 + resOpts.presentationExchange?.verifiablePresentations.length === 1 && submissionData.descriptor_map[0]?.path === '$' ? resOpts.presentationExchange.verifiablePresentations[0] : resOpts.presentationExchange?.verifiablePresentations } @@ -284,11 +280,9 @@ export const assertValidVerifiablePresentations = async (args: { } }) => { const presentationsArray = Array.isArray(args.presentations) ? args.presentations : [args.presentations] - const nrOfMdocsPresentations = presentationsArray.filter(presentation => presentation.format === 'mso_mdoc').length - const presentationsWithFormat = presentationsArray.filter(presentation => presentation.format !== 'mso_mdoc') if ( (!args.presentationDefinitions || args.presentationDefinitions.filter((a) => a.definition).length === 0) && - (!presentationsWithFormat || (Array.isArray(presentationsWithFormat) && presentationsWithFormat.filter((vp) => vp.presentation).length === 0)) + (!presentationsArray || (Array.isArray(presentationsArray) && presentationsArray.filter((vp) => vp.presentation).length === 0)) ) { return } @@ -297,23 +291,21 @@ export const assertValidVerifiablePresentations = async (args: { if ( args.presentationDefinitions && args.presentationDefinitions.length && - (!presentationsWithFormat || (Array.isArray(presentationsWithFormat) && presentationsWithFormat.length === 0)) + (!presentationsArray || (Array.isArray(presentationsArray) && presentationsArray.length === 0)) ) { - if(nrOfMdocsPresentations === 0) { // We don't want to crash when processing mdoc credentials - throw new Error(SIOPErrors.AUTH_REQUEST_EXPECTS_VP) - } + throw new Error(SIOPErrors.AUTH_REQUEST_EXPECTS_VP) } else if ( (!args.presentationDefinitions || args.presentationDefinitions.length === 0) && - presentationsWithFormat && - ((Array.isArray(presentationsWithFormat) && presentationsWithFormat.length > 0) || !Array.isArray(presentationsWithFormat)) + presentationsArray && + ((Array.isArray(presentationsArray) && presentationsArray.length > 0) || !Array.isArray(presentationsArray)) ) { throw new Error(SIOPErrors.AUTH_REQUEST_DOESNT_EXPECT_VP) } else if (args.presentationDefinitions && !args.opts.presentationSubmission) { throw new Error(`No presentation submission present. Please use presentationSubmission opt argument!`) - } else if (args.presentationDefinitions && presentationsWithFormat) { + } else if (args.presentationDefinitions && presentationsArray) { await PresentationExchange.validatePresentationsAgainstDefinitions( args.presentationDefinitions, - presentationsWithFormat, + args.presentations, args.verificationCallback, args.opts, ) diff --git a/packages/siop-oid4vp/lib/authorization-response/PresentationExchange.ts b/packages/siop-oid4vp/lib/authorization-response/PresentationExchange.ts index 882dade5..18764cb1 100644 --- a/packages/siop-oid4vp/lib/authorization-response/PresentationExchange.ts +++ b/packages/siop-oid4vp/lib/authorization-response/PresentationExchange.ts @@ -8,14 +8,9 @@ import { Validated, VerifiablePresentationFromOpts, VerifiablePresentationResult, -} from '@sphereon/pex'; -import { PresentationEvaluationResults } from '@sphereon/pex/dist/main/lib/evaluation'; -import { - Format, - PresentationDefinitionV1, - PresentationDefinitionV2, - PresentationSubmission -} from '@sphereon/pex-models'; +} from '@sphereon/pex' +import { PresentationEvaluationResults } from '@sphereon/pex/dist/main/lib/evaluation' +import { Format, PresentationDefinitionV1, PresentationDefinitionV2, PresentationSubmission } from '@sphereon/pex-models' import { CredentialMapper, Hasher, @@ -24,18 +19,18 @@ import { OriginalVerifiableCredential, OriginalVerifiablePresentation, W3CVerifiablePresentation, - WrappedVerifiablePresentation -} from '@sphereon/ssi-types'; + WrappedVerifiablePresentation, +} from '@sphereon/ssi-types' -import { extractDataFromPath, getWithUrl } from '../helpers'; -import { AuthorizationRequestPayload, SIOPErrors, SupportedVersion } from '../types'; +import { extractDataFromPath, getWithUrl } from '../helpers' +import { AuthorizationRequestPayload, SIOPErrors, SupportedVersion } from '../types' import { PresentationDefinitionLocation, PresentationDefinitionWithLocation, PresentationSignCallback, - PresentationVerificationCallback -} from './types'; + PresentationVerificationCallback, +} from './types' export class PresentationExchange { readonly pex: PEX @@ -82,14 +77,14 @@ export class PresentationExchange { keyEncoding: options?.signatureOptions?.keyEncoding ?? KeyEncoding.Hex, }, } - + // When there are MDoc credentials among the selected ones, filter those out as pex does not support mdoc credentials - const filteredCredentials = this.removeMDocCredentials(selectedCredentials) + const filteredCredentials = this.removeMDocCredentials(selectedCredentials) return await this.pex.verifiablePresentationFrom(presentationDefinition, filteredCredentials, presentationSignCallback, signOptions) } private removeMDocCredentials(selectedCredentials: OriginalVerifiableCredential[]) { - return selectedCredentials.filter(vc => !CredentialMapper.isMsoMdocDecodedCredential(vc) && !CredentialMapper.isMsoMdocDecodedCredential(vc)); + return selectedCredentials.filter((vc) => !CredentialMapper.isMsoMdocDecodedCredential(vc) && !CredentialMapper.isMsoMdocOid4VPEncoded(vc)) } /** @@ -116,10 +111,8 @@ export class PresentationExchange { } else if (!this.allVerifiableCredentials || this.allVerifiableCredentials.length == 0) { throw new Error(`${SIOPErrors.COULD_NOT_FIND_VCS_MATCHING_PD}, no VCs were provided`) } - // When there are MDoc credentials among the selected ones, filter those out as pex does not support mdoc credentials - const filteredCredentials = this.removeMDocCredentials(this.allVerifiableCredentials) - const selectResults: SelectResults = this.pex.selectFrom(presentationDefinition, filteredCredentials, { + const selectResults: SelectResults = this.pex.selectFrom(presentationDefinition, this.allVerifiableCredentials, { ...opts, holderDIDs: opts?.holderDIDs ?? this.allDIDs, // fixme limited disclosure @@ -163,15 +156,8 @@ export class PresentationExchange { ) { throw new Error(SIOPErrors.NO_VERIFIABLE_PRESENTATION_NO_CREDENTIALS) } - if (CredentialMapper.isWrappedMdocPresentation(wvp)) { - throw new Error('MDoc credentials are not supported by PEX') // TODO to SIOPErrors? - } - // console.log(`Presentation (validate): ${JSON.stringify(verifiablePresentation)}`); - const evaluationResults: PresentationEvaluationResults = new PEX({ hasher: opts?.hasher }).evaluatePresentation( - presentationDefinition, - wvp.original, - opts, - ) + + const evaluationResults = new PEX({ hasher: opts?.hasher }).evaluatePresentation(presentationDefinition, wvp.original, opts) if (evaluationResults.errors?.length) { throw new Error(`message: ${SIOPErrors.COULD_NOT_FIND_VCS_MATCHING_PD}, details: ${JSON.stringify(evaluationResults.errors)}`) } @@ -357,7 +343,8 @@ export class PresentationExchange { if (opts?.presentationSubmission) { evaluationResults = pex.evaluatePresentation( definition, - vpPayloadsArray.map((wvp) => wvp.original), + // It's important the structure matches what we received so it can be correctly matched against the submission + Array.isArray(vpPayloads) ? vpPayloads.map((wvp) => wvp.original) : vpPayloads.original, { ...opts, presentationSubmissionLocation: PresentationSubmissionLocation.EXTERNAL, @@ -365,11 +352,6 @@ export class PresentationExchange { ) } else { for (const wvp of vpPayloadsArray) { - // Check for MDoc presentations - if (CredentialMapper.isWrappedMdocPresentation(wvp)) { - throw new Error(SIOPErrors.MDOC_CREDENTIALS_NOT_SUPPORTED) - } - if (CredentialMapper.isWrappedW3CVerifiablePresentation(wvp) && wvp.presentation.presentation_submission) { const presentationSubmission = wvp.presentation.presentation_submission evaluationResults = pex.evaluatePresentation(definition, wvp.original, { @@ -389,7 +371,11 @@ export class PresentationExchange { throw new Error(SIOPErrors.NO_PRESENTATION_SUBMISSION) } - if (evaluationResults.areRequiredCredentialsPresent === Status.ERROR || (evaluationResults.errors && evaluationResults.errors.length > 0) || !evaluationResults.value) { + if ( + evaluationResults.areRequiredCredentialsPresent === Status.ERROR || + (evaluationResults.errors && evaluationResults.errors.length > 0) || + !evaluationResults.value + ) { throw new Error(`message: ${SIOPErrors.COULD_NOT_FIND_VCS_MATCHING_PD}, details: ${JSON.stringify(evaluationResults.errors)}`) } @@ -410,8 +396,7 @@ export class PresentationExchange { const verificationResult = await verifyPresentationCallback(presentation as W3CVerifiablePresentation, evaluationResults.value!) if (!verificationResult.verified) { throw new Error( - SIOPErrors.VERIFIABLE_PRESENTATION_SIGNATURE_NOT_VALID + - (verificationResult.reason ? `. ${verificationResult.reason}` : ''), + SIOPErrors.VERIFIABLE_PRESENTATION_SIGNATURE_NOT_VALID + (verificationResult.reason ? `. ${verificationResult.reason}` : ''), ) } } catch (error: unknown) { diff --git a/packages/siop-oid4vp/lib/authorization-response/types.ts b/packages/siop-oid4vp/lib/authorization-response/types.ts index 259b03fb..9ec19ddc 100644 --- a/packages/siop-oid4vp/lib/authorization-response/types.ts +++ b/packages/siop-oid4vp/lib/authorization-response/types.ts @@ -1,7 +1,14 @@ import { JwtIssuer } from '@sphereon/oid4vc-common' import { IPresentationDefinition, PresentationSignCallBackParams } from '@sphereon/pex' import { Format } from '@sphereon/pex-models' -import { CompactSdJwtVc, Hasher, PresentationSubmission, W3CVerifiablePresentation } from '@sphereon/ssi-types' +import { + CompactSdJwtVc, + Hasher, + MdocOid4vpIssuerSigned, + PresentationSubmission, + W3CVerifiablePresentation, + MdocOid4vpMdocVpToken, +} from '@sphereon/ssi-types' import { ResponseMode, @@ -45,7 +52,7 @@ export interface PresentationExchangeResponseOpts { selectedCredentials: W3CVerifiableCredential[] }[],*/ - verifiablePresentations: Array + verifiablePresentations: Array vpTokenLocation?: VPTokenLocation presentationSubmission?: PresentationSubmission restrictToFormats?: Format @@ -87,7 +94,7 @@ export enum VPTokenLocation { export type PresentationVerificationResult = { verified: boolean; reason?: string } export type PresentationVerificationCallback = ( - args: W3CVerifiablePresentation | CompactSdJwtVc, + args: W3CVerifiablePresentation | CompactSdJwtVc | MdocOid4vpIssuerSigned, presentationSubmission: PresentationSubmission, ) => Promise diff --git a/packages/siop-oid4vp/lib/helpers/Encodings.ts b/packages/siop-oid4vp/lib/helpers/Encodings.ts index 27de1636..ee1c859e 100644 --- a/packages/siop-oid4vp/lib/helpers/Encodings.ts +++ b/packages/siop-oid4vp/lib/helpers/Encodings.ts @@ -102,3 +102,8 @@ export function fromBase64(base64: string): string { export function base64urlEncodeBuffer(buf: { toString: (arg0: 'base64') => string }): string { return fromBase64(buf.toString('base64')) } + +export function base64urlToString(base64url: string): string { + const uint8array = ua8.fromString(base64url, 'base64url') + return ua8.toString(uint8array, 'ascii') +} diff --git a/packages/siop-oid4vp/lib/helpers/Metadata.ts b/packages/siop-oid4vp/lib/helpers/Metadata.ts index 5320c2bf..e8ae1ef1 100644 --- a/packages/siop-oid4vp/lib/helpers/Metadata.ts +++ b/packages/siop-oid4vp/lib/helpers/Metadata.ts @@ -88,15 +88,15 @@ function supportedSubjectSyntaxTypes(rpMethods: string[] | string, opMethods: st } function collectAlgValues(algTableObject: any): string[] { - const algValues: string[] = []; + const algValues: string[] = [] for (const key of Object.keys(algTableObject)) { - algValues.push(...algTableObject[key]); + algValues.push(...algTableObject[key]) } - return algValues; + return algValues } -const isJwtFormat = (crFormat: string) => crFormat.includes('jwt') || crFormat.includes('mdoc'); +const isJwtFormat = (crFormat: string) => crFormat.includes('jwt') || crFormat.includes('mdoc') function getFormatIntersection(rpFormat: Format, opFormat: Format): Format { const intersectionFormat: Record = {} @@ -105,17 +105,17 @@ function getFormatIntersection(rpFormat: Format, opFormat: Format): Format { throw new Error(SIOPErrors.CREDENTIAL_FORMATS_NOT_SUPPORTED) } supportedCredentials.forEach(function (crFormat: string) { - const rpFormatElement = rpFormat[crFormat as keyof Format]; - const opFormatElement = opFormat[crFormat as keyof Format]; - const rpAlgs = collectAlgValues(rpFormatElement); - const opAlgs = collectAlgValues(opFormatElement); - let methodKeyRP = undefined; - let methodKeyOP = undefined; + const rpFormatElement = rpFormat[crFormat as keyof Format] + const opFormatElement = opFormat[crFormat as keyof Format] + const rpAlgs = collectAlgValues(rpFormatElement) + const opAlgs = collectAlgValues(opFormatElement) + let methodKeyRP = undefined + let methodKeyOP = undefined if (rpFormatElement !== undefined) { - Object.keys(rpFormatElement).forEach((k) => (methodKeyRP = k)); + Object.keys(rpFormatElement).forEach((k) => (methodKeyRP = k)) } if (opFormatElement !== undefined) { - Object.keys(opFormatElement).forEach((k) => (methodKeyOP = k)); + Object.keys(opFormatElement).forEach((k) => (methodKeyOP = k)) } if (methodKeyRP !== methodKeyOP) { throw new Error(SIOPErrors.CREDENTIAL_FORMATS_NOT_SUPPORTED) diff --git a/packages/siop-oid4vp/lib/helpers/Revocation.ts b/packages/siop-oid4vp/lib/helpers/Revocation.ts index 2a4eb283..ab06df80 100644 --- a/packages/siop-oid4vp/lib/helpers/Revocation.ts +++ b/packages/siop-oid4vp/lib/helpers/Revocation.ts @@ -1,13 +1,14 @@ import { - CredentialMapper, isWrappedSdJwtVerifiablePresentation, + CredentialMapper, + isWrappedSdJwtVerifiablePresentation, isWrappedW3CVerifiablePresentation, W3CVerifiableCredential, WrappedVerifiableCredential, - WrappedVerifiablePresentation -} from '@sphereon/ssi-types'; + WrappedVerifiablePresentation, +} from '@sphereon/ssi-types' import { RevocationStatus, RevocationVerification, RevocationVerificationCallback, VerifiableCredentialTypeFormat } from '../types' -import { LOG } from '../types'; +import { LOG } from '../types' export const verifyRevocation = async ( vpToken: WrappedVerifiablePresentation, @@ -24,10 +25,10 @@ export const verifyRevocation = async ( if (!revocationVerificationCallback) { throw new Error(`Revocation callback not provided`) } - + const vcs = CredentialMapper.isWrappedSdJwtVerifiablePresentation(vpToken) || CredentialMapper.isWrappedMdocPresentation(vpToken) - ? [vpToken.vcs[0]] + ? vpToken.vcs : vpToken.presentation.verifiableCredential for (const vc of vcs) { if ( @@ -36,7 +37,7 @@ export const verifyRevocation = async ( ) { const result = await revocationVerificationCallback( vc.original as W3CVerifiableCredential, - originalTypeToVerifiableCredentialTypeFormat(vc.format) + originalTypeToVerifiableCredentialTypeFormat(vc.format), ) if (result.status === RevocationStatus.INVALID) { throw new Error(`Revocation invalid for vc. Error: ${result.error}`) diff --git a/packages/siop-oid4vp/lib/rp/RP.ts b/packages/siop-oid4vp/lib/rp/RP.ts index a89b507e..d165dac2 100644 --- a/packages/siop-oid4vp/lib/rp/RP.ts +++ b/packages/siop-oid4vp/lib/rp/RP.ts @@ -6,7 +6,7 @@ import { JarmDirectPostJwtAuthResponseValidationContext, JarmDirectPostJwtResponseParams, } from '@sphereon/jarm' -import { JwtIssuer, uuidv4 } from '@sphereon/oid4vc-common' +import { decodeProtectedHeader, JwtIssuer, uuidv4 } from '@sphereon/oid4vc-common' import { Hasher } from '@sphereon/ssi-types' import { @@ -19,8 +19,13 @@ import { URI, } from '../authorization-request' import { mergeVerificationOpts } from '../authorization-request/Opts' -import { AuthorizationResponse, PresentationDefinitionWithLocation, VerifyAuthorizationResponseOpts } from '../authorization-response' -import { getNonce, getState } from '../helpers' +import { + AuthorizationResponse, + extractPresentationsFromVpToken, + PresentationDefinitionWithLocation, + VerifyAuthorizationResponseOpts, +} from '../authorization-response' +import { base64urlToString, getNonce, getState } from '../helpers' import { AuthorizationEvent, AuthorizationEvents, @@ -113,7 +118,7 @@ export class RP { responseURIType?: ResponseURIType }): Promise { const authorizationRequestOpts = this.newAuthorizationRequestOpts(opts) - + return await URI.fromOpts(authorizationRequestOpts) .then(async (uri: URI) => { void this.emitEvent(AuthorizationEvents.ON_AUTH_REQUEST_CREATED_SUCCESS, { @@ -148,9 +153,10 @@ export class RP { opts: { decryptCompact: DecryptCompact getAuthRequestPayload: (input: JarmDirectPostJwtResponseParams | JarmAuthResponseParams) => Promise<{ authRequestParams: RequestObjectPayload }> + hasher?: Hasher }, ) { - const { decryptCompact, getAuthRequestPayload } = opts + const { decryptCompact, getAuthRequestPayload, hasher } = opts const getParams = getAuthRequestPayload as JarmDirectPostJwtAuthResponseValidationContext['openid4vp']['authRequest']['getParams'] @@ -162,6 +168,27 @@ export class RP { }, ) + const presentations = await extractPresentationsFromVpToken(validatedResponse.authResponseParams.vp_token, { hasher }) + const mdocVerifiablePresentations = (Array.isArray(presentations) ? presentations : [presentations]).filter((p) => p.format === 'mso_mdoc') + + if (mdocVerifiablePresentations.length) { + if (validatedResponse.type !== 'encrypted') { + throw new Error(`Cannot verify mdoc request nonce. Response should be 'encrypted' but is '${validatedResponse.type}'`) + } + const requestParamsNonce = validatedResponse.authRequestParams.nonce + + const jweProtectedHeader = decodeProtectedHeader(response) as { apv?: string; apu?: string } + const apv = jweProtectedHeader.apv + if (!apv) { + throw new Error(`Missing required apv parameter in the protected header of the jarm response.`) + } + + const requestNonce = base64urlToString(apv) + if (!requestParamsNonce || requestParamsNonce !== requestNonce) { + throw new Error(`Invalid request nonce found in the jarm protected Header. Expected '${requestParamsNonce}' received '${requestNonce}'`) + } + } + return validatedResponse } @@ -231,13 +258,10 @@ export class RP { if (!this._responseRedirectUri) { return undefined } - if(!mappings) { + if (!mappings) { return this._responseRedirectUri } - return Object.entries(mappings).reduce( - (uri, [key, value]) => uri.replace(`:${key}`, value), - this._responseRedirectUri - ) + return Object.entries(mappings).reduce((uri, [key, value]) => uri.replace(`:${key}`, value), this._responseRedirectUri) } private newAuthorizationRequestOpts(opts: { diff --git a/packages/siop-oid4vp/lib/types/Errors.ts b/packages/siop-oid4vp/lib/types/Errors.ts index c5555370..24c36f92 100644 --- a/packages/siop-oid4vp/lib/types/Errors.ts +++ b/packages/siop-oid4vp/lib/types/Errors.ts @@ -53,7 +53,6 @@ enum SIOPErrors { VERIFIABLE_PRESENTATION_SIGNATURE_NOT_VALID = 'The signature of the verifiable presentation is not valid', VERIFIABLE_PRESENTATION_VERIFICATION_FUNCTION_MISSING = 'The verifiable presentation verification function is missing', PRESENTATION_SUBMISSION_DEFINITION_ID_DOES_NOT_MATCHING_DEFINITION_ID = "The 'definition_id' in the presentation submission does not match the id of the presentation definition.", - MDOC_CREDENTIALS_NOT_SUPPORTED = 'MDoc credentials are not supported by PEX' } export default SIOPErrors diff --git a/packages/siop-oid4vp/lib/types/SIOP.types.ts b/packages/siop-oid4vp/lib/types/SIOP.types.ts index 2a67cbfb..a104d0b7 100644 --- a/packages/siop-oid4vp/lib/types/SIOP.types.ts +++ b/packages/siop-oid4vp/lib/types/SIOP.types.ts @@ -7,6 +7,7 @@ import { CompactSdJwtVc, IPresentation, IVerifiablePresentation, + MdocOid4vpMdocVpToken, PresentationSubmission, W3CVerifiableCredential, W3CVerifiablePresentation, @@ -170,7 +171,11 @@ export interface AuthorizationResponsePayload { expires_in?: number state?: string id_token?: string - vp_token?: Array | W3CVerifiablePresentation | CompactSdJwtVc + vp_token?: + | Array + | W3CVerifiablePresentation + | CompactSdJwtVc + | MdocOid4vpMdocVpToken presentation_submission?: PresentationSubmission verifiedData?: IPresentation | AdditionalClaims // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -508,7 +513,7 @@ export interface VerifiedOpenID4VPSubmission { submissionData: PresentationSubmission presentationDefinitions: PresentationDefinitionWithLocation[] presentations: WrappedVerifiablePresentation[] - nonce: string + nonce?: string } export interface VerifiedAuthorizationResponse { diff --git a/packages/siop-oid4vp/package.json b/packages/siop-oid4vp/package.json index 60264e5b..6fead863 100644 --- a/packages/siop-oid4vp/package.json +++ b/packages/siop-oid4vp/package.json @@ -16,13 +16,10 @@ "dependencies": { "@astronautlabs/jsonpath": "^1.1.2", "@sphereon/jarm": "workspace:*", - "@sphereon/did-uni-client": "^0.6.2", "@sphereon/oid4vc-common": "workspace:*", - "@sphereon/pex": "5.0.0-unstable.18", + "@sphereon/pex": "5.0.0-unstable.21", "@sphereon/pex-models": "^2.3.1", - "@sphereon/kmp-mdl-mdoc": "0.2.0-SNAPSHOT.22", - "@sphereon/ssi-types": "0.30.1", - "@sphereon/wellknown-dids-client": "^0.1.3", + "@sphereon/ssi-types": "0.30.2-next.129", "cross-fetch": "^4.0.0", "debug": "^4.3.5", "events": "^3.3.0", @@ -46,6 +43,8 @@ "@digitalcredentials/ed25519-signature-2020": "^3.0.2", "@digitalcredentials/jsonld-signatures": "^9.3.2", "@digitalcredentials/vc": "^6.0.0", + "@sphereon/wellknown-dids-client": "^0.1.3", + "@sphereon/did-uni-client": "^0.6.2", "@transmute/did-key-ed25519": "^0.3.0-unstable.10", "@transmute/ed25519-key-pair": "0.7.0-unstable.82", "@transmute/ed25519-signature-2018": "^0.7.0-unstable.82", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b6b2bc6e..3fc3dcf8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,10 +22,10 @@ importers: version: 18.19.54 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@18.19.54)(ts-node@10.9.2) + version: 29.7.0(@types/node@18.19.54)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.4.5)) lerna: specifier: ^8.1.6 - version: 8.1.8 + version: 8.1.8(encoding@0.1.13) lerna-changelog: specifier: ^2.2.0 version: 2.2.0 @@ -40,7 +40,7 @@ importers: version: 5.0.10 ts-jest: specifier: ^29.1.5 - version: 29.2.5(@babel/core@7.25.2)(jest@29.7.0)(typescript@5.4.5) + version: 29.2.5(@babel/core@7.25.2)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.2))(jest@29.7.0(@types/node@18.19.54)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.4.5)))(typescript@5.4.5) typescript: specifier: 5.4.5 version: 5.4.5 @@ -52,16 +52,16 @@ importers: version: 2.0.3 '@digitalcredentials/ed25519-signature-2020': specifier: ^3.0.2 - version: 3.0.2(expo@48.0.21)(react-native@0.71.19) + version: 3.0.2(encoding@0.1.13)(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(encoding@0.1.13)(react@18.3.1))(web-streams-polyfill@3.3.3) '@digitalcredentials/ed25519-verification-key-2020': specifier: ^4.0.0 version: 4.0.0 '@digitalcredentials/security-document-loader': specifier: ^1.0.0 - version: 1.0.0(react-native@0.71.19) + version: 1.0.0(encoding@0.1.13)(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(encoding@0.1.13)(react@18.3.1))(web-streams-polyfill@3.3.3) '@digitalcredentials/vc': specifier: ^5.0.0 - version: 5.0.0(expo@48.0.21)(react-native@0.71.19) + version: 5.0.0(encoding@0.1.13)(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(encoding@0.1.13)(react@18.3.1))(web-streams-polyfill@3.3.3) '@sphereon/oid4vc-common': specifier: workspace:* version: link:../common @@ -76,7 +76,7 @@ importers: version: link:../issuer '@sphereon/ssi-types': specifier: 0.30.1 - version: 0.30.1(ts-node@10.9.2) + version: 0.30.1(encoding@0.1.13)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.4.5)) jose: specifier: ^4.10.0 version: 4.15.9 @@ -98,13 +98,13 @@ importers: version: 4.1.0 expo: specifier: ^48.0.11 - version: 48.0.21(@babel/core@7.25.2) + version: 48.0.21(@babel/core@7.25.2)(encoding@0.1.13) react: specifier: ^18.2.0 version: 18.3.1 react-native: specifier: ^0.71.7 - version: 0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4)(react@18.3.1) + version: 0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(encoding@0.1.13)(react@18.3.1) uuid: specifier: ^9.0.0 version: 9.0.1 @@ -119,20 +119,20 @@ importers: version: link:../oid4vci-common '@sphereon/ssi-types': specifier: 0.30.1 - version: 0.30.1(ts-node@10.9.2) + version: 0.30.1(encoding@0.1.13)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.5.3)) cross-fetch: specifier: ^3.1.8 - version: 3.1.8 + version: 3.1.8(encoding@0.1.13) debug: specifier: ^4.3.5 version: 4.3.7 devDependencies: '@sphereon/ssi-sdk-ext.key-utils': specifier: ^0.23.0 - version: 0.23.0(msrcrypto@1.5.8) + version: 0.23.0(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13))(msrcrypto@1.5.8)(react-native-securerandom@1.0.1) '@transmute/did-key.js': specifier: ^0.3.0-unstable.10 - version: 0.3.0-unstable.10 + version: 0.3.0-unstable.10(encoding@0.1.13) '@trust/keyto': specifier: ^2.0.0-alpha1 version: 2.0.0-alpha1 @@ -147,7 +147,7 @@ importers: version: 9.0.8 '@typescript-eslint/eslint-plugin': specifier: ^5.62.0 - version: 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.1)(typescript@5.5.3) + version: 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.5.3))(eslint@8.57.1)(typescript@5.5.3) '@typescript-eslint/parser': specifier: ^5.62.0 version: 5.62.0(eslint@8.57.1)(typescript@5.5.3) @@ -165,10 +165,10 @@ importers: version: 3.2.0(eslint@8.57.1) eslint-plugin-import: specifier: ^2.29.1 - version: 2.30.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.1) + version: 2.30.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.5.3))(eslint@8.57.1) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@18.19.54)(ts-node@10.9.2) + version: 29.7.0(@types/node@18.19.54)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.5.3)) jest-junit: specifier: ^16.0.0 version: 16.0.0 @@ -186,7 +186,7 @@ importers: version: 7.2.0 ts-jest: specifier: ^29.1.5 - version: 29.2.5(@babel/core@7.25.2)(jest@29.7.0)(typescript@5.5.3) + version: 29.2.5(@babel/core@7.25.2)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.2))(jest@29.7.0(@types/node@18.19.54)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.5.3)))(typescript@5.5.3) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@18.19.54)(typescript@5.5.3) @@ -204,7 +204,7 @@ importers: dependencies: '@sphereon/ssi-types': specifier: 0.30.1 - version: 0.30.1(ts-node@10.9.2) + version: 0.30.1(encoding@0.1.13)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.4.5)) jwt-decode: specifier: ^4.0.0 version: 4.0.0 @@ -238,13 +238,13 @@ importers: version: link:../siop-oid4vp '@sphereon/did-uni-client': specifier: ^0.6.2 - version: 0.6.3 + version: 0.6.3(encoding@0.1.13) '@sphereon/oid4vc-common': specifier: workspace:* version: link:../common '@sphereon/wellknown-dids-client': specifier: ^0.1.3 - version: 0.1.3 + version: 0.1.3(encoding@0.1.13) did-jwt: specifier: 6.11.6 version: 6.11.6 @@ -272,10 +272,10 @@ importers: version: link:../oid4vci-common '@sphereon/ssi-types': specifier: 0.30.1 - version: 0.30.1(ts-node@10.9.2) + version: 0.30.1(encoding@0.1.13)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.4.5)) awesome-qr: specifier: ^2.1.5-rc.0 - version: 2.1.5-rc.0 + version: 2.1.5-rc.0(encoding@0.1.13) uuid: specifier: ^9.0.0 version: 9.0.1 @@ -315,10 +315,10 @@ importers: version: 0.30.1 '@sphereon/ssi-types': specifier: 0.30.1 - version: 0.30.1(ts-node@10.9.2) + version: 0.30.1(encoding@0.1.13)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.4.5)) awesome-qr: specifier: ^2.1.5-rc.0 - version: 2.1.5-rc.0 + version: 2.1.5-rc.0(encoding@0.1.13) body-parser: specifier: ^1.20.2 version: 1.20.3 @@ -376,7 +376,7 @@ importers: version: 4.1.0 jest: specifier: ^29.5.0 - version: 29.7.0(@types/node@18.19.54)(ts-node@10.9.2) + version: 29.7.0(@types/node@18.19.54)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.4.5)) jose: specifier: ^4.10.0 version: 4.15.9 @@ -385,7 +385,7 @@ importers: version: 6.3.4 ts-jest: specifier: ^29.1.0 - version: 29.2.5(@babel/core@7.25.2)(jest@29.7.0)(typescript@5.4.5) + version: 29.2.5(@babel/core@7.25.2)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.2))(jest@29.7.0(@types/node@18.19.54)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.4.5)))(typescript@5.4.5) packages/jarm: dependencies: @@ -407,10 +407,10 @@ importers: version: link:../common '@sphereon/ssi-types': specifier: 0.30.1 - version: 0.30.1(ts-node@10.9.2) + version: 0.30.1(encoding@0.1.13)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.4.5)) cross-fetch: specifier: ^3.1.8 - version: 3.1.8 + version: 3.1.8(encoding@0.1.13) debug: specifier: ^4.3.5 version: 4.3.7 @@ -442,33 +442,24 @@ importers: '@astronautlabs/jsonpath': specifier: ^1.1.2 version: 1.1.2 - '@sphereon/did-uni-client': - specifier: ^0.6.2 - version: 0.6.3 '@sphereon/jarm': specifier: workspace:* version: link:../jarm - '@sphereon/kmp-mdl-mdoc': - specifier: 0.2.0-SNAPSHOT.22 - version: 0.2.0-SNAPSHOT.22 '@sphereon/oid4vc-common': specifier: workspace:* version: link:../common '@sphereon/pex': - specifier: 5.0.0-unstable.18 - version: 5.0.0-unstable.18 + specifier: 5.0.0-unstable.21 + version: 5.0.0-unstable.21 '@sphereon/pex-models': specifier: ^2.3.1 version: 2.3.1 '@sphereon/ssi-types': - specifier: 0.30.1 - version: 0.30.1(ts-node@10.9.2) - '@sphereon/wellknown-dids-client': - specifier: ^0.1.3 - version: 0.1.3 + specifier: 0.30.2-next.129 + version: 0.30.2-next.129 cross-fetch: specifier: ^4.0.0 - version: 4.0.0 + version: 4.0.0(encoding@0.1.13) debug: specifier: ^4.3.5 version: 4.3.7 @@ -514,7 +505,7 @@ importers: version: 4.0.3(debug@4.3.7) '@cef-ebsi/verifiable-presentation': specifier: ^6.1.0 - version: 6.4.0(ajv@8.17.1)(debug@4.3.7) + version: 6.4.0(ajv@8.17.1)(debug@4.3.7)(encoding@0.1.13)(web-streams-polyfill@3.3.3) '@cef-ebsi/wallet-lib': specifier: ^4.2.0 version: 4.2.0(debug@4.3.7) @@ -523,22 +514,28 @@ importers: version: 2.0.3 '@digitalcredentials/ed25519-signature-2020': specifier: ^3.0.2 - version: 3.0.2(expo@48.0.21)(react-native@0.71.19) + version: 3.0.2(encoding@0.1.13)(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(encoding@0.1.13)(react@18.3.1))(web-streams-polyfill@3.3.3) '@digitalcredentials/jsonld-signatures': specifier: ^9.3.2 - version: 9.4.0(expo@48.0.21)(react-native@0.71.19) + version: 9.4.0(encoding@0.1.13)(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(encoding@0.1.13)(react@18.3.1))(web-streams-polyfill@3.3.3) '@digitalcredentials/vc': specifier: ^6.0.0 - version: 6.0.1(expo@48.0.21)(react-native@0.71.19) + version: 6.0.1(encoding@0.1.13)(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(encoding@0.1.13)(react@18.3.1))(web-streams-polyfill@3.3.3) + '@sphereon/did-uni-client': + specifier: ^0.6.2 + version: 0.6.3(encoding@0.1.13) + '@sphereon/wellknown-dids-client': + specifier: ^0.1.3 + version: 0.1.3(encoding@0.1.13) '@transmute/did-key-ed25519': specifier: ^0.3.0-unstable.10 - version: 0.3.0-unstable.10 + version: 0.3.0-unstable.10(encoding@0.1.13)(web-streams-polyfill@3.3.3) '@transmute/ed25519-key-pair': specifier: 0.7.0-unstable.82 version: 0.7.0-unstable.82 '@transmute/ed25519-signature-2018': specifier: ^0.7.0-unstable.82 - version: 0.7.0-unstable.82 + version: 0.7.0-unstable.82(encoding@0.1.13)(web-streams-polyfill@3.3.3) '@types/debug': specifier: ^4.1.12 version: 4.1.12 @@ -556,7 +553,7 @@ importers: version: 6.9.16 '@typescript-eslint/eslint-plugin': specifier: ^5.52.0 - version: 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.1)(typescript@5.4.5) + version: 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.4.5))(eslint@8.57.1)(typescript@5.4.5) '@typescript-eslint/parser': specifier: ^5.52.0 version: 5.62.0(eslint@8.57.1)(typescript@5.4.5) @@ -568,7 +565,7 @@ importers: version: 5.0.0 cspell: specifier: ^6.26.3 - version: 6.31.3 + version: 6.31.3(encoding@0.1.13) did-jwt: specifier: 6.11.6 version: 6.11.6 @@ -589,13 +586,13 @@ importers: version: 3.2.0(eslint@8.57.1) eslint-plugin-import: specifier: ^2.27.5 - version: 2.30.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.1) + version: 2.30.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.4.5))(eslint@8.57.1) ethers: specifier: ^6.10.0 version: 6.13.3 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@18.19.54)(ts-node@10.9.2) + version: 29.7.0(@types/node@18.19.54)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.4.5)) jest-junit: specifier: ^16.0.0 version: 16.0.0 @@ -622,7 +619,7 @@ importers: version: 1.0.2 ts-jest: specifier: ^29.1.2 - version: 29.2.5(@babel/core@7.25.2)(jest@29.7.0)(typescript@5.4.5) + version: 29.2.5(@babel/core@7.25.2)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.2))(jest@29.7.0(@types/node@18.19.54)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.4.5)))(typescript@5.4.5) ts-json-schema-generator: specifier: 1.5.0 version: 1.5.0 @@ -2547,13 +2544,12 @@ packages: '@sphereon/kmp-mdl-mdoc@0.2.0-SNAPSHOT.22': resolution: {integrity: sha512-uAZZExVy+ug9JLircejWa5eLtAZ7bnBP6xb7DO2+86LRsHNLh2k2jMWJYxp+iWtGHTsh6RYsZl14ScQLvjiQ/A==} - bundledDependencies: [] '@sphereon/pex-models@2.3.1': resolution: {integrity: sha512-SByU4cJ0XYA6VZQ/L6lsSiRcFtBPHbFioCeQ4GP7/W/jQ+PSBD7uK2oTnKQ9/0iEiMK/6JYqhKgLs4a9UX3UTQ==} - '@sphereon/pex@5.0.0-unstable.18': - resolution: {integrity: sha512-DOKfmfa549RbX8Bqe4yOE2rjZbCQgoRcHO+i01k+gxubgulPPQvY8k0pmFkMFMgVI5fXCjkI3b3PgQ5u/vpGGw==} + '@sphereon/pex@5.0.0-unstable.21': + resolution: {integrity: sha512-/HZxn9EkQ4Htt7y0SvTz5NrKlHwcLpYFfthIHs+3jx0prq9afzF+rPUDzbz+8SkO5KN6px/vTtwV7J0GVqZeIQ==} engines: {node: '>=18'} '@sphereon/ssi-express-support@0.30.1': @@ -2603,6 +2599,9 @@ packages: '@sphereon/ssi-types@0.30.1': resolution: {integrity: sha512-vbYaxQXb71sOPwDj7TRDlUGfIHKVVs8PiHfImPBgSBshrD7VpEHOrB+EwwavMm5MAQvWK/yblGmzk7FHds7SHA==} + '@sphereon/ssi-types@0.30.2-next.129': + resolution: {integrity: sha512-F1TDy9S5ajDJDp21cINXseGSux9kGA+x0KScAS+5+B/RdMGRp7bLOM+3YpQw1QGPqKxVc7JAd2gAn7AI0pAkZA==} + '@sphereon/ssi-types@0.9.0': resolution: {integrity: sha512-umCr/syNcmvMMbQ+i/r/mwjI1Qw2aFPp9AwBTvTo1ailAVaaJjJGPkkVz1K9/2NZATNdDiQ3A8yGzdVJoKh9pA==} @@ -4647,6 +4646,7 @@ packages: expo-random@14.0.1: resolution: {integrity: sha512-gX2mtR9o+WelX21YizXUCD/y+a4ZL+RDthDmFkHxaYbdzjSYTn8u/igoje/l3WEO+/RYspmqUFa8w/ckNbt6Vg==} + deprecated: This package is now deprecated in favor of expo-crypto, which provides the same functionality. To migrate, replace all imports from expo-random with imports from expo-crypto. peerDependencies: expo: '*' @@ -9859,7 +9859,7 @@ snapshots: dependencies: '@cef-ebsi/vcdm1.1-attestation-schema': 1.3.0 - '@cef-ebsi/verifiable-credential@5.5.0(debug@4.3.7)': + '@cef-ebsi/verifiable-credential@5.5.0(debug@4.3.7)(encoding@0.1.13)(web-streams-polyfill@3.3.3)': dependencies: '@cef-ebsi/ebsi-did-resolver': 4.0.3(debug@4.3.7) '@cef-ebsi/key-did-resolver': 2.0.3 @@ -9867,8 +9867,8 @@ snapshots: '@cef-ebsi/vcdm1.1-attestation-schema': 1.3.0 '@cef-ebsi/vcdm1.1-revocation-statuslist-schema': 1.3.0 '@segment/ajv-human-errors': 2.13.0(ajv@8.17.1) - '@transmute/json-web-signature': 0.7.0-unstable.82 - '@transmute/vc.js': 0.7.0-unstable.82 + '@transmute/json-web-signature': 0.7.0-unstable.82(encoding@0.1.13)(web-streams-polyfill@3.3.3) + '@transmute/vc.js': 0.7.0-unstable.82(encoding@0.1.13)(web-streams-polyfill@3.3.3) ajv: 8.17.1 ajv-formats: 2.1.1(ajv@8.17.1) axios: 1.7.7(debug@4.3.7) @@ -9887,15 +9887,15 @@ snapshots: - utf-8-validate - web-streams-polyfill - '@cef-ebsi/verifiable-presentation@6.4.0(ajv@8.17.1)(debug@4.3.7)': + '@cef-ebsi/verifiable-presentation@6.4.0(ajv@8.17.1)(debug@4.3.7)(encoding@0.1.13)(web-streams-polyfill@3.3.3)': dependencies: '@cef-ebsi/ebsi-did-resolver': 4.0.3(debug@4.3.7) '@cef-ebsi/key-did-resolver': 2.0.3 '@cef-ebsi/vcdm1.1-presentation-schema': 1.0.3 - '@cef-ebsi/verifiable-credential': 5.5.0(debug@4.3.7) + '@cef-ebsi/verifiable-credential': 5.5.0(debug@4.3.7)(encoding@0.1.13)(web-streams-polyfill@3.3.3) '@segment/ajv-human-errors': 2.13.0(ajv@8.17.1) - '@transmute/json-web-signature': 0.7.0-unstable.82 - '@transmute/vc.js': 0.7.0-unstable.82 + '@transmute/json-web-signature': 0.7.0-unstable.82(encoding@0.1.13)(web-streams-polyfill@3.3.3) + '@transmute/vc.js': 0.7.0-unstable.82(encoding@0.1.13)(web-streams-polyfill@3.3.3) did-resolver: 4.1.0 jose: 4.15.9 memoize: 10.0.0 @@ -10095,10 +10095,10 @@ snapshots: dependencies: factory.ts: 0.5.2 - '@did-core/did-ld-json@0.1.1-unstable.15': + '@did-core/did-ld-json@0.1.1-unstable.15(encoding@0.1.13)(web-streams-polyfill@3.3.3)': dependencies: '@transmute/did-context': 0.6.1-unstable.37 - jsonld-checker: 0.1.8 + jsonld-checker: 0.1.8(encoding@0.1.13)(web-streams-polyfill@3.3.3) transitivePeerDependencies: - encoding - web-streams-polyfill @@ -10108,19 +10108,19 @@ snapshots: base64url-universal: 2.0.0 pako: 2.1.0 - '@digitalbazaar/http-client@1.2.0': + '@digitalbazaar/http-client@1.2.0(encoding@0.1.13)(web-streams-polyfill@3.3.3)': dependencies: esm: 3.2.25 ky: 0.25.1 - ky-universal: 0.8.2(ky@0.25.1) + ky-universal: 0.8.2(encoding@0.1.13)(ky@0.25.1)(web-streams-polyfill@3.3.3) transitivePeerDependencies: - encoding - web-streams-polyfill - '@digitalbazaar/http-client@3.4.1': + '@digitalbazaar/http-client@3.4.1(encoding@0.1.13)(web-streams-polyfill@3.3.3)': dependencies: ky: 0.33.3 - ky-universal: 0.11.0(ky@0.33.3) + ky-universal: 0.11.0(encoding@0.1.13)(ky@0.33.3)(web-streams-polyfill@3.3.3) undici: 5.28.4 transitivePeerDependencies: - encoding @@ -10130,21 +10130,21 @@ snapshots: '@digitalbazaar/vc-status-list-context@3.1.1': {} - '@digitalbazaar/vc-status-list@7.1.0': + '@digitalbazaar/vc-status-list@7.1.0(encoding@0.1.13)(web-streams-polyfill@3.3.3)': dependencies: '@digitalbazaar/bitstring': 3.1.0 - '@digitalbazaar/vc': 5.0.0 + '@digitalbazaar/vc': 5.0.0(encoding@0.1.13)(web-streams-polyfill@3.3.3) '@digitalbazaar/vc-status-list-context': 3.1.1 credentials-context: 2.0.0 transitivePeerDependencies: - encoding - web-streams-polyfill - '@digitalbazaar/vc@5.0.0': + '@digitalbazaar/vc@5.0.0(encoding@0.1.13)(web-streams-polyfill@3.3.3)': dependencies: credentials-context: 2.0.0 - jsonld: 8.3.2 - jsonld-signatures: 11.3.0 + jsonld: 8.3.2(encoding@0.1.13)(web-streams-polyfill@3.3.3) + jsonld-signatures: 11.3.0(encoding@0.1.13)(web-streams-polyfill@3.3.3) transitivePeerDependencies: - encoding - web-streams-polyfill @@ -10160,10 +10160,10 @@ snapshots: '@digitalcredentials/base64url-universal': 2.0.6 pako: 2.1.0 - '@digitalcredentials/bnid@2.1.2(react-native@0.71.19)': + '@digitalcredentials/bnid@2.1.2(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(encoding@0.1.13)(react@18.3.1))': dependencies: '@digitalcredentials/base58-universal': 1.0.1 - react-native-securerandom: 1.0.1(react-native@0.71.19) + react-native-securerandom: 1.0.1(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(encoding@0.1.13)(react@18.3.1)) yargs: 15.4.1 transitivePeerDependencies: - react-native @@ -10182,11 +10182,11 @@ snapshots: '@digitalcredentials/ed25519-verification-key-2020': 3.2.2 '@digitalcredentials/x25519-key-agreement-key-2020': 2.0.2 - '@digitalcredentials/ed25519-signature-2020@3.0.2(expo@48.0.21)(react-native@0.71.19)': + '@digitalcredentials/ed25519-signature-2020@3.0.2(encoding@0.1.13)(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(encoding@0.1.13)(react@18.3.1))(web-streams-polyfill@3.3.3)': dependencies: '@digitalcredentials/base58-universal': 1.0.1 '@digitalcredentials/ed25519-verification-key-2020': 3.2.2 - '@digitalcredentials/jsonld-signatures': 9.4.0(expo@48.0.21)(react-native@0.71.19) + '@digitalcredentials/jsonld-signatures': 9.4.0(encoding@0.1.13)(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(encoding@0.1.13)(react@18.3.1))(web-streams-polyfill@3.3.3) ed25519-signature-2018-context: 1.1.0 ed25519-signature-2020-context: 1.1.0 transitivePeerDependencies: @@ -10208,20 +10208,20 @@ snapshots: '@noble/ed25519': 1.7.3 base-x: 4.0.0 - '@digitalcredentials/http-client@1.2.2': + '@digitalcredentials/http-client@1.2.2(encoding@0.1.13)(web-streams-polyfill@3.3.3)': dependencies: ky: 0.25.1 - ky-universal: 0.8.2(ky@0.25.1) + ky-universal: 0.8.2(encoding@0.1.13)(ky@0.25.1)(web-streams-polyfill@3.3.3) transitivePeerDependencies: - encoding - web-streams-polyfill - '@digitalcredentials/jsonld-signatures@9.4.0(expo@48.0.21)(react-native@0.71.19)': + '@digitalcredentials/jsonld-signatures@9.4.0(encoding@0.1.13)(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(encoding@0.1.13)(react@18.3.1))(web-streams-polyfill@3.3.3)': dependencies: '@digitalbazaar/security-context': 1.0.1 - '@digitalcredentials/jsonld': 6.0.0(expo@48.0.21)(react-native@0.71.19) + '@digitalcredentials/jsonld': 6.0.0(encoding@0.1.13)(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(encoding@0.1.13)(react@18.3.1))(web-streams-polyfill@3.3.3) fast-text-encoding: 1.0.6 - isomorphic-webcrypto: 2.3.8(expo@48.0.21)(react-native@0.71.19) + isomorphic-webcrypto: 2.3.8(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(encoding@0.1.13)(react@18.3.1)) serialize-error: 8.1.0 transitivePeerDependencies: - encoding @@ -10229,10 +10229,10 @@ snapshots: - react-native - web-streams-polyfill - '@digitalcredentials/jsonld@5.2.2(expo@48.0.21)(react-native@0.71.19)': + '@digitalcredentials/jsonld@5.2.2(encoding@0.1.13)(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(encoding@0.1.13)(react@18.3.1))(web-streams-polyfill@3.3.3)': dependencies: - '@digitalcredentials/http-client': 1.2.2 - '@digitalcredentials/rdf-canonize': 1.0.0(expo@48.0.21)(react-native@0.71.19) + '@digitalcredentials/http-client': 1.2.2(encoding@0.1.13)(web-streams-polyfill@3.3.3) + '@digitalcredentials/rdf-canonize': 1.0.0(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(encoding@0.1.13)(react@18.3.1)) canonicalize: 1.0.8 lru-cache: 6.0.0 transitivePeerDependencies: @@ -10241,10 +10241,10 @@ snapshots: - react-native - web-streams-polyfill - '@digitalcredentials/jsonld@6.0.0(expo@48.0.21)(react-native@0.71.19)': + '@digitalcredentials/jsonld@6.0.0(encoding@0.1.13)(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(encoding@0.1.13)(react@18.3.1))(web-streams-polyfill@3.3.3)': dependencies: - '@digitalcredentials/http-client': 1.2.2 - '@digitalcredentials/rdf-canonize': 1.0.0(expo@48.0.21)(react-native@0.71.19) + '@digitalcredentials/http-client': 1.2.2(encoding@0.1.13)(web-streams-polyfill@3.3.3) + '@digitalcredentials/rdf-canonize': 1.0.0(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(encoding@0.1.13)(react@18.3.1)) canonicalize: 1.0.8 lru-cache: 6.0.0 transitivePeerDependencies: @@ -10263,15 +10263,15 @@ snapshots: '@digitalcredentials/open-badges-context@2.1.0': {} - '@digitalcredentials/rdf-canonize@1.0.0(expo@48.0.21)(react-native@0.71.19)': + '@digitalcredentials/rdf-canonize@1.0.0(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(encoding@0.1.13)(react@18.3.1))': dependencies: fast-text-encoding: 1.0.6 - isomorphic-webcrypto: 2.3.8(expo@48.0.21)(react-native@0.71.19) + isomorphic-webcrypto: 2.3.8(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(encoding@0.1.13)(react@18.3.1)) transitivePeerDependencies: - expo - react-native - '@digitalcredentials/security-document-loader@1.0.0(react-native@0.71.19)': + '@digitalcredentials/security-document-loader@1.0.0(encoding@0.1.13)(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(encoding@0.1.13)(react@18.3.1))(web-streams-polyfill@3.3.3)': dependencies: '@digitalbazaar/vc-status-list-context': 3.1.1 '@digitalcredentials/crypto-ld': 7.0.6 @@ -10281,7 +10281,7 @@ snapshots: '@digitalcredentials/ed25519-verification-key-2020': 3.2.2 '@digitalcredentials/open-badges-context': 0.1.2 '@digitalcredentials/x25519-key-agreement-key-2020': 3.0.0 - '@interop/did-web-resolver': 3.0.1(react-native@0.71.19) + '@interop/did-web-resolver': 3.0.1(encoding@0.1.13)(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(encoding@0.1.13)(react@18.3.1))(web-streams-polyfill@3.3.3) credentials-context: 2.0.0 crypto-ld: 7.0.0 did-context: 3.1.1 @@ -10294,11 +10294,11 @@ snapshots: - react-native - web-streams-polyfill - '@digitalcredentials/vc-status-list@5.0.2(expo@48.0.21)(react-native@0.71.19)': + '@digitalcredentials/vc-status-list@5.0.2(encoding@0.1.13)(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(encoding@0.1.13)(react@18.3.1))(web-streams-polyfill@3.3.3)': dependencies: '@digitalbazaar/vc-status-list-context': 3.1.1 '@digitalcredentials/bitstring': 2.0.1 - '@digitalcredentials/vc': 4.2.0(expo@48.0.21)(react-native@0.71.19) + '@digitalcredentials/vc': 4.2.0(encoding@0.1.13)(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(encoding@0.1.13)(react@18.3.1))(web-streams-polyfill@3.3.3) credentials-context: 2.0.0 transitivePeerDependencies: - encoding @@ -10306,10 +10306,10 @@ snapshots: - react-native - web-streams-polyfill - '@digitalcredentials/vc@4.2.0(expo@48.0.21)(react-native@0.71.19)': + '@digitalcredentials/vc@4.2.0(encoding@0.1.13)(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(encoding@0.1.13)(react@18.3.1))(web-streams-polyfill@3.3.3)': dependencies: - '@digitalcredentials/jsonld': 5.2.2(expo@48.0.21)(react-native@0.71.19) - '@digitalcredentials/jsonld-signatures': 9.4.0(expo@48.0.21)(react-native@0.71.19) + '@digitalcredentials/jsonld': 5.2.2(encoding@0.1.13)(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(encoding@0.1.13)(react@18.3.1))(web-streams-polyfill@3.3.3) + '@digitalcredentials/jsonld-signatures': 9.4.0(encoding@0.1.13)(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(encoding@0.1.13)(react@18.3.1))(web-streams-polyfill@3.3.3) credentials-context: 2.0.0 transitivePeerDependencies: - encoding @@ -10317,10 +10317,10 @@ snapshots: - react-native - web-streams-polyfill - '@digitalcredentials/vc@5.0.0(expo@48.0.21)(react-native@0.71.19)': + '@digitalcredentials/vc@5.0.0(encoding@0.1.13)(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(encoding@0.1.13)(react@18.3.1))(web-streams-polyfill@3.3.3)': dependencies: - '@digitalcredentials/jsonld': 5.2.2(expo@48.0.21)(react-native@0.71.19) - '@digitalcredentials/jsonld-signatures': 9.4.0(expo@48.0.21)(react-native@0.71.19) + '@digitalcredentials/jsonld': 5.2.2(encoding@0.1.13)(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(encoding@0.1.13)(react@18.3.1))(web-streams-polyfill@3.3.3) + '@digitalcredentials/jsonld-signatures': 9.4.0(encoding@0.1.13)(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(encoding@0.1.13)(react@18.3.1))(web-streams-polyfill@3.3.3) credentials-context: 2.0.0 transitivePeerDependencies: - encoding @@ -10328,14 +10328,14 @@ snapshots: - react-native - web-streams-polyfill - '@digitalcredentials/vc@6.0.1(expo@48.0.21)(react-native@0.71.19)': + '@digitalcredentials/vc@6.0.1(encoding@0.1.13)(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(encoding@0.1.13)(react@18.3.1))(web-streams-polyfill@3.3.3)': dependencies: - '@digitalbazaar/vc-status-list': 7.1.0 - '@digitalcredentials/ed25519-signature-2020': 3.0.2(expo@48.0.21)(react-native@0.71.19) - '@digitalcredentials/jsonld': 6.0.0(expo@48.0.21)(react-native@0.71.19) - '@digitalcredentials/jsonld-signatures': 9.4.0(expo@48.0.21)(react-native@0.71.19) + '@digitalbazaar/vc-status-list': 7.1.0(encoding@0.1.13)(web-streams-polyfill@3.3.3) + '@digitalcredentials/ed25519-signature-2020': 3.0.2(encoding@0.1.13)(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(encoding@0.1.13)(react@18.3.1))(web-streams-polyfill@3.3.3) + '@digitalcredentials/jsonld': 6.0.0(encoding@0.1.13)(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(encoding@0.1.13)(react@18.3.1))(web-streams-polyfill@3.3.3) + '@digitalcredentials/jsonld-signatures': 9.4.0(encoding@0.1.13)(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(encoding@0.1.13)(react@18.3.1))(web-streams-polyfill@3.3.3) '@digitalcredentials/open-badges-context': 2.1.0 - '@digitalcredentials/vc-status-list': 5.0.2(expo@48.0.21)(react-native@0.71.19) + '@digitalcredentials/vc-status-list': 5.0.2(encoding@0.1.13)(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(encoding@0.1.13)(react@18.3.1))(web-streams-polyfill@3.3.3) credentials-context: 2.0.0 fix-esm: 1.0.1 transitivePeerDependencies: @@ -10661,21 +10661,21 @@ snapshots: dependencies: uuid: 8.3.2 - '@expo/cli@0.7.3(expo-modules-autolinking@1.2.0)': + '@expo/cli@0.7.3(encoding@0.1.13)(expo-modules-autolinking@1.2.0)': dependencies: '@babel/runtime': 7.25.6 '@expo/code-signing-certificates': 0.0.5 '@expo/config': 8.0.5 '@expo/config-plugins': 6.0.2 - '@expo/dev-server': 0.3.0 + '@expo/dev-server': 0.3.0(encoding@0.1.13) '@expo/devcert': 1.1.4 '@expo/json-file': 8.3.3 '@expo/metro-config': 0.7.1 '@expo/osascript': 2.1.3 '@expo/package-manager': 1.0.3 '@expo/plist': 0.0.20 - '@expo/prebuild-config': 6.0.1(expo-modules-autolinking@1.2.0) - '@expo/rudder-sdk-node': 1.1.1 + '@expo/prebuild-config': 6.0.1(encoding@0.1.13)(expo-modules-autolinking@1.2.0) + '@expo/rudder-sdk-node': 1.1.1(encoding@0.1.13) '@expo/spawn-async': 1.5.0 '@expo/xcpretty': 4.3.1 '@urql/core': 2.3.6(graphql@15.8.0) @@ -10703,7 +10703,7 @@ snapshots: md5-file: 3.2.3 md5hex: 1.0.0 minipass: 3.1.6 - node-fetch: 2.6.12 + node-fetch: 2.6.12(encoding@0.1.13) node-forge: 1.3.1 npm-package-arg: 7.0.0 ora: 3.4.0 @@ -10775,7 +10775,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@expo/dev-server@0.3.0': + '@expo/dev-server@0.3.0(encoding@0.1.13)': dependencies: '@expo/bunyan': 4.0.0 '@expo/metro-config': 0.7.1 @@ -10787,7 +10787,7 @@ snapshots: fs-extra: 9.0.0 is-docker: 2.2.1 is-wsl: 2.2.0 - node-fetch: 2.6.12 + node-fetch: 2.6.12(encoding@0.1.13) open: 8.4.2 resolve-from: 5.0.0 semver: 7.3.2 @@ -10814,7 +10814,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@expo/image-utils@0.3.22': + '@expo/image-utils@0.3.22(encoding@0.1.13)': dependencies: '@expo/spawn-async': 1.5.0 chalk: 4.1.2 @@ -10822,7 +10822,7 @@ snapshots: getenv: 1.0.0 jimp-compact: 0.16.1 mime: 2.6.0 - node-fetch: 2.6.12 + node-fetch: 2.6.12(encoding@0.1.13) parse-png: 2.1.0 resolve-from: 5.0.0 semver: 7.3.2 @@ -10884,12 +10884,12 @@ snapshots: base64-js: 1.5.1 xmlbuilder: 14.0.0 - '@expo/prebuild-config@6.0.1(expo-modules-autolinking@1.2.0)': + '@expo/prebuild-config@6.0.1(encoding@0.1.13)(expo-modules-autolinking@1.2.0)': dependencies: '@expo/config': 8.0.5 '@expo/config-plugins': 6.0.2 '@expo/config-types': 48.0.0 - '@expo/image-utils': 0.3.22 + '@expo/image-utils': 0.3.22(encoding@0.1.13) '@expo/json-file': 8.3.3 debug: 4.3.7 expo-modules-autolinking: 1.2.0 @@ -10901,13 +10901,13 @@ snapshots: - encoding - supports-color - '@expo/rudder-sdk-node@1.1.1': + '@expo/rudder-sdk-node@1.1.1(encoding@0.1.13)': dependencies: '@expo/bunyan': 4.0.1 '@segment/loosely-validate-event': 2.0.0 fetch-retry: 4.1.1 md5: 2.3.0 - node-fetch: 2.6.12 + node-fetch: 2.6.12(encoding@0.1.13) remove-trailing-slash: 0.1.1 uuid: 8.3.2 transitivePeerDependencies: @@ -10960,11 +10960,11 @@ snapshots: '@hutson/parse-repository-url@3.0.2': {} - '@interop/did-web-resolver@3.0.1(react-native@0.71.19)': + '@interop/did-web-resolver@3.0.1(encoding@0.1.13)(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(encoding@0.1.13)(react@18.3.1))(web-streams-polyfill@3.3.3)': dependencies: - '@digitalcredentials/bnid': 2.1.2(react-native@0.71.19) + '@digitalcredentials/bnid': 2.1.2(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(encoding@0.1.13)(react@18.3.1)) '@digitalcredentials/did-io': 1.0.2 - '@digitalcredentials/http-client': 1.2.2 + '@digitalcredentials/http-client': 1.2.2(encoding@0.1.13)(web-streams-polyfill@3.3.3) did-context: 3.1.1 ed25519-signature-2020-context: 1.1.0 whatwg-url: 11.0.0 @@ -11010,7 +11010,42 @@ snapshots: jest-util: 29.7.0 slash: 3.0.0 - '@jest/core@29.7.0(ts-node@10.9.2)': + '@jest/core@29.7.0(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.4.5))': + dependencies: + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.19.54 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.9.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@18.19.54)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.4.5)) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 + micromatch: 4.0.8 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node + + '@jest/core@29.7.0(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.5.3))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 @@ -11024,7 +11059,7 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@18.19.54)(ts-node@10.9.2) + jest-config: 29.7.0(@types/node@18.19.54)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.5.3)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -11216,14 +11251,14 @@ snapshots: dependencies: '@js-joda/core': 5.6.3 - '@lerna/create@8.1.8(typescript@5.5.3)': + '@lerna/create@8.1.8(encoding@0.1.13)(typescript@5.5.3)': dependencies: '@npmcli/arborist': 7.5.4 '@npmcli/package-json': 5.2.0 '@npmcli/run-script': 8.1.0 '@nx/devkit': 19.8.2(nx@19.8.2) '@octokit/plugin-enterprise-rest': 6.0.1 - '@octokit/rest': 19.0.11 + '@octokit/rest': 19.0.11(encoding@0.1.13) aproba: 2.0.0 byte-size: 8.1.1 chalk: 4.1.0 @@ -11256,7 +11291,7 @@ snapshots: make-dir: 4.0.0 minimatch: 3.0.5 multimatch: 5.0.0 - node-fetch: 2.6.12 + node-fetch: 2.6.12(encoding@0.1.13) npm-package-arg: 11.0.2 npm-packlist: 8.0.2 npm-registry-fetch: 17.1.0 @@ -11299,12 +11334,12 @@ snapshots: - supports-color - typescript - '@mapbox/node-pre-gyp@1.0.11': + '@mapbox/node-pre-gyp@1.0.11(encoding@0.1.13)': dependencies: detect-libc: 2.0.3 https-proxy-agent: 5.0.1 make-dir: 3.1.0 - node-fetch: 2.6.12 + node-fetch: 2.6.12(encoding@0.1.13) nopt: 5.0.0 npmlog: 5.0.1 rimraf: 3.0.2 @@ -11314,27 +11349,27 @@ snapshots: - encoding - supports-color - '@mattrglobal/bbs-signatures@1.4.0': + '@mattrglobal/bbs-signatures@1.4.0(encoding@0.1.13)': dependencies: '@stablelib/random': 1.0.0 optionalDependencies: - '@mattrglobal/node-bbs-signatures': 0.18.1 + '@mattrglobal/node-bbs-signatures': 0.18.1(encoding@0.1.13) transitivePeerDependencies: - encoding - supports-color - '@mattrglobal/bls12381-key-pair@1.2.2': + '@mattrglobal/bls12381-key-pair@1.2.2(encoding@0.1.13)': dependencies: - '@mattrglobal/bbs-signatures': 1.4.0 + '@mattrglobal/bbs-signatures': 1.4.0(encoding@0.1.13) bs58: 4.0.1 rfc4648: 1.5.2 transitivePeerDependencies: - encoding - supports-color - '@mattrglobal/node-bbs-signatures@0.18.1': + '@mattrglobal/node-bbs-signatures@0.18.1(encoding@0.1.13)': dependencies: - '@mapbox/node-pre-gyp': 1.0.11 + '@mapbox/node-pre-gyp': 1.0.11(encoding@0.1.13) neon-cli: 0.10.1 transitivePeerDependencies: - encoding @@ -11581,11 +11616,11 @@ snapshots: '@octokit/auth-token@3.0.4': {} - '@octokit/core@4.2.4': + '@octokit/core@4.2.4(encoding@0.1.13)': dependencies: '@octokit/auth-token': 3.0.4 - '@octokit/graphql': 5.0.6 - '@octokit/request': 6.2.8 + '@octokit/graphql': 5.0.6(encoding@0.1.13) + '@octokit/request': 6.2.8(encoding@0.1.13) '@octokit/request-error': 3.0.3 '@octokit/types': 9.3.2 before-after-hook: 2.2.3 @@ -11599,9 +11634,9 @@ snapshots: is-plain-object: 5.0.0 universal-user-agent: 6.0.1 - '@octokit/graphql@5.0.6': + '@octokit/graphql@5.0.6(encoding@0.1.13)': dependencies: - '@octokit/request': 6.2.8 + '@octokit/request': 6.2.8(encoding@0.1.13) '@octokit/types': 9.3.2 universal-user-agent: 6.0.1 transitivePeerDependencies: @@ -11611,19 +11646,19 @@ snapshots: '@octokit/plugin-enterprise-rest@6.0.1': {} - '@octokit/plugin-paginate-rest@6.1.2(@octokit/core@4.2.4)': + '@octokit/plugin-paginate-rest@6.1.2(@octokit/core@4.2.4(encoding@0.1.13))': dependencies: - '@octokit/core': 4.2.4 + '@octokit/core': 4.2.4(encoding@0.1.13) '@octokit/tsconfig': 1.0.2 '@octokit/types': 9.3.2 - '@octokit/plugin-request-log@1.0.4(@octokit/core@4.2.4)': + '@octokit/plugin-request-log@1.0.4(@octokit/core@4.2.4(encoding@0.1.13))': dependencies: - '@octokit/core': 4.2.4 + '@octokit/core': 4.2.4(encoding@0.1.13) - '@octokit/plugin-rest-endpoint-methods@7.2.3(@octokit/core@4.2.4)': + '@octokit/plugin-rest-endpoint-methods@7.2.3(@octokit/core@4.2.4(encoding@0.1.13))': dependencies: - '@octokit/core': 4.2.4 + '@octokit/core': 4.2.4(encoding@0.1.13) '@octokit/types': 10.0.0 '@octokit/request-error@3.0.3': @@ -11632,23 +11667,23 @@ snapshots: deprecation: 2.3.1 once: 1.4.0 - '@octokit/request@6.2.8': + '@octokit/request@6.2.8(encoding@0.1.13)': dependencies: '@octokit/endpoint': 7.0.6 '@octokit/request-error': 3.0.3 '@octokit/types': 9.3.2 is-plain-object: 5.0.0 - node-fetch: 2.6.12 + node-fetch: 2.6.12(encoding@0.1.13) universal-user-agent: 6.0.1 transitivePeerDependencies: - encoding - '@octokit/rest@19.0.11': + '@octokit/rest@19.0.11(encoding@0.1.13)': dependencies: - '@octokit/core': 4.2.4 - '@octokit/plugin-paginate-rest': 6.1.2(@octokit/core@4.2.4) - '@octokit/plugin-request-log': 1.0.4(@octokit/core@4.2.4) - '@octokit/plugin-rest-endpoint-methods': 7.2.3(@octokit/core@4.2.4) + '@octokit/core': 4.2.4(encoding@0.1.13) + '@octokit/plugin-paginate-rest': 6.1.2(@octokit/core@4.2.4(encoding@0.1.13)) + '@octokit/plugin-request-log': 1.0.4(@octokit/core@4.2.4(encoding@0.1.13)) + '@octokit/plugin-rest-endpoint-methods': 7.2.3(@octokit/core@4.2.4(encoding@0.1.13)) transitivePeerDependencies: - encoding @@ -11683,18 +11718,18 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@react-native-community/cli-clean@10.1.1': + '@react-native-community/cli-clean@10.1.1(encoding@0.1.13)': dependencies: - '@react-native-community/cli-tools': 10.1.1 + '@react-native-community/cli-tools': 10.1.1(encoding@0.1.13) chalk: 4.1.2 execa: 1.0.0 prompts: 2.4.2 transitivePeerDependencies: - encoding - '@react-native-community/cli-config@10.1.1': + '@react-native-community/cli-config@10.1.1(encoding@0.1.13)': dependencies: - '@react-native-community/cli-tools': 10.1.1 + '@react-native-community/cli-tools': 10.1.1(encoding@0.1.13) chalk: 4.1.2 cosmiconfig: 5.2.1 deepmerge: 3.3.0 @@ -11709,11 +11744,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@react-native-community/cli-doctor@10.2.7': + '@react-native-community/cli-doctor@10.2.7(encoding@0.1.13)': dependencies: - '@react-native-community/cli-config': 10.1.1 - '@react-native-community/cli-platform-ios': 10.2.5 - '@react-native-community/cli-tools': 10.1.1 + '@react-native-community/cli-config': 10.1.1(encoding@0.1.13) + '@react-native-community/cli-platform-ios': 10.2.5(encoding@0.1.13) + '@react-native-community/cli-tools': 10.1.1(encoding@0.1.13) chalk: 4.1.2 command-exists: 1.2.9 envinfo: 7.14.0 @@ -11729,18 +11764,18 @@ snapshots: transitivePeerDependencies: - encoding - '@react-native-community/cli-hermes@10.2.7': + '@react-native-community/cli-hermes@10.2.7(encoding@0.1.13)': dependencies: - '@react-native-community/cli-platform-android': 10.2.0 - '@react-native-community/cli-tools': 10.1.1 + '@react-native-community/cli-platform-android': 10.2.0(encoding@0.1.13) + '@react-native-community/cli-tools': 10.1.1(encoding@0.1.13) chalk: 4.1.2 hermes-profile-transformer: 0.0.6 transitivePeerDependencies: - encoding - '@react-native-community/cli-platform-android@10.2.0': + '@react-native-community/cli-platform-android@10.2.0(encoding@0.1.13)': dependencies: - '@react-native-community/cli-tools': 10.1.1 + '@react-native-community/cli-tools': 10.1.1(encoding@0.1.13) chalk: 4.1.2 execa: 1.0.0 glob: 7.2.3 @@ -11748,9 +11783,9 @@ snapshots: transitivePeerDependencies: - encoding - '@react-native-community/cli-platform-ios@10.2.5': + '@react-native-community/cli-platform-ios@10.2.5(encoding@0.1.13)': dependencies: - '@react-native-community/cli-tools': 10.1.1 + '@react-native-community/cli-tools': 10.1.1(encoding@0.1.13) chalk: 4.1.2 execa: 1.0.0 fast-xml-parser: 4.5.0 @@ -11759,14 +11794,14 @@ snapshots: transitivePeerDependencies: - encoding - '@react-native-community/cli-plugin-metro@10.2.3(@babel/core@7.25.2)': + '@react-native-community/cli-plugin-metro@10.2.3(@babel/core@7.25.2)(encoding@0.1.13)': dependencies: - '@react-native-community/cli-server-api': 10.1.1 - '@react-native-community/cli-tools': 10.1.1 + '@react-native-community/cli-server-api': 10.1.1(encoding@0.1.13) + '@react-native-community/cli-tools': 10.1.1(encoding@0.1.13) chalk: 4.1.2 execa: 1.0.0 - metro: 0.73.10 - metro-config: 0.73.10 + metro: 0.73.10(encoding@0.1.13) + metro-config: 0.73.10(encoding@0.1.13) metro-core: 0.73.10 metro-react-native-babel-transformer: 0.73.10(@babel/core@7.25.2) metro-resolver: 0.73.10 @@ -11779,10 +11814,10 @@ snapshots: - supports-color - utf-8-validate - '@react-native-community/cli-server-api@10.1.1': + '@react-native-community/cli-server-api@10.1.1(encoding@0.1.13)': dependencies: '@react-native-community/cli-debugger-ui': 10.0.0 - '@react-native-community/cli-tools': 10.1.1 + '@react-native-community/cli-tools': 10.1.1(encoding@0.1.13) compression: 1.7.4 connect: 3.7.0 errorhandler: 1.5.1 @@ -11796,13 +11831,13 @@ snapshots: - supports-color - utf-8-validate - '@react-native-community/cli-tools@10.1.1': + '@react-native-community/cli-tools@10.1.1(encoding@0.1.13)': dependencies: appdirsjs: 1.2.7 chalk: 4.1.2 find-up: 5.0.0 mime: 2.6.0 - node-fetch: 2.6.12 + node-fetch: 2.6.12(encoding@0.1.13) open: 6.4.0 ora: 5.4.1 semver: 6.3.1 @@ -11814,16 +11849,16 @@ snapshots: dependencies: joi: 17.13.3 - '@react-native-community/cli@10.2.7(@babel/core@7.25.2)': + '@react-native-community/cli@10.2.7(@babel/core@7.25.2)(encoding@0.1.13)': dependencies: - '@react-native-community/cli-clean': 10.1.1 - '@react-native-community/cli-config': 10.1.1 + '@react-native-community/cli-clean': 10.1.1(encoding@0.1.13) + '@react-native-community/cli-config': 10.1.1(encoding@0.1.13) '@react-native-community/cli-debugger-ui': 10.0.0 - '@react-native-community/cli-doctor': 10.2.7 - '@react-native-community/cli-hermes': 10.2.7 - '@react-native-community/cli-plugin-metro': 10.2.3(@babel/core@7.25.2) - '@react-native-community/cli-server-api': 10.1.1 - '@react-native-community/cli-tools': 10.1.1 + '@react-native-community/cli-doctor': 10.2.7(encoding@0.1.13) + '@react-native-community/cli-hermes': 10.2.7(encoding@0.1.13) + '@react-native-community/cli-plugin-metro': 10.2.3(@babel/core@7.25.2)(encoding@0.1.13) + '@react-native-community/cli-server-api': 10.1.1(encoding@0.1.13) + '@react-native-community/cli-tools': 10.1.1(encoding@0.1.13) '@react-native-community/cli-types': 10.0.0 chalk: 4.1.2 commander: 9.5.0 @@ -11939,14 +11974,14 @@ snapshots: dependencies: '@sinonjs/commons': 3.0.1 - '@sphereon/did-uni-client@0.6.3': + '@sphereon/did-uni-client@0.6.3(encoding@0.1.13)': dependencies: - cross-fetch: 3.1.8 + cross-fetch: 3.1.8(encoding@0.1.13) did-resolver: 4.1.0 transitivePeerDependencies: - encoding - '@sphereon/isomorphic-webcrypto@2.4.1-unstable.0(msrcrypto@1.5.8)': + '@sphereon/isomorphic-webcrypto@2.4.1-unstable.0(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13))(msrcrypto@1.5.8)(react-native-securerandom@1.0.1)': dependencies: '@peculiar/webcrypto': 1.5.0 asmcrypto.js: 2.3.2 @@ -11962,6 +11997,9 @@ snapshots: sha.js: 2.4.11 str2buf: 1.3.0 webcrypto-shim: 0.1.7 + optionalDependencies: + expo: 48.0.21(@babel/core@7.25.2)(encoding@0.1.13) + react-native-securerandom: 1.0.1(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(encoding@0.1.13)(react@18.3.1)) '@sphereon/kmp-mdl-mdoc@0.2.0-SNAPSHOT.22': dependencies: @@ -11971,39 +12009,21 @@ snapshots: '@sphereon/pex-models@2.3.1': {} - '@sphereon/pex@5.0.0-unstable.18': + '@sphereon/pex@5.0.0-unstable.21': dependencies: '@astronautlabs/jsonpath': 1.1.2 '@sd-jwt/decode': 0.7.2 '@sd-jwt/present': 0.7.2 '@sd-jwt/types': 0.7.2 '@sphereon/pex-models': 2.3.1 - '@sphereon/ssi-types': 0.30.1(ts-node@10.9.2) + '@sphereon/ssi-types': 0.30.2-next.129 ajv: 8.17.1 ajv-formats: 2.1.1(ajv@8.17.1) jwt-decode: 3.1.2 nanoid: 3.3.7 uint8arrays: 3.1.1 transitivePeerDependencies: - - '@google-cloud/spanner' - - '@sap/hana-client' - - better-sqlite3 - - encoding - - hdb-pool - - ioredis - - mongodb - - mssql - - mysql2 - - oracledb - - pg - - pg-native - - pg-query-stream - - redis - - sql.js - - sqlite3 - supports-color - - ts-node - - typeorm-aurora-data-api-driver '@sphereon/ssi-express-support@0.30.1': dependencies: @@ -12023,19 +12043,57 @@ snapshots: transitivePeerDependencies: - supports-color - '@sphereon/ssi-sdk-ext.did-utils@0.24.1-unstable.130(ts-node@10.9.2)': + '@sphereon/ssi-sdk-ext.did-utils@0.24.1-unstable.130(encoding@0.1.13)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.4.5))': + dependencies: + '@ethersproject/networks': 5.7.1 + '@ethersproject/transactions': 5.7.0 + '@sphereon/did-uni-client': 0.6.3(encoding@0.1.13) + '@sphereon/ssi-sdk-ext.key-utils': 0.24.1-unstable.130 + '@sphereon/ssi-sdk-ext.x509-utils': 0.24.1-unstable.130 + '@sphereon/ssi-sdk.agent-config': 0.29.1-unstable.161(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.4.5)) + '@sphereon/ssi-sdk.core': 0.29.1-unstable.161(encoding@0.1.13) + '@sphereon/ssi-types': 0.29.1-unstable.161 + '@stablelib/ed25519': 1.0.3 + '@veramo/core': 4.2.0 + '@veramo/utils': 4.2.0(encoding@0.1.13) + did-jwt: 6.11.6 + did-resolver: 4.1.0 + elliptic: 6.5.7 + uint8arrays: 3.1.1 + transitivePeerDependencies: + - '@google-cloud/spanner' + - '@sap/hana-client' + - better-sqlite3 + - encoding + - hdb-pool + - ioredis + - mongodb + - mssql + - mysql2 + - oracledb + - pg + - pg-native + - pg-query-stream + - redis + - sql.js + - sqlite3 + - supports-color + - ts-node + - typeorm-aurora-data-api-driver + + '@sphereon/ssi-sdk-ext.did-utils@0.24.1-unstable.130(encoding@0.1.13)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.5.3))': dependencies: '@ethersproject/networks': 5.7.1 '@ethersproject/transactions': 5.7.0 - '@sphereon/did-uni-client': 0.6.3 + '@sphereon/did-uni-client': 0.6.3(encoding@0.1.13) '@sphereon/ssi-sdk-ext.key-utils': 0.24.1-unstable.130 '@sphereon/ssi-sdk-ext.x509-utils': 0.24.1-unstable.130 - '@sphereon/ssi-sdk.agent-config': 0.29.1-unstable.161(ts-node@10.9.2) - '@sphereon/ssi-sdk.core': 0.29.1-unstable.161 + '@sphereon/ssi-sdk.agent-config': 0.29.1-unstable.161(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.5.3)) + '@sphereon/ssi-sdk.core': 0.29.1-unstable.161(encoding@0.1.13) '@sphereon/ssi-types': 0.29.1-unstable.161 '@stablelib/ed25519': 1.0.3 '@veramo/core': 4.2.0 - '@veramo/utils': 4.2.0 + '@veramo/utils': 4.2.0(encoding@0.1.13) did-jwt: 6.11.6 did-resolver: 4.1.0 elliptic: 6.5.7 @@ -12061,15 +12119,48 @@ snapshots: - ts-node - typeorm-aurora-data-api-driver - '@sphereon/ssi-sdk-ext.identifier-resolution@0.24.1-unstable.130(ts-node@10.9.2)': + '@sphereon/ssi-sdk-ext.identifier-resolution@0.24.1-unstable.130(encoding@0.1.13)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.4.5))': + dependencies: + '@sphereon/ssi-sdk-ext.did-utils': 0.24.1-unstable.130(encoding@0.1.13)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.4.5)) + '@sphereon/ssi-sdk-ext.key-utils': 0.24.1-unstable.130 + '@sphereon/ssi-sdk-ext.x509-utils': 0.24.1-unstable.130 + '@sphereon/ssi-sdk.agent-config': 0.29.1-unstable.161(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.4.5)) + '@sphereon/ssi-types': 0.29.1-unstable.161 + '@veramo/core': 4.2.0 + '@veramo/utils': 4.2.0(encoding@0.1.13) + debug: 4.3.7 + pkijs: 3.2.4 + uint8arrays: 3.1.1 + transitivePeerDependencies: + - '@google-cloud/spanner' + - '@sap/hana-client' + - better-sqlite3 + - encoding + - hdb-pool + - ioredis + - mongodb + - mssql + - mysql2 + - oracledb + - pg + - pg-native + - pg-query-stream + - redis + - sql.js + - sqlite3 + - supports-color + - ts-node + - typeorm-aurora-data-api-driver + + '@sphereon/ssi-sdk-ext.identifier-resolution@0.24.1-unstable.130(encoding@0.1.13)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.5.3))': dependencies: - '@sphereon/ssi-sdk-ext.did-utils': 0.24.1-unstable.130(ts-node@10.9.2) + '@sphereon/ssi-sdk-ext.did-utils': 0.24.1-unstable.130(encoding@0.1.13)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.5.3)) '@sphereon/ssi-sdk-ext.key-utils': 0.24.1-unstable.130 '@sphereon/ssi-sdk-ext.x509-utils': 0.24.1-unstable.130 - '@sphereon/ssi-sdk.agent-config': 0.29.1-unstable.161(ts-node@10.9.2) + '@sphereon/ssi-sdk.agent-config': 0.29.1-unstable.161(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.5.3)) '@sphereon/ssi-types': 0.29.1-unstable.161 '@veramo/core': 4.2.0 - '@veramo/utils': 4.2.0 + '@veramo/utils': 4.2.0(encoding@0.1.13) debug: 4.3.7 pkijs: 3.2.4 uint8arrays: 3.1.1 @@ -12094,17 +12185,52 @@ snapshots: - ts-node - typeorm-aurora-data-api-driver - '@sphereon/ssi-sdk-ext.jwt-service@0.24.1-unstable.130(ts-node@10.9.2)': + '@sphereon/ssi-sdk-ext.jwt-service@0.24.1-unstable.130(encoding@0.1.13)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.4.5))': + dependencies: + '@sphereon/ssi-sdk-ext.did-utils': 0.24.1-unstable.130(encoding@0.1.13)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.4.5)) + '@sphereon/ssi-sdk-ext.identifier-resolution': 0.24.1-unstable.130(encoding@0.1.13)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.4.5)) + '@sphereon/ssi-sdk-ext.key-manager': 0.24.1-unstable.130 + '@sphereon/ssi-sdk-ext.key-utils': 0.24.1-unstable.130 + '@sphereon/ssi-sdk-ext.x509-utils': 0.24.1-unstable.130 + '@sphereon/ssi-sdk.agent-config': 0.29.1-unstable.161(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.4.5)) + '@sphereon/ssi-types': 0.29.1-unstable.161 + '@veramo/core': 4.2.0 + '@veramo/utils': 4.2.0(encoding@0.1.13) + debug: 4.3.7 + jwt-decode: 4.0.0 + uint8arrays: 3.1.1 + transitivePeerDependencies: + - '@google-cloud/spanner' + - '@sap/hana-client' + - better-sqlite3 + - encoding + - hdb-pool + - ioredis + - mongodb + - mssql + - mysql2 + - oracledb + - pg + - pg-native + - pg-query-stream + - redis + - sql.js + - sqlite3 + - supports-color + - ts-node + - typeorm-aurora-data-api-driver + + '@sphereon/ssi-sdk-ext.jwt-service@0.24.1-unstable.130(encoding@0.1.13)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.5.3))': dependencies: - '@sphereon/ssi-sdk-ext.did-utils': 0.24.1-unstable.130(ts-node@10.9.2) - '@sphereon/ssi-sdk-ext.identifier-resolution': 0.24.1-unstable.130(ts-node@10.9.2) + '@sphereon/ssi-sdk-ext.did-utils': 0.24.1-unstable.130(encoding@0.1.13)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.5.3)) + '@sphereon/ssi-sdk-ext.identifier-resolution': 0.24.1-unstable.130(encoding@0.1.13)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.5.3)) '@sphereon/ssi-sdk-ext.key-manager': 0.24.1-unstable.130 '@sphereon/ssi-sdk-ext.key-utils': 0.24.1-unstable.130 '@sphereon/ssi-sdk-ext.x509-utils': 0.24.1-unstable.130 - '@sphereon/ssi-sdk.agent-config': 0.29.1-unstable.161(ts-node@10.9.2) + '@sphereon/ssi-sdk.agent-config': 0.29.1-unstable.161(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.5.3)) '@sphereon/ssi-types': 0.29.1-unstable.161 '@veramo/core': 4.2.0 - '@veramo/utils': 4.2.0 + '@veramo/utils': 4.2.0(encoding@0.1.13) debug: 4.3.7 jwt-decode: 4.0.0 uint8arrays: 3.1.1 @@ -12137,10 +12263,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@sphereon/ssi-sdk-ext.key-utils@0.23.0(msrcrypto@1.5.8)': + '@sphereon/ssi-sdk-ext.key-utils@0.23.0(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13))(msrcrypto@1.5.8)(react-native-securerandom@1.0.1)': dependencies: '@ethersproject/random': 5.7.0 - '@sphereon/isomorphic-webcrypto': 2.4.1-unstable.0(msrcrypto@1.5.8) + '@sphereon/isomorphic-webcrypto': 2.4.1-unstable.0(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13))(msrcrypto@1.5.8)(react-native-securerandom@1.0.1) '@stablelib/ed25519': 1.0.3 '@stablelib/sha256': 1.0.1 '@stablelib/sha512': 1.0.1 @@ -12194,12 +12320,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@sphereon/ssi-sdk.agent-config@0.29.1-unstable.161(ts-node@10.9.2)': + '@sphereon/ssi-sdk.agent-config@0.29.1-unstable.161(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.4.5))': dependencies: '@veramo/core': 4.2.0 debug: 4.3.7 jsonpointer: 5.0.1 - typeorm: 0.3.20(ts-node@10.9.2) + typeorm: 0.3.20(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.4.5)) url-parse: 1.5.10 yaml: 2.5.1 transitivePeerDependencies: @@ -12222,11 +12348,39 @@ snapshots: - ts-node - typeorm-aurora-data-api-driver - '@sphereon/ssi-sdk.core@0.29.1-unstable.161': + '@sphereon/ssi-sdk.agent-config@0.29.1-unstable.161(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.5.3))': + dependencies: + '@veramo/core': 4.2.0 + debug: 4.3.7 + jsonpointer: 5.0.1 + typeorm: 0.3.20(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.5.3)) + url-parse: 1.5.10 + yaml: 2.5.1 + transitivePeerDependencies: + - '@google-cloud/spanner' + - '@sap/hana-client' + - better-sqlite3 + - hdb-pool + - ioredis + - mongodb + - mssql + - mysql2 + - oracledb + - pg + - pg-native + - pg-query-stream + - redis + - sql.js + - sqlite3 + - supports-color + - ts-node + - typeorm-aurora-data-api-driver + + '@sphereon/ssi-sdk.core@0.29.1-unstable.161(encoding@0.1.13)': dependencies: '@sphereon/ssi-types': 0.29.1-unstable.161 '@veramo/core': 4.2.0 - cross-fetch: 3.1.8 + cross-fetch: 3.1.8(encoding@0.1.13) debug: 4.3.7 image-size: 2.0.0-beta.2 uint8arrays: 3.1.1 @@ -12243,11 +12397,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@sphereon/ssi-types@0.30.1(ts-node@10.9.2)': + '@sphereon/ssi-types@0.30.1(encoding@0.1.13)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.4.5))': dependencies: '@sd-jwt/decode': 0.7.2 '@sphereon/kmp-mdl-mdoc': 0.2.0-SNAPSHOT.22 - '@sphereon/ssi-sdk-ext.jwt-service': 0.24.1-unstable.130(ts-node@10.9.2) + '@sphereon/ssi-sdk-ext.jwt-service': 0.24.1-unstable.130(encoding@0.1.13)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.4.5)) debug: 4.3.7 events: 3.3.0 jwt-decode: 3.1.2 @@ -12272,14 +12426,53 @@ snapshots: - ts-node - typeorm-aurora-data-api-driver + '@sphereon/ssi-types@0.30.1(encoding@0.1.13)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.5.3))': + dependencies: + '@sd-jwt/decode': 0.7.2 + '@sphereon/kmp-mdl-mdoc': 0.2.0-SNAPSHOT.22 + '@sphereon/ssi-sdk-ext.jwt-service': 0.24.1-unstable.130(encoding@0.1.13)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.5.3)) + debug: 4.3.7 + events: 3.3.0 + jwt-decode: 3.1.2 + transitivePeerDependencies: + - '@google-cloud/spanner' + - '@sap/hana-client' + - better-sqlite3 + - encoding + - hdb-pool + - ioredis + - mongodb + - mssql + - mysql2 + - oracledb + - pg + - pg-native + - pg-query-stream + - redis + - sql.js + - sqlite3 + - supports-color + - ts-node + - typeorm-aurora-data-api-driver + + '@sphereon/ssi-types@0.30.2-next.129': + dependencies: + '@sd-jwt/decode': 0.7.2 + '@sphereon/kmp-mdl-mdoc': 0.2.0-SNAPSHOT.22 + debug: 4.3.7 + events: 3.3.0 + jwt-decode: 3.1.2 + transitivePeerDependencies: + - supports-color + '@sphereon/ssi-types@0.9.0': dependencies: jwt-decode: 3.1.2 - '@sphereon/wellknown-dids-client@0.1.3': + '@sphereon/wellknown-dids-client@0.1.3(encoding@0.1.13)': dependencies: '@sphereon/ssi-types': 0.9.0 - cross-fetch: 3.1.8 + cross-fetch: 3.1.8(encoding@0.1.13) jwt-decode: 3.1.2 transitivePeerDependencies: - encoding @@ -12393,9 +12586,9 @@ snapshots: '@tootallnate/once@1.1.2': {} - '@transmute/bls12381-key-pair@0.7.0-unstable.81': + '@transmute/bls12381-key-pair@0.7.0-unstable.81(encoding@0.1.13)': dependencies: - '@mattrglobal/bls12381-key-pair': 1.2.2 + '@mattrglobal/bls12381-key-pair': 1.2.2(encoding@0.1.13) '@transmute/ld-key-pair': 0.7.0-unstable.82 transitivePeerDependencies: - encoding @@ -12405,19 +12598,19 @@ snapshots: '@transmute/did-context@0.6.1-unstable.37': {} - '@transmute/did-key-bls12381@0.3.0-unstable.10': + '@transmute/did-key-bls12381@0.3.0-unstable.10(encoding@0.1.13)': dependencies: - '@transmute/bls12381-key-pair': 0.7.0-unstable.81 - '@transmute/did-key-common': 0.3.0-unstable.10 + '@transmute/bls12381-key-pair': 0.7.0-unstable.81(encoding@0.1.13) + '@transmute/did-key-common': 0.3.0-unstable.10(encoding@0.1.13)(web-streams-polyfill@3.3.3) transitivePeerDependencies: - encoding - supports-color - web-streams-polyfill - '@transmute/did-key-common@0.3.0-unstable.10': + '@transmute/did-key-common@0.3.0-unstable.10(encoding@0.1.13)(web-streams-polyfill@3.3.3)': dependencies: '@did-core/data-model': 0.1.1-unstable.15 - '@did-core/did-ld-json': 0.1.1-unstable.15 + '@did-core/did-ld-json': 0.1.1-unstable.15(encoding@0.1.13)(web-streams-polyfill@3.3.3) '@transmute/did-context': 0.6.1-unstable.37 '@transmute/ld-key-pair': 0.6.1-unstable.37 '@transmute/security-context': 0.6.1-unstable.37 @@ -12425,17 +12618,17 @@ snapshots: - encoding - web-streams-polyfill - '@transmute/did-key-ed25519@0.3.0-unstable.10': + '@transmute/did-key-ed25519@0.3.0-unstable.10(encoding@0.1.13)(web-streams-polyfill@3.3.3)': dependencies: - '@transmute/did-key-common': 0.3.0-unstable.10 + '@transmute/did-key-common': 0.3.0-unstable.10(encoding@0.1.13)(web-streams-polyfill@3.3.3) '@transmute/ed25519-key-pair': 0.6.1-unstable.37 transitivePeerDependencies: - encoding - web-streams-polyfill - '@transmute/did-key-secp256k1@0.3.0-unstable.10': + '@transmute/did-key-secp256k1@0.3.0-unstable.10(encoding@0.1.13)': dependencies: - '@transmute/did-key-common': 0.3.0-unstable.10 + '@transmute/did-key-common': 0.3.0-unstable.10(encoding@0.1.13)(web-streams-polyfill@3.3.3) '@transmute/secp256k1-key-pair': 0.7.0-unstable.82 transitivePeerDependencies: - encoding @@ -12443,30 +12636,30 @@ snapshots: '@transmute/did-key-test-vectors@0.3.0-unstable.10': {} - '@transmute/did-key-web-crypto@0.3.0-unstable.10': + '@transmute/did-key-web-crypto@0.3.0-unstable.10(encoding@0.1.13)': dependencies: - '@transmute/did-key-common': 0.3.0-unstable.10 + '@transmute/did-key-common': 0.3.0-unstable.10(encoding@0.1.13)(web-streams-polyfill@3.3.3) '@transmute/web-crypto-key-pair': 0.7.0-unstable.82 transitivePeerDependencies: - encoding - web-streams-polyfill - '@transmute/did-key-x25519@0.3.0-unstable.10': + '@transmute/did-key-x25519@0.3.0-unstable.10(encoding@0.1.13)': dependencies: - '@transmute/did-key-common': 0.3.0-unstable.10 + '@transmute/did-key-common': 0.3.0-unstable.10(encoding@0.1.13)(web-streams-polyfill@3.3.3) '@transmute/x25519-key-pair': 0.7.0-unstable.82 transitivePeerDependencies: - encoding - web-streams-polyfill - '@transmute/did-key.js@0.3.0-unstable.10': + '@transmute/did-key.js@0.3.0-unstable.10(encoding@0.1.13)': dependencies: - '@transmute/did-key-bls12381': 0.3.0-unstable.10 - '@transmute/did-key-ed25519': 0.3.0-unstable.10 - '@transmute/did-key-secp256k1': 0.3.0-unstable.10 + '@transmute/did-key-bls12381': 0.3.0-unstable.10(encoding@0.1.13) + '@transmute/did-key-ed25519': 0.3.0-unstable.10(encoding@0.1.13)(web-streams-polyfill@3.3.3) + '@transmute/did-key-secp256k1': 0.3.0-unstable.10(encoding@0.1.13) '@transmute/did-key-test-vectors': 0.3.0-unstable.10 - '@transmute/did-key-web-crypto': 0.3.0-unstable.10 - '@transmute/did-key-x25519': 0.3.0-unstable.10 + '@transmute/did-key-web-crypto': 0.3.0-unstable.10(encoding@0.1.13) + '@transmute/did-key-x25519': 0.3.0-unstable.10(encoding@0.1.13) base64url: 3.0.1 transitivePeerDependencies: - encoding @@ -12491,12 +12684,12 @@ snapshots: '@transmute/ld-key-pair': 0.7.0-unstable.82 '@transmute/x25519-key-pair': 0.7.0-unstable.82 - '@transmute/ed25519-signature-2018@0.7.0-unstable.82': + '@transmute/ed25519-signature-2018@0.7.0-unstable.82(encoding@0.1.13)(web-streams-polyfill@3.3.3)': dependencies: '@transmute/credentials-context': 0.7.0-unstable.82 '@transmute/ed25519-key-pair': 0.7.0-unstable.2 '@transmute/jose-ld': 0.7.0-unstable.82 - '@transmute/jsonld': 0.0.4 + '@transmute/jsonld': 0.0.4(encoding@0.1.13)(web-streams-polyfill@3.3.3) '@transmute/security-context': 0.7.0-unstable.82 transitivePeerDependencies: - encoding @@ -12511,11 +12704,11 @@ snapshots: jose: 4.15.9 web-streams-polyfill: 3.3.3 - '@transmute/json-web-signature@0.7.0-unstable.82': + '@transmute/json-web-signature@0.7.0-unstable.82(encoding@0.1.13)(web-streams-polyfill@3.3.3)': dependencies: '@transmute/ed25519-key-pair': 0.7.0-unstable.82 '@transmute/jose-ld': 0.7.0-unstable.82 - '@transmute/jsonld': 0.0.4 + '@transmute/jsonld': 0.0.4(encoding@0.1.13)(web-streams-polyfill@3.3.3) '@transmute/secp256k1-key-pair': 0.7.0-unstable.82 '@transmute/security-context': 0.7.0-unstable.82 '@transmute/web-crypto-key-pair': 0.7.0-unstable.82 @@ -12523,19 +12716,19 @@ snapshots: - encoding - web-streams-polyfill - '@transmute/jsonld-schema@0.7.0-unstable.82': + '@transmute/jsonld-schema@0.7.0-unstable.82(encoding@0.1.13)(web-streams-polyfill@3.3.3)': dependencies: - '@transmute/jsonld': 0.0.4 + '@transmute/jsonld': 0.0.4(encoding@0.1.13)(web-streams-polyfill@3.3.3) ajv: 8.17.1 genson-js: 0.0.5 transitivePeerDependencies: - encoding - web-streams-polyfill - '@transmute/jsonld@0.0.4': + '@transmute/jsonld@0.0.4(encoding@0.1.13)(web-streams-polyfill@3.3.3)': dependencies: json-pointer: 0.6.2 - jsonld: 5.2.0 + jsonld: 5.2.0(encoding@0.1.13)(web-streams-polyfill@3.3.3) transitivePeerDependencies: - encoding - web-streams-polyfill @@ -12544,9 +12737,9 @@ snapshots: '@transmute/ld-key-pair@0.7.0-unstable.82': {} - '@transmute/linked-data-proof@0.7.0-unstable.82': + '@transmute/linked-data-proof@0.7.0-unstable.82(encoding@0.1.13)(web-streams-polyfill@3.3.3)': dependencies: - '@transmute/did-key-ed25519': 0.3.0-unstable.10 + '@transmute/did-key-ed25519': 0.3.0-unstable.10(encoding@0.1.13)(web-streams-polyfill@3.3.3) serialize-error: 7.0.1 transitivePeerDependencies: - encoding @@ -12562,13 +12755,13 @@ snapshots: '@transmute/security-context@0.7.0-unstable.82': {} - '@transmute/vc.js@0.7.0-unstable.82': + '@transmute/vc.js@0.7.0-unstable.82(encoding@0.1.13)(web-streams-polyfill@3.3.3)': dependencies: - '@transmute/did-key-ed25519': 0.3.0-unstable.10 - '@transmute/json-web-signature': 0.7.0-unstable.82 - '@transmute/jsonld': 0.0.4 - '@transmute/jsonld-schema': 0.7.0-unstable.82 - '@transmute/linked-data-proof': 0.7.0-unstable.82 + '@transmute/did-key-ed25519': 0.3.0-unstable.10(encoding@0.1.13)(web-streams-polyfill@3.3.3) + '@transmute/json-web-signature': 0.7.0-unstable.82(encoding@0.1.13)(web-streams-polyfill@3.3.3) + '@transmute/jsonld': 0.0.4(encoding@0.1.13)(web-streams-polyfill@3.3.3) + '@transmute/jsonld-schema': 0.7.0-unstable.82(encoding@0.1.13)(web-streams-polyfill@3.3.3) + '@transmute/linked-data-proof': 0.7.0-unstable.82(encoding@0.1.13)(web-streams-polyfill@3.3.3) moment: 2.30.1 transitivePeerDependencies: - encoding @@ -12777,7 +12970,7 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.1)(typescript@5.4.5)': + '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.4.5))(eslint@8.57.1)(typescript@5.4.5)': dependencies: '@eslint-community/regexpp': 4.11.1 '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.4.5) @@ -12791,11 +12984,12 @@ snapshots: natural-compare-lite: 1.4.0 semver: 7.6.3 tsutils: 3.21.0(typescript@5.4.5) + optionalDependencies: typescript: 5.4.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.1)(typescript@5.5.3)': + '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.5.3))(eslint@8.57.1)(typescript@5.5.3)': dependencies: '@eslint-community/regexpp': 4.11.1 '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.5.3) @@ -12809,6 +13003,7 @@ snapshots: natural-compare-lite: 1.4.0 semver: 7.6.3 tsutils: 3.21.0(typescript@5.5.3) + optionalDependencies: typescript: 5.5.3 transitivePeerDependencies: - supports-color @@ -12820,6 +13015,7 @@ snapshots: '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.5) debug: 4.3.7 eslint: 8.57.1 + optionalDependencies: typescript: 5.4.5 transitivePeerDependencies: - supports-color @@ -12831,6 +13027,7 @@ snapshots: '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.5.3) debug: 4.3.7 eslint: 8.57.1 + optionalDependencies: typescript: 5.5.3 transitivePeerDependencies: - supports-color @@ -12847,6 +13044,7 @@ snapshots: debug: 4.3.7 eslint: 8.57.1 tsutils: 3.21.0(typescript@5.4.5) + optionalDependencies: typescript: 5.4.5 transitivePeerDependencies: - supports-color @@ -12858,6 +13056,7 @@ snapshots: debug: 4.3.7 eslint: 8.57.1 tsutils: 3.21.0(typescript@5.5.3) + optionalDependencies: typescript: 5.5.3 transitivePeerDependencies: - supports-color @@ -12873,6 +13072,7 @@ snapshots: is-glob: 4.0.3 semver: 7.6.3 tsutils: 3.21.0(typescript@5.4.5) + optionalDependencies: typescript: 5.4.5 transitivePeerDependencies: - supports-color @@ -12886,6 +13086,7 @@ snapshots: is-glob: 4.0.3 semver: 7.6.3 tsutils: 3.21.0(typescript@5.5.3) + optionalDependencies: typescript: 5.5.3 transitivePeerDependencies: - supports-color @@ -12974,13 +13175,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@veramo/utils@4.2.0': + '@veramo/utils@4.2.0(encoding@0.1.13)': dependencies: '@ethersproject/transactions': 5.7.0 '@stablelib/ed25519': 1.0.3 '@veramo/core': 4.2.0 blakejs: 1.2.1 - cross-fetch: 3.1.8 + cross-fetch: 3.1.8(encoding@0.1.13) debug: 4.3.7 did-jwt: 6.11.6 did-jwt-vc: 3.1.3 @@ -13068,7 +13269,7 @@ snapshots: indent-string: 4.0.0 ajv-formats@2.1.1(ajv@8.17.1): - dependencies: + optionalDependencies: ajv: 8.17.1 ajv@6.12.6: @@ -13258,10 +13459,10 @@ snapshots: await-lock@2.2.2: {} - awesome-qr@2.1.5-rc.0: + awesome-qr@2.1.5-rc.0(encoding@0.1.13): dependencies: buffer: 6.0.3 - canvas: 2.11.2 + canvas: 2.11.2(encoding@0.1.13) js-binary-schema-parser: 2.0.3 transitivePeerDependencies: - encoding @@ -13678,9 +13879,9 @@ snapshots: canonicalize@2.0.0: {} - canvas@2.11.2: + canvas@2.11.2(encoding@0.1.13): dependencies: - '@mapbox/node-pre-gyp': 1.0.11 + '@mapbox/node-pre-gyp': 1.0.11(encoding@0.1.13) nan: 2.20.0 simple-get: 3.1.1 transitivePeerDependencies: @@ -14046,6 +14247,7 @@ snapshots: js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 + optionalDependencies: typescript: 5.5.3 create-hash@1.2.0: @@ -14056,13 +14258,28 @@ snapshots: ripemd160: 2.0.2 sha.js: 2.4.11 - create-jest@29.7.0(@types/node@18.19.54)(ts-node@10.9.2): + create-jest@29.7.0(@types/node@18.19.54)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.4.5)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@18.19.54)(ts-node@10.9.2) + jest-config: 29.7.0(@types/node@18.19.54)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.4.5)) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + create-jest@29.7.0(@types/node@18.19.54)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.5.3)): + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@18.19.54)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.5.3)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -14080,15 +14297,15 @@ snapshots: credentials-context@2.0.0: {} - cross-fetch@3.1.8: + cross-fetch@3.1.8(encoding@0.1.13): dependencies: - node-fetch: 2.6.12 + node-fetch: 2.6.12(encoding@0.1.13) transitivePeerDependencies: - encoding - cross-fetch@4.0.0: + cross-fetch@4.0.0(encoding@0.1.13): dependencies: - node-fetch: 2.6.12 + node-fetch: 2.6.12(encoding@0.1.13) transitivePeerDependencies: - encoding @@ -14142,14 +14359,14 @@ snapshots: '@cspell/cspell-pipe': 6.31.3 '@cspell/cspell-types': 6.31.3 - cspell-io@6.31.3: + cspell-io@6.31.3(encoding@0.1.13): dependencies: '@cspell/cspell-service-bus': 6.31.3 - node-fetch: 2.6.12 + node-fetch: 2.6.12(encoding@0.1.13) transitivePeerDependencies: - encoding - cspell-lib@6.31.3: + cspell-lib@6.31.3(encoding@0.1.13): dependencies: '@cspell/cspell-bundled-dicts': 6.31.3 '@cspell/cspell-pipe': 6.31.3 @@ -14162,7 +14379,7 @@ snapshots: cspell-dictionary: 6.31.3 cspell-glob: 6.31.3 cspell-grammar: 6.31.3 - cspell-io: 6.31.3 + cspell-io: 6.31.3(encoding@0.1.13) cspell-trie-lib: 6.31.3 fast-equals: 4.0.3 find-up: 5.0.0 @@ -14181,7 +14398,7 @@ snapshots: '@cspell/cspell-types': 6.31.3 gensequence: 5.0.2 - cspell@6.31.3: + cspell@6.31.3(encoding@0.1.13): dependencies: '@cspell/cspell-json-reporter': 6.31.3 '@cspell/cspell-pipe': 6.31.3 @@ -14191,8 +14408,8 @@ snapshots: commander: 10.0.1 cspell-gitignore: 6.31.3 cspell-glob: 6.31.3 - cspell-io: 6.31.3 - cspell-lib: 6.31.3 + cspell-io: 6.31.3(encoding@0.1.13) + cspell-lib: 6.31.3(encoding@0.1.13) fast-glob: 3.3.2 fast-json-stable-stringify: 2.1.0 file-entry-cache: 6.0.1 @@ -14654,10 +14871,21 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.1): + eslint-module-utils@2.12.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1): dependencies: - '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.5.3) debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.4.5) + eslint: 8.57.1 + eslint-import-resolver-node: 0.3.9 + transitivePeerDependencies: + - supports-color + + eslint-module-utils@2.12.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1): + dependencies: + debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.5.3) eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: @@ -14669,10 +14897,37 @@ snapshots: eslint: 8.57.1 ignore: 5.3.2 - eslint-plugin-import@2.30.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.1): + eslint-plugin-import@2.30.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.4.5))(eslint@8.57.1): + dependencies: + '@rtsao/scc': 1.1.0 + array-includes: 3.1.8 + array.prototype.findlastindex: 1.2.5 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.57.1 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.12.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1) + hasown: 2.0.2 + is-core-module: 2.15.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.0 + semver: 6.3.1 + tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.4.5) + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + + eslint-plugin-import@2.30.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.5.3))(eslint@8.57.1): dependencies: '@rtsao/scc': 1.1.0 - '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.5.3) array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 array.prototype.flat: 1.3.2 @@ -14681,7 +14936,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.1) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -14691,6 +14946,8 @@ snapshots: object.values: 1.2.0 semver: 6.3.1 tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.5.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -14890,15 +15147,15 @@ snapshots: jest-message-util: 29.7.0 jest-util: 29.7.0 - expo-application@5.1.1(expo@48.0.21): + expo-application@5.1.1(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13)): dependencies: - expo: 48.0.21(@babel/core@7.25.2) + expo: 48.0.21(@babel/core@7.25.2)(encoding@0.1.13) - expo-asset@8.9.2(expo@48.0.21): + expo-asset@8.9.2(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13)): dependencies: blueimp-md5: 2.19.0 - expo-constants: 14.3.0(expo@48.0.21) - expo-file-system: 15.3.0(expo@48.0.21) + expo-constants: 14.3.0(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13)) + expo-file-system: 15.3.0(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13)) invariant: 2.2.4 md5-file: 3.2.3 path-browserify: 1.0.1 @@ -14907,40 +15164,40 @@ snapshots: - expo - supports-color - expo-constants@14.2.1(expo@48.0.21): + expo-constants@14.2.1(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13)): dependencies: '@expo/config': 8.0.5 - expo: 48.0.21(@babel/core@7.25.2) + expo: 48.0.21(@babel/core@7.25.2)(encoding@0.1.13) uuid: 3.4.0 transitivePeerDependencies: - supports-color - expo-constants@14.3.0(expo@48.0.21): + expo-constants@14.3.0(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13)): dependencies: '@expo/config': 8.0.5 - expo: 48.0.21(@babel/core@7.25.2) + expo: 48.0.21(@babel/core@7.25.2)(encoding@0.1.13) uuid: 3.4.0 transitivePeerDependencies: - supports-color - expo-file-system@15.2.2(expo@48.0.21): + expo-file-system@15.2.2(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13)): dependencies: - expo: 48.0.21(@babel/core@7.25.2) + expo: 48.0.21(@babel/core@7.25.2)(encoding@0.1.13) uuid: 3.4.0 - expo-file-system@15.3.0(expo@48.0.21): + expo-file-system@15.3.0(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13)): dependencies: - expo: 48.0.21(@babel/core@7.25.2) + expo: 48.0.21(@babel/core@7.25.2)(encoding@0.1.13) uuid: 3.4.0 - expo-font@11.1.1(expo@48.0.21): + expo-font@11.1.1(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13)): dependencies: - expo: 48.0.21(@babel/core@7.25.2) + expo: 48.0.21(@babel/core@7.25.2)(encoding@0.1.13) fontfaceobserver: 2.3.0 - expo-keep-awake@12.0.1(expo@48.0.21): + expo-keep-awake@12.0.1(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13)): dependencies: - expo: 48.0.21(@babel/core@7.25.2) + expo: 48.0.21(@babel/core@7.25.2)(encoding@0.1.13) expo-modules-autolinking@0.0.3: dependencies: @@ -14964,34 +15221,34 @@ snapshots: compare-versions: 3.6.0 invariant: 2.2.4 - expo-random@14.0.1(expo@48.0.21): + expo-random@14.0.1(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13)): dependencies: base64-js: 1.5.1 - expo: 48.0.21(@babel/core@7.25.2) + expo: 48.0.21(@babel/core@7.25.2)(encoding@0.1.13) optional: true - expo@48.0.21(@babel/core@7.25.2): + expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13): dependencies: '@babel/runtime': 7.25.6 - '@expo/cli': 0.7.3(expo-modules-autolinking@1.2.0) + '@expo/cli': 0.7.3(encoding@0.1.13)(expo-modules-autolinking@1.2.0) '@expo/config': 8.0.5 '@expo/config-plugins': 6.0.2 '@expo/vector-icons': 13.0.0 babel-preset-expo: 9.3.2(@babel/core@7.25.2) cross-spawn: 6.0.5 - expo-application: 5.1.1(expo@48.0.21) - expo-asset: 8.9.2(expo@48.0.21) - expo-constants: 14.2.1(expo@48.0.21) - expo-file-system: 15.2.2(expo@48.0.21) - expo-font: 11.1.1(expo@48.0.21) - expo-keep-awake: 12.0.1(expo@48.0.21) + expo-application: 5.1.1(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13)) + expo-asset: 8.9.2(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13)) + expo-constants: 14.2.1(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13)) + expo-file-system: 15.2.2(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13)) + expo-font: 11.1.1(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13)) + expo-keep-awake: 12.0.1(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13)) expo-modules-autolinking: 1.2.0 expo-modules-core: 1.2.7 - fbemitter: 3.0.0 + fbemitter: 3.0.0(encoding@0.1.13) getenv: 1.0.0 invariant: 2.2.4 md5-file: 3.2.3 - node-fetch: 2.6.12 + node-fetch: 2.6.12(encoding@0.1.13) pretty-format: 26.6.2 uuid: 3.4.0 transitivePeerDependencies: @@ -15106,17 +15363,17 @@ snapshots: dependencies: bser: 2.1.1 - fbemitter@3.0.0: + fbemitter@3.0.0(encoding@0.1.13): dependencies: - fbjs: 3.0.5 + fbjs: 3.0.5(encoding@0.1.13) transitivePeerDependencies: - encoding fbjs-css-vars@1.0.2: {} - fbjs@3.0.5: + fbjs@3.0.5(encoding@0.1.13): dependencies: - cross-fetch: 3.1.8 + cross-fetch: 3.1.8(encoding@0.1.13) fbjs-css-vars: 1.0.2 loose-envify: 1.4.0 object-assign: 4.1.1 @@ -15238,7 +15495,7 @@ snapshots: flow-parser@0.185.2: {} follow-redirects@1.15.9(debug@4.3.7): - dependencies: + optionalDependencies: debug: 4.3.7 fontfaceobserver@2.3.0: {} @@ -15984,7 +16241,7 @@ snapshots: isobject@3.0.1: {} - isomorphic-webcrypto@2.3.8(expo@48.0.21)(react-native@0.71.19): + isomorphic-webcrypto@2.3.8(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(encoding@0.1.13)(react@18.3.1)): dependencies: '@peculiar/webcrypto': 1.5.0 asmcrypto.js: 0.22.0 @@ -15996,8 +16253,8 @@ snapshots: optionalDependencies: '@unimodules/core': 7.1.2 '@unimodules/react-native-adapter': 6.3.9 - expo-random: 14.0.1(expo@48.0.21) - react-native-securerandom: 0.1.1(react-native@0.71.19) + expo-random: 14.0.1(expo@48.0.21(@babel/core@7.25.2)(encoding@0.1.13)) + react-native-securerandom: 0.1.1(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(encoding@0.1.13)(react@18.3.1)) transitivePeerDependencies: - expo - react-native @@ -16088,16 +16345,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@18.19.54)(ts-node@10.9.2): + jest-cli@29.7.0(@types/node@18.19.54)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.4.5)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2) + '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.4.5)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@18.19.54)(ts-node@10.9.2) + create-jest: 29.7.0(@types/node@18.19.54)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.4.5)) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@18.19.54)(ts-node@10.9.2) + jest-config: 29.7.0(@types/node@18.19.54)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.4.5)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -16107,12 +16364,61 @@ snapshots: - supports-color - ts-node - jest-config@29.7.0(@types/node@18.19.54)(ts-node@10.9.2): + jest-cli@29.7.0(@types/node@18.19.54)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.5.3)): + dependencies: + '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.5.3)) + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + chalk: 4.1.2 + create-jest: 29.7.0(@types/node@18.19.54)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.5.3)) + exit: 0.1.2 + import-local: 3.2.0 + jest-config: 29.7.0(@types/node@18.19.54)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.5.3)) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + jest-config@29.7.0(@types/node@18.19.54)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.4.5)): dependencies: '@babel/core': 7.25.2 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.25.2) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.8 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: '@types/node': 18.19.54 + ts-node: 10.9.2(@types/node@18.19.54)(typescript@5.4.5) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-config@29.7.0(@types/node@18.19.54)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.5.3)): + dependencies: + '@babel/core': 7.25.2 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.25.2) chalk: 4.1.2 ci-info: 3.9.0 @@ -16132,6 +16438,8 @@ snapshots: pretty-format: 29.7.0 slash: 3.0.0 strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 18.19.54 ts-node: 10.9.2(@types/node@18.19.54)(typescript@5.5.3) transitivePeerDependencies: - babel-plugin-macros @@ -16223,7 +16531,7 @@ snapshots: jest-util: 29.7.0 jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): - dependencies: + optionalDependencies: jest-resolve: 29.7.0 jest-regex-util@27.5.1: {} @@ -16396,12 +16704,24 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@18.19.54)(ts-node@10.9.2): + jest@29.7.0(@types/node@18.19.54)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.4.5)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2) + '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.4.5)) '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@18.19.54)(ts-node@10.9.2) + jest-cli: 29.7.0(@types/node@18.19.54)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.4.5)) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + jest@29.7.0(@types/node@18.19.54)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.5.3)): + dependencies: + '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.5.3)) + '@jest/types': 29.6.3 + import-local: 3.2.0 + jest-cli: 29.7.0(@types/node@18.19.54)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.5.3)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -16522,7 +16842,7 @@ snapshots: jsc-safe-url@0.2.4: {} - jscodeshift@0.14.0(@babel/preset-env@7.25.4): + jscodeshift@0.14.0(@babel/preset-env@7.25.4(@babel/core@7.25.2)): dependencies: '@babel/core': 7.25.2 '@babel/parser': 7.25.6 @@ -16604,29 +16924,29 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 - jsonld-checker@0.1.8: + jsonld-checker@0.1.8(encoding@0.1.13)(web-streams-polyfill@3.3.3): dependencies: - jsonld: 5.2.0 - node-fetch: 2.6.12 + jsonld: 5.2.0(encoding@0.1.13)(web-streams-polyfill@3.3.3) + node-fetch: 2.6.12(encoding@0.1.13) transitivePeerDependencies: - encoding - web-streams-polyfill jsonld-document-loader@1.2.1: {} - jsonld-signatures@11.3.0: + jsonld-signatures@11.3.0(encoding@0.1.13)(web-streams-polyfill@3.3.3): dependencies: '@digitalbazaar/security-context': 1.0.1 - jsonld: 8.3.2 + jsonld: 8.3.2(encoding@0.1.13)(web-streams-polyfill@3.3.3) rdf-canonize: 4.0.1 serialize-error: 8.1.0 transitivePeerDependencies: - encoding - web-streams-polyfill - jsonld@5.2.0: + jsonld@5.2.0(encoding@0.1.13)(web-streams-polyfill@3.3.3): dependencies: - '@digitalbazaar/http-client': 1.2.0 + '@digitalbazaar/http-client': 1.2.0(encoding@0.1.13)(web-streams-polyfill@3.3.3) canonicalize: 1.0.8 lru-cache: 6.0.0 rdf-canonize: 3.4.0 @@ -16634,9 +16954,9 @@ snapshots: - encoding - web-streams-polyfill - jsonld@8.3.2: + jsonld@8.3.2(encoding@0.1.13)(web-streams-polyfill@3.3.3): dependencies: - '@digitalbazaar/http-client': 3.4.1 + '@digitalbazaar/http-client': 3.4.1(encoding@0.1.13)(web-streams-polyfill@3.3.3) canonicalize: 1.0.8 lru-cache: 6.0.0 rdf-canonize: 3.4.0 @@ -16675,19 +16995,23 @@ snapshots: kleur@3.0.3: {} - ky-universal@0.11.0(ky@0.33.3): + ky-universal@0.11.0(encoding@0.1.13)(ky@0.33.3)(web-streams-polyfill@3.3.3): dependencies: abort-controller: 3.0.0 ky: 0.33.3 - node-fetch: 2.6.12 + node-fetch: 2.6.12(encoding@0.1.13) + optionalDependencies: + web-streams-polyfill: 3.3.3 transitivePeerDependencies: - encoding - ky-universal@0.8.2(ky@0.25.1): + ky-universal@0.8.2(encoding@0.1.13)(ky@0.25.1)(web-streams-polyfill@3.3.3): dependencies: abort-controller: 3.0.0 ky: 0.25.1 - node-fetch: 2.6.12 + node-fetch: 2.6.12(encoding@0.1.13) + optionalDependencies: + web-streams-polyfill: 3.3.3 transitivePeerDependencies: - encoding @@ -16715,15 +17039,15 @@ snapshots: - bluebird - supports-color - lerna@8.1.8: + lerna@8.1.8(encoding@0.1.13): dependencies: - '@lerna/create': 8.1.8(typescript@5.5.3) + '@lerna/create': 8.1.8(encoding@0.1.13)(typescript@5.5.3) '@npmcli/arborist': 7.5.4 '@npmcli/package-json': 5.2.0 '@npmcli/run-script': 8.1.0 '@nx/devkit': 19.8.2(nx@19.8.2) '@octokit/plugin-enterprise-rest': 6.0.1 - '@octokit/rest': 19.0.11 + '@octokit/rest': 19.0.11(encoding@0.1.13) aproba: 2.0.0 byte-size: 8.1.1 chalk: 4.1.0 @@ -16762,7 +17086,7 @@ snapshots: make-dir: 4.0.0 minimatch: 3.0.5 multimatch: 5.0.0 - node-fetch: 2.6.12 + node-fetch: 2.6.12(encoding@0.1.13) npm-package-arg: 11.0.2 npm-packlist: 8.0.2 npm-registry-fetch: 17.1.0 @@ -17089,11 +17413,11 @@ snapshots: metro-core: 0.73.10 rimraf: 3.0.2 - metro-config@0.73.10: + metro-config@0.73.10(encoding@0.1.13): dependencies: cosmiconfig: 5.2.1 jest-validate: 26.6.2 - metro: 0.73.10 + metro: 0.73.10(encoding@0.1.13) metro-cache: 0.73.10 metro-core: 0.73.10 metro-runtime: 0.73.10 @@ -17290,14 +17614,14 @@ snapshots: transitivePeerDependencies: - supports-color - metro-transform-worker@0.73.10: + metro-transform-worker@0.73.10(encoding@0.1.13): dependencies: '@babel/core': 7.25.2 '@babel/generator': 7.25.6 '@babel/parser': 7.25.6 '@babel/types': 7.25.6 babel-preset-fbjs: 3.4.0(@babel/core@7.25.2) - metro: 0.73.10 + metro: 0.73.10(encoding@0.1.13) metro-babel-transformer: 0.73.10 metro-cache: 0.73.10 metro-cache-key: 0.73.10 @@ -17311,7 +17635,7 @@ snapshots: - supports-color - utf-8-validate - metro@0.73.10: + metro@0.73.10(encoding@0.1.13): dependencies: '@babel/code-frame': 7.24.7 '@babel/core': 7.25.2 @@ -17339,7 +17663,7 @@ snapshots: metro-babel-transformer: 0.73.10 metro-cache: 0.73.10 metro-cache-key: 0.73.10 - metro-config: 0.73.10 + metro-config: 0.73.10(encoding@0.1.13) metro-core: 0.73.10 metro-file-map: 0.73.10 metro-hermes-compiler: 0.73.10 @@ -17352,9 +17676,9 @@ snapshots: metro-source-map: 0.73.10 metro-symbolicate: 0.73.10 metro-transform-plugins: 0.73.10 - metro-transform-worker: 0.73.10 + metro-transform-worker: 0.73.10(encoding@0.1.13) mime-types: 2.1.35 - node-fetch: 2.6.12 + node-fetch: 2.6.12(encoding@0.1.13) nullthrows: 1.1.1 rimraf: 3.0.2 serialize-error: 2.1.0 @@ -17612,9 +17936,11 @@ snapshots: dependencies: minimatch: 3.1.2 - node-fetch@2.6.12: + node-fetch@2.6.12(encoding@0.1.13): dependencies: whatwg-url: 5.0.0 + optionalDependencies: + encoding: 0.1.13 node-forge@1.3.1: {} @@ -18381,11 +18707,11 @@ snapshots: react-is@18.3.1: {} - react-native-codegen@0.71.6(@babel/preset-env@7.25.4): + react-native-codegen@0.71.6(@babel/preset-env@7.25.4(@babel/core@7.25.2)): dependencies: '@babel/parser': 7.25.6 flow-parser: 0.185.2 - jscodeshift: 0.14.0(@babel/preset-env@7.25.4) + jscodeshift: 0.14.0(@babel/preset-env@7.25.4(@babel/core@7.25.2)) nullthrows: 1.1.1 transitivePeerDependencies: - '@babel/preset-env' @@ -18393,23 +18719,23 @@ snapshots: react-native-gradle-plugin@0.71.19: {} - react-native-securerandom@0.1.1(react-native@0.71.19): + react-native-securerandom@0.1.1(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(encoding@0.1.13)(react@18.3.1)): dependencies: base64-js: 1.5.1 - react-native: 0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4)(react@18.3.1) + react-native: 0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(encoding@0.1.13)(react@18.3.1) optional: true - react-native-securerandom@1.0.1(react-native@0.71.19): + react-native-securerandom@1.0.1(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(encoding@0.1.13)(react@18.3.1)): dependencies: base64-js: 1.5.1 - react-native: 0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4)(react@18.3.1) + react-native: 0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(encoding@0.1.13)(react@18.3.1) - react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4)(react@18.3.1): + react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(encoding@0.1.13)(react@18.3.1): dependencies: '@jest/create-cache-key-function': 29.7.0 - '@react-native-community/cli': 10.2.7(@babel/core@7.25.2) - '@react-native-community/cli-platform-android': 10.2.0 - '@react-native-community/cli-platform-ios': 10.2.5 + '@react-native-community/cli': 10.2.7(@babel/core@7.25.2)(encoding@0.1.13) + '@react-native-community/cli-platform-android': 10.2.0(encoding@0.1.13) + '@react-native-community/cli-platform-ios': 10.2.5(encoding@0.1.13) '@react-native/assets': 1.0.0 '@react-native/normalize-color': 2.1.0 '@react-native/polyfills': 2.0.0 @@ -18432,7 +18758,7 @@ snapshots: promise: 8.3.0 react: 18.3.1 react-devtools-core: 4.28.5 - react-native-codegen: 0.71.6(@babel/preset-env@7.25.4) + react-native-codegen: 0.71.6(@babel/preset-env@7.25.4(@babel/core@7.25.2)) react-native-gradle-plugin: 0.71.19 react-refresh: 0.4.3 react-shallow-renderer: 16.15.0(react@18.3.1) @@ -19323,13 +19649,12 @@ snapshots: ts-interface-checker@1.0.2: {} - ts-jest@29.2.5(@babel/core@7.25.2)(jest@29.7.0)(typescript@5.4.5): + ts-jest@29.2.5(@babel/core@7.25.2)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.2))(jest@29.7.0(@types/node@18.19.54)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.4.5)))(typescript@5.4.5): dependencies: - '@babel/core': 7.25.2 bs-logger: 0.2.6 ejs: 3.1.10 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@18.19.54)(ts-node@10.9.2) + jest: 29.7.0(@types/node@18.19.54)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.4.5)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -19337,14 +19662,18 @@ snapshots: semver: 7.6.3 typescript: 5.4.5 yargs-parser: 21.1.1 + optionalDependencies: + '@babel/core': 7.25.2 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.25.2) - ts-jest@29.2.5(@babel/core@7.25.2)(jest@29.7.0)(typescript@5.5.3): + ts-jest@29.2.5(@babel/core@7.25.2)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.2))(jest@29.7.0(@types/node@18.19.54)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.5.3)))(typescript@5.5.3): dependencies: - '@babel/core': 7.25.2 bs-logger: 0.2.6 ejs: 3.1.10 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@18.19.54)(ts-node@10.9.2) + jest: 29.7.0(@types/node@18.19.54)(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.5.3)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -19352,6 +19681,11 @@ snapshots: semver: 7.6.3 typescript: 5.5.3 yargs-parser: 21.1.1 + optionalDependencies: + '@babel/core': 7.25.2 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.25.2) ts-json-schema-generator@1.5.0: dependencies: @@ -19363,6 +19697,25 @@ snapshots: safe-stable-stringify: 2.5.0 typescript: 5.3.3 + ts-node@10.9.2(@types/node@18.19.54)(typescript@5.4.5): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 18.19.54 + acorn: 8.12.1 + acorn-walk: 8.3.4 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.4.5 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optional: true + ts-node@10.9.2(@types/node@18.19.54)(typescript@5.5.3): dependencies: '@cspotcode/source-map-support': 0.8.1 @@ -19528,7 +19881,29 @@ snapshots: typedarray@0.0.6: {} - typeorm@0.3.20(ts-node@10.9.2): + typeorm@0.3.20(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.4.5)): + dependencies: + '@sqltools/formatter': 1.2.5 + app-root-path: 3.1.0 + buffer: 6.0.3 + chalk: 4.1.2 + cli-highlight: 2.1.11 + dayjs: 1.11.13 + debug: 4.3.7 + dotenv: 16.4.5 + glob: 10.4.5 + mkdirp: 2.1.6 + reflect-metadata: 0.2.2 + sha.js: 2.4.11 + tslib: 2.7.0 + uuid: 9.0.1 + yargs: 17.7.2 + optionalDependencies: + ts-node: 10.9.2(@types/node@18.19.54)(typescript@5.4.5) + transitivePeerDependencies: + - supports-color + + typeorm@0.3.20(ts-node@10.9.2(@types/node@18.19.54)(typescript@5.5.3)): dependencies: '@sqltools/formatter': 1.2.5 app-root-path: 3.1.0 @@ -19542,10 +19917,11 @@ snapshots: mkdirp: 2.1.6 reflect-metadata: 0.2.2 sha.js: 2.4.11 - ts-node: 10.9.2(@types/node@18.19.54)(typescript@5.5.3) tslib: 2.7.0 uuid: 9.0.1 yargs: 17.7.2 + optionalDependencies: + ts-node: 10.9.2(@types/node@18.19.54)(typescript@5.5.3) transitivePeerDependencies: - supports-color @@ -19697,7 +20073,7 @@ snapshots: convert-source-map: 2.0.0 valibot@0.42.1(typescript@5.5.3): - dependencies: + optionalDependencies: typescript: 5.5.3 valid-url@1.0.9: {} From 45a86fcf14d911089fd98a19f9b5bd797d1ffc2c Mon Sep 17 00:00:00 2001 From: Timo Glastra Date: Thu, 31 Oct 2024 19:49:45 +0530 Subject: [PATCH 2/3] updates Signed-off-by: Timo Glastra --- packages/siop-oid4vp/lib/helpers/Revocation.ts | 3 +++ .../lib/schemas/AuthorizationResponseOpts.schema.ts | 6 ++++++ packages/siop-oid4vp/package.json | 2 +- pnpm-lock.yaml | 11 ++++++----- 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/packages/siop-oid4vp/lib/helpers/Revocation.ts b/packages/siop-oid4vp/lib/helpers/Revocation.ts index ab06df80..e0ddb3f4 100644 --- a/packages/siop-oid4vp/lib/helpers/Revocation.ts +++ b/packages/siop-oid4vp/lib/helpers/Revocation.ts @@ -67,6 +67,9 @@ function originalTypeToVerifiableCredentialTypeFormat(original: WrappedVerifiabl function credentialHasStatus(wrappedVerifiableCredential: WrappedVerifiableCredential) { if (CredentialMapper.isWrappedSdJwtVerifiableCredential(wrappedVerifiableCredential)) { return wrappedVerifiableCredential.decoded.status !== undefined + } else if (CredentialMapper.isWrappedMdocCredential(wrappedVerifiableCredential)) { + // No revocation supported at the moment + return false } else { return wrappedVerifiableCredential.credential.credentialStatus !== undefined } diff --git a/packages/siop-oid4vp/lib/schemas/AuthorizationResponseOpts.schema.ts b/packages/siop-oid4vp/lib/schemas/AuthorizationResponseOpts.schema.ts index a6a4a445..ffb4eee2 100644 --- a/packages/siop-oid4vp/lib/schemas/AuthorizationResponseOpts.schema.ts +++ b/packages/siop-oid4vp/lib/schemas/AuthorizationResponseOpts.schema.ts @@ -1872,6 +1872,9 @@ export const AuthorizationResponseOptsSchemaObj = { }, { "$ref": "#/definitions/CompactSdJwtVc" + }, + { + "$ref": "#/definitions/MdocOid4vpMdocVpToken" } ] } @@ -2322,6 +2325,9 @@ export const AuthorizationResponseOptsSchemaObj = { "type": "string", "description": "Represents a selective disclosure JWT vc in compact form." }, + "MdocOid4vpMdocVpToken": { + "type": "string" + }, "VPTokenLocation": { "type": "string", "enum": [ diff --git a/packages/siop-oid4vp/package.json b/packages/siop-oid4vp/package.json index 6fead863..c7f2b75b 100644 --- a/packages/siop-oid4vp/package.json +++ b/packages/siop-oid4vp/package.json @@ -17,7 +17,7 @@ "@astronautlabs/jsonpath": "^1.1.2", "@sphereon/jarm": "workspace:*", "@sphereon/oid4vc-common": "workspace:*", - "@sphereon/pex": "5.0.0-unstable.21", + "@sphereon/pex": "5.0.0-unstable.22", "@sphereon/pex-models": "^2.3.1", "@sphereon/ssi-types": "0.30.2-next.129", "cross-fetch": "^4.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3fc3dcf8..e32042de 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -449,8 +449,8 @@ importers: specifier: workspace:* version: link:../common '@sphereon/pex': - specifier: 5.0.0-unstable.21 - version: 5.0.0-unstable.21 + specifier: 5.0.0-unstable.22 + version: 5.0.0-unstable.22 '@sphereon/pex-models': specifier: ^2.3.1 version: 2.3.1 @@ -2544,12 +2544,13 @@ packages: '@sphereon/kmp-mdl-mdoc@0.2.0-SNAPSHOT.22': resolution: {integrity: sha512-uAZZExVy+ug9JLircejWa5eLtAZ7bnBP6xb7DO2+86LRsHNLh2k2jMWJYxp+iWtGHTsh6RYsZl14ScQLvjiQ/A==} + bundledDependencies: [] '@sphereon/pex-models@2.3.1': resolution: {integrity: sha512-SByU4cJ0XYA6VZQ/L6lsSiRcFtBPHbFioCeQ4GP7/W/jQ+PSBD7uK2oTnKQ9/0iEiMK/6JYqhKgLs4a9UX3UTQ==} - '@sphereon/pex@5.0.0-unstable.21': - resolution: {integrity: sha512-/HZxn9EkQ4Htt7y0SvTz5NrKlHwcLpYFfthIHs+3jx0prq9afzF+rPUDzbz+8SkO5KN6px/vTtwV7J0GVqZeIQ==} + '@sphereon/pex@5.0.0-unstable.22': + resolution: {integrity: sha512-7C/cmIetKLuQGIW1RPgTOmi05Xm55wbsCJx1O58oByMSTAlQ0JcJ4EBDbb+pGMalaIYgXv8P0oddQbrVAtiedA==} engines: {node: '>=18'} '@sphereon/ssi-express-support@0.30.1': @@ -12009,7 +12010,7 @@ snapshots: '@sphereon/pex-models@2.3.1': {} - '@sphereon/pex@5.0.0-unstable.21': + '@sphereon/pex@5.0.0-unstable.22': dependencies: '@astronautlabs/jsonpath': 1.1.2 '@sd-jwt/decode': 0.7.2 From 403debf78ca5bb40db529c82d3f23dc34a9b0aa9 Mon Sep 17 00:00:00 2001 From: Timo Glastra Date: Thu, 31 Oct 2024 19:57:06 +0530 Subject: [PATCH 3/3] updates Signed-off-by: Timo Glastra --- packages/siop-oid4vp/package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/siop-oid4vp/package.json b/packages/siop-oid4vp/package.json index c7f2b75b..13d1835d 100644 --- a/packages/siop-oid4vp/package.json +++ b/packages/siop-oid4vp/package.json @@ -17,7 +17,7 @@ "@astronautlabs/jsonpath": "^1.1.2", "@sphereon/jarm": "workspace:*", "@sphereon/oid4vc-common": "workspace:*", - "@sphereon/pex": "5.0.0-unstable.22", + "@sphereon/pex": "5.0.0-unstable.24", "@sphereon/pex-models": "^2.3.1", "@sphereon/ssi-types": "0.30.2-next.129", "cross-fetch": "^4.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e32042de..7378a309 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -449,8 +449,8 @@ importers: specifier: workspace:* version: link:../common '@sphereon/pex': - specifier: 5.0.0-unstable.22 - version: 5.0.0-unstable.22 + specifier: 5.0.0-unstable.24 + version: 5.0.0-unstable.24 '@sphereon/pex-models': specifier: ^2.3.1 version: 2.3.1 @@ -2549,8 +2549,8 @@ packages: '@sphereon/pex-models@2.3.1': resolution: {integrity: sha512-SByU4cJ0XYA6VZQ/L6lsSiRcFtBPHbFioCeQ4GP7/W/jQ+PSBD7uK2oTnKQ9/0iEiMK/6JYqhKgLs4a9UX3UTQ==} - '@sphereon/pex@5.0.0-unstable.22': - resolution: {integrity: sha512-7C/cmIetKLuQGIW1RPgTOmi05Xm55wbsCJx1O58oByMSTAlQ0JcJ4EBDbb+pGMalaIYgXv8P0oddQbrVAtiedA==} + '@sphereon/pex@5.0.0-unstable.24': + resolution: {integrity: sha512-CZc+kr8cJqPsFSpg4kHyamr5oB5xLVP2E5eJ0pbetOfOE2uSxqk0/A8zGazcPhU1zZILrO51hD4vW/hJRgtKJQ==} engines: {node: '>=18'} '@sphereon/ssi-express-support@0.30.1': @@ -12010,7 +12010,7 @@ snapshots: '@sphereon/pex-models@2.3.1': {} - '@sphereon/pex@5.0.0-unstable.22': + '@sphereon/pex@5.0.0-unstable.24': dependencies: '@astronautlabs/jsonpath': 1.1.2 '@sd-jwt/decode': 0.7.2