From 973238adb650be41fc30ce66a3af22ffc67bd746 Mon Sep 17 00:00:00 2001 From: Niels Klomp Date: Thu, 28 Sep 2023 17:07:20 +0200 Subject: [PATCH] fix: We didn't merge verification options set on an object and passed in as arguments to a method properly as pointed out in https://github.com/Sphereon-Opensource/SSI-SDK/issues/125 --- package.json | 12 +- .../AuthorizationRequest.ts | 4 +- src/authorization-request/Opts.ts | 47 +- src/authorization-request/Payload.ts | 14 +- src/authorization-request/types.ts | 6 - src/did/DIDResolution.ts | 8 +- src/did/DidJWT.ts | 2 +- src/op/OP.ts | 56 +-- src/rp/InMemoryRPSessionManager.ts | 1 + src/rp/RP.ts | 18 +- .../AuthorizationRequestPayloadVD11.schema.ts | 11 +- .../AuthorizationRequestPayloadVID1.schema.ts | 11 +- src/types/SIOP.types.ts | 2 +- yarn.lock | 425 ++++++++++++++++-- 14 files changed, 501 insertions(+), 116 deletions(-) diff --git a/package.json b/package.json index 28d73bf3..3db5a32e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@sphereon/did-auth-siop", - "version": "0.3.2-unstable.8", + "version": "0.3.2-unstable.9", "source": "src/index.ts", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -29,9 +29,9 @@ }, "dependencies": { "@sphereon/did-uni-client": "^0.6.0", - "@sphereon/pex": "^2.1.0", + "@sphereon/pex": "^2.1.2", "@sphereon/pex-models": "^2.0.3", - "@sphereon/ssi-types": "^0.14.1", + "@sphereon/ssi-types": "^0.15.1", "@sphereon/wellknown-dids-client": "^0.1.3", "@astronautlabs/jsonpath": "^1.1.2", "cross-fetch": "^3.1.8", @@ -47,8 +47,8 @@ "devDependencies": { "@digitalcredentials/did-method-key": "^2.0.3", "@digitalcredentials/ed25519-signature-2020": "^3.0.2", - "@digitalcredentials/jsonld-signatures": "^9.3.1", - "@digitalcredentials/vc": "^5.0.0", + "@digitalcredentials/jsonld-signatures": "^9.3.2", + "@digitalcredentials/vc": "^6.0.0", "@types/jest": "^29.5.3", "@types/language-tags": "^1.0.1", "@types/uuid": "^9.0.1", @@ -80,7 +80,7 @@ "typescript": "4.9.5" }, "resolutions": { - "isomorphic-webcrypto": "npm:@sphereon/isomorphic-webcrypto@^2.4.0-unstable.1" + "isomorphic-webcrypto": "npm:@sphereon/isomorphic-webcrypto@^2.4.0-unstable.4" }, "files": [ "dist" diff --git a/src/authorization-request/AuthorizationRequest.ts b/src/authorization-request/AuthorizationRequest.ts index 090675cd..6084f93e 100644 --- a/src/authorization-request/AuthorizationRequest.ts +++ b/src/authorization-request/AuthorizationRequest.ts @@ -119,12 +119,14 @@ export class AuthorizationRequest { const jwt = await this.requestObjectJwt(); if (jwt) { parseJWT(jwt); + const resolver = getResolver(opts.verification.resolveOpts); const options: JWTVerifyOptions = { ...opts.verification?.resolveOpts?.jwtVerifyOpts, + resolver, audience: getAudience(jwt), }; - verifiedJwt = await verifyDidJWT(jwt, getResolver(opts.verification.resolveOpts), options); + verifiedJwt = await verifyDidJWT(jwt, resolver, options); if (!verifiedJwt || !verifiedJwt.payload) { throw Error(SIOPErrors.ERROR_VERIFYING_SIGNATURE); } diff --git a/src/authorization-request/Opts.ts b/src/authorization-request/Opts.ts index 6a88d140..5fcb8b1a 100644 --- a/src/authorization-request/Opts.ts +++ b/src/authorization-request/Opts.ts @@ -1,5 +1,5 @@ import { assertValidRequestObjectOpts } from '../request-object/Opts'; -import { isExternalVerification, isInternalVerification, SIOPErrors } from '../types'; +import { ExternalVerification, InternalVerification, isExternalVerification, isInternalVerification, SIOPErrors } from '../types'; import { assertValidRequestRegistrationOpts } from './RequestRegistration'; import { CreateAuthorizationRequestOpts, VerifyAuthorizationRequestOpts } from './types'; @@ -20,3 +20,48 @@ export const assertValidAuthorizationRequestOpts = (opts: CreateAuthorizationReq assertValidRequestObjectOpts(opts.requestObject, false); assertValidRequestRegistrationOpts(opts['registration'] ? opts['registration'] : opts.clientMetadata); }; + +export const mergeVerificationOpts = ( + classOpts: { + verification?: InternalVerification | ExternalVerification; + }, + requestOpts: { + correlationId: string; + verification?: InternalVerification | ExternalVerification; + } +) => { + const resolver = requestOpts.verification?.resolveOpts?.resolver ?? classOpts.verification?.resolveOpts?.resolver; + const wellknownDIDVerifyCallback = requestOpts.verification?.wellknownDIDVerifyCallback ?? classOpts.verification?.wellknownDIDVerifyCallback; + const presentationVerificationCallback = + requestOpts.verification?.presentationVerificationCallback ?? classOpts.verification?.presentationVerificationCallback; + const replayRegistry = requestOpts.verification?.replayRegistry ?? classOpts.verification?.replayRegistry; + return { + ...classOpts.verification, + ...requestOpts.verification, + ...(wellknownDIDVerifyCallback && { wellknownDIDVerifyCallback }), + ...(presentationVerificationCallback && { presentationVerificationCallback }), + ...(replayRegistry && { replayRegistry }), + resolveOpts: { + ...classOpts.verification?.resolveOpts, + ...requestOpts.verification?.resolveOpts, + ...(resolver && { resolver }), + jwtVerifyOpts: { + ...classOpts.verification?.resolveOpts?.jwtVerifyOpts, + ...requestOpts.verification?.resolveOpts?.jwtVerifyOpts, + ...(resolver && { resolver }), + policies: { + ...classOpts.verification?.resolveOpts?.jwtVerifyOpts?.policies, + ...requestOpts.verification?.resolveOpts?.jwtVerifyOpts?.policies, + aud: false, // todo: check why we are setting this. Probably needs a PR upstream in DID-JWT + }, + }, + }, + revocationOpts: { + ...classOpts.verification?.revocationOpts, + ...requestOpts.verification?.revocationOpts, + revocationVerificationCallback: + requestOpts.verification?.revocationOpts?.revocationVerificationCallback ?? + classOpts?.verification?.revocationOpts?.revocationVerificationCallback, + }, + }; +}; diff --git a/src/authorization-request/Payload.ts b/src/authorization-request/Payload.ts index ae6a2420..bbe8057e 100644 --- a/src/authorization-request/Payload.ts +++ b/src/authorization-request/Payload.ts @@ -31,14 +31,12 @@ export const createPresentationDefinitionClaimsProperties = (opts: ClaimPayloadO return { ...(opts.id_token ? { id_token: opts.id_token } : {}), - ...(opts.vp_token.presentation_definition || opts.vp_token.presentation_definition_uri - ? { - vp_token: { - ...(!opts.vp_token.presentation_definition_uri ? { presentation_definition: opts.vp_token.presentation_definition } : {}), - ...(opts.vp_token.presentation_definition_uri ? { presentation_definition_uri: opts.vp_token.presentation_definition_uri } : {}), - }, - } - : {}), + ...((opts.vp_token.presentation_definition || opts.vp_token.presentation_definition_uri) && { + vp_token: { + ...(!opts.vp_token.presentation_definition_uri && { presentation_definition: opts.vp_token.presentation_definition }), + ...(opts.vp_token.presentation_definition_uri && { presentation_definition_uri: opts.vp_token.presentation_definition_uri }), + }, + }), }; }; diff --git a/src/authorization-request/types.ts b/src/authorization-request/types.ts index a1ba0e75..416da298 100644 --- a/src/authorization-request/types.ts +++ b/src/authorization-request/types.ts @@ -52,7 +52,6 @@ interface AuthorizationRequestCommonOpts { // Yes, this includes common payload properties both at the payload level as well as in the requestObject.payload property. That is to support OAuth2 with or without a signed OpenID requestObject version: SupportedVersion; - clientMetadata?: ClientMetadataOpts; // this maps to 'registration' for older SIOPv2 specs! OPTIONAL. This parameter is used by the RP to provide information about itself to a Self-Issued OP that would normally be provided to an OP during Dynamic RP Registration, as specified in {#rp-registration-parameter}. payload?: AuthorizationRequestPayloadOpts; requestObject: RequestObjectOpts; @@ -63,10 +62,7 @@ interface AuthorizationRequestCommonOpts { export type AuthorizationRequestOptsVID1 = AuthorizationRequestCommonOpts; export interface AuthorizationRequestOptsVD11 extends AuthorizationRequestCommonOpts { - // clientMetadata?: ClientMetadataOpts; // from openid-connect-self-issued-v2-1_0-11 look at https://openid.net/specs/openid-connect-registration-1_0.html - // clientMetadataUri?: string; // from openid-connect-self-issued-v2-1_0-11 idTokenType?: string; // OPTIONAL. Space-separated string that specifies the types of ID token the RP wants to obtain, with the values appearing in order of preference. The allowed individual values are subject_signed and attester_signed (see Section 8.2). The default value is attester_signed. - // claims?: ClaimPayloadCommonOpts; } export type CreateAuthorizationRequestOpts = AuthorizationRequestOptsVID1 | AuthorizationRequestOptsVD11; @@ -80,8 +76,6 @@ export interface VerifyAuthorizationRequestOpts { state?: string; // If provided the state in the request needs to match supportedVersions?: SupportedVersion[]; - // redirectUri?: string; - // wellknownDIDverifyCallback?: WellknownDIDVerifyCallback; } /** diff --git a/src/did/DIDResolution.ts b/src/did/DIDResolution.ts index 94e20850..dd599969 100644 --- a/src/did/DIDResolution.ts +++ b/src/did/DIDResolution.ts @@ -6,13 +6,16 @@ import { DIDDocument, ResolveOpts, SIOPErrors, SubjectIdentifierType, SubjectSyn import { getMethodFromDid, toSIOPRegistrationDidMethod } from './index'; export function getResolver(opts: ResolveOpts): Resolvable { - if (opts && opts.resolver) { + if (opts?.resolver && typeof opts.resolver === 'object') { return opts.resolver; } if (!opts || !opts.subjectSyntaxTypesSupported) { if (opts?.noUniversalResolverFallback) { throw Error(`No subject syntax types nor did methods configured for DID resolution, but fallback to universal resolver has been disabled`); } + console.log( + `Falling back to universal resolver as not resolve opts have been provided, or no subject syntax types supported are provided. It is wise to fix this` + ); return new UniResolver(); } @@ -33,6 +36,9 @@ export function getResolver(opts: ResolveOpts): Resolvable { if (opts?.noUniversalResolverFallback) { throw Error(`No subject syntax types nor did methods configured for DID resolution, but fallback to universal resolver has been disabled`); } + console.log( + `Falling back to universal resolver as not resolve opts have been provided, or no subject syntax types supported are provided. It is wise to fix this` + ); return new UniResolver(); } } diff --git a/src/did/DidJWT.ts b/src/did/DidJWT.ts index e5c1c167..8f598280 100644 --- a/src/did/DidJWT.ts +++ b/src/did/DidJWT.ts @@ -56,7 +56,7 @@ import { * @return {Promise} a promise which resolves with a response object or rejects with an error */ export async function verifyDidJWT(jwt: string, resolver: Resolvable, options: JWTVerifyOptions): Promise { - return verifyJWT(jwt, { resolver, ...options }); + return verifyJWT(jwt, { ...options, resolver }); } /** diff --git a/src/op/OP.ts b/src/op/OP.ts index b3bef12a..05bf60eb 100644 --- a/src/op/OP.ts +++ b/src/op/OP.ts @@ -4,6 +4,7 @@ import { IIssuerId } from '@sphereon/ssi-types/src/types/vc'; import { v4 as uuidv4 } from 'uuid'; import { AuthorizationRequest, URI, VerifyAuthorizationRequestOpts } from '../authorization-request'; +import { mergeVerificationOpts } from '../authorization-request/Opts'; import { AuthorizationResponse, AuthorizationResponseOpts, @@ -74,27 +75,8 @@ export class OP { throw error; }); - const verification = { - ...requestOpts?.verification, - ...{ - resolveOpts: { - ...requestOpts?.verification?.resolveOpts, - ...{ - jwtVerifyOpts: { - ...requestOpts?.verification?.resolveOpts?.jwtVerifyOpts, - ...{ - policies: { - ...requestOpts?.verification?.resolveOpts?.jwtVerifyOpts?.policies, - aud: false, - }, - }, - }, - }, - }, - }, - }; return authorizationRequest - .verify(this.newVerifyAuthorizationRequestOpts({ ...requestOpts, verification, correlationId })) + .verify(this.newVerifyAuthorizationRequestOpts({ ...requestOpts, correlationId })) .then((verifiedAuthorizationRequest: VerifiedAuthorizationRequest) => { this.emitEvent(AuthorizationEvents.ON_AUTH_REQUEST_VERIFIED_SUCCESS, { correlationId, @@ -182,10 +164,7 @@ export class OP { ) { throw new Error(SIOPErrors.BAD_PARAMS); } - /*const request = response.authorizationRequest; - if (!request) { - throw Error('Cannot submit an authorization response without a request present'); - }*/ + const payload = await response.payload; const idToken = await response.idToken?.payload(); const redirectURI = authorizationResponse.redirectURI || idToken?.aud; @@ -242,30 +221,33 @@ export class OP { if (!issuer) { throw Error(`No issuer value present. Either use IDv1, JWT VC Presentation profile version, or provide a DID as issuer value`); } + // We are taking the whole presentationExchange object from a certain location + const presentationExchange = opts.presentationExchange ?? this._createResponseOptions.presentationExchange; return { ...this._createResponseOptions, + ...opts, + signature: { + ...this._createResponseOptions?.signature, + ...opts.signature, + }, + ...(presentationExchange && { presentationExchange }), registration: { ...this._createResponseOptions?.registration, issuer }, - ...(opts?.audience ? { redirectUri: opts.audience } : {}), - ...(opts?.presentationExchange ? { presentationExchange: opts.presentationExchange } : {}), - ...(opts?.signature - ? { signature: opts.signature } - : this._createResponseOptions?.signature - ? { signature: this._createResponseOptions.signature } - : {}), + redirectUri: opts.audience ?? this._createResponseOptions.redirectUri, }; } - private newVerifyAuthorizationRequestOpts(opts: { + private newVerifyAuthorizationRequestOpts(requestOpts: { correlationId: string; verification?: InternalVerification | ExternalVerification; - // verifyCallback?: VerifyCallback; }): VerifyAuthorizationRequestOpts { - return { + const verification: VerifyAuthorizationRequestOpts = { ...this._verifyRequestOptions, - correlationId: opts.correlationId, - verification: { ...this._verifyRequestOptions.verification, ...opts?.verification }, - // wellknownDIDverifyCallback: opts?.verifyCallback, + ...requestOpts, + verification: mergeVerificationOpts(this._verifyRequestOptions, requestOpts), + correlationId: requestOpts.correlationId, }; + + return verification; } private async emitEvent( diff --git a/src/rp/InMemoryRPSessionManager.ts b/src/rp/InMemoryRPSessionManager.ts index 847dfad3..35179f4f 100644 --- a/src/rp/InMemoryRPSessionManager.ts +++ b/src/rp/InMemoryRPSessionManager.ts @@ -205,6 +205,7 @@ export class InMemoryRPSessionManager implements IRPSessionManager { this.authorizationResponses[event.correlationId] = eventState as AuthorizationResponseState; } } catch (error: unknown) { + console.log(`Error in update state happened: ${error}`); // TODO VDX-166 handle error } } diff --git a/src/rp/RP.ts b/src/rp/RP.ts index 73bdee4f..72cb8595 100644 --- a/src/rp/RP.ts +++ b/src/rp/RP.ts @@ -11,6 +11,7 @@ import { RequestPropertyWithTargets, URI, } from '../authorization-request'; +import { mergeVerificationOpts } from '../authorization-request/Opts'; import { AuthorizationResponse, PresentationDefinitionWithLocation, VerifyAuthorizationResponseOpts } from '../authorization-response'; import { getNonce, getState } from '../helpers'; import { @@ -282,9 +283,9 @@ export class RP { presentationDefinitions?: PresentationDefinitionWithLocation | PresentationDefinitionWithLocation[]; } ): Promise { - let correlationId = opts?.correlationId || this._verifyResponseOptions.correlationId; - let state = opts?.state || this._verifyResponseOptions.state; - let nonce = opts?.nonce || this._verifyResponseOptions.nonce; + let correlationId = opts?.correlationId ?? this._verifyResponseOptions.correlationId; + let state = opts?.state ?? this._verifyResponseOptions.state; + let nonce = opts?.nonce ?? this._verifyResponseOptions.nonce; if (this.sessionManager) { const resNonce = (await authorizationResponse.getMergedProperty('nonce', false)) as string; const resState = (await authorizationResponse.getMergedProperty('state', false)) as string; @@ -305,16 +306,17 @@ export class RP { } return { ...this._verifyResponseOptions, + ...opts, correlationId, audience: - opts?.audience || - this._verifyResponseOptions.audience || - this._verifyResponseOptions.verification.resolveOpts.jwtVerifyOpts.audience || + opts?.audience ?? + this._verifyResponseOptions.audience ?? + this._verifyResponseOptions.verification.resolveOpts.jwtVerifyOpts.audience ?? this._createRequestOptions.payload.client_id, state, nonce, - verification: opts?.verification || this._verifyResponseOptions.verification, - presentationDefinitions: opts?.presentationDefinitions || this._verifyResponseOptions.presentationDefinitions, + verification: mergeVerificationOpts(this._verifyResponseOptions, opts), + presentationDefinitions: opts?.presentationDefinitions ?? this._verifyResponseOptions.presentationDefinitions, }; } diff --git a/src/schemas/AuthorizationRequestPayloadVD11.schema.ts b/src/schemas/AuthorizationRequestPayloadVD11.schema.ts index 8f9e23b1..da8df0d2 100644 --- a/src/schemas/AuthorizationRequestPayloadVD11.schema.ts +++ b/src/schemas/AuthorizationRequestPayloadVD11.schema.ts @@ -81,7 +81,7 @@ export const AuthorizationRequestPayloadVD11SchemaObj = { "type": "string" }, "response_mode": { - "$ref": "#/definitions/ResponseMode" + "type": "string" }, "request": { "type": "string" @@ -324,15 +324,6 @@ export const AuthorizationRequestPayloadVD11SchemaObj = { ], "additionalProperties": false }, - "ResponseMode": { - "type": "string", - "enum": [ - "fragment", - "form_post", - "post", - "query" - ] - }, "ClaimPayloadCommon": { "type": "object", "additionalProperties": false diff --git a/src/schemas/AuthorizationRequestPayloadVID1.schema.ts b/src/schemas/AuthorizationRequestPayloadVID1.schema.ts index 1b4090d1..4daec46d 100644 --- a/src/schemas/AuthorizationRequestPayloadVID1.schema.ts +++ b/src/schemas/AuthorizationRequestPayloadVID1.schema.ts @@ -78,7 +78,7 @@ export const AuthorizationRequestPayloadVID1SchemaObj = { "type": "string" }, "response_mode": { - "$ref": "#/definitions/ResponseMode" + "type": "string" }, "request": { "type": "string" @@ -296,15 +296,6 @@ export const AuthorizationRequestPayloadVID1SchemaObj = { ], "additionalProperties": false }, - "ResponseMode": { - "type": "string", - "enum": [ - "fragment", - "form_post", - "post", - "query" - ] - }, "ClaimPayloadVID1": { "type": "object", "properties": { diff --git a/src/types/SIOP.types.ts b/src/types/SIOP.types.ts index f4c8d273..1de5bea3 100644 --- a/src/types/SIOP.types.ts +++ b/src/types/SIOP.types.ts @@ -569,7 +569,7 @@ export enum GrantType { export enum ResponseMode { FRAGMENT = 'fragment', FORM_POST = 'form_post', - POST = 'post', + POST = 'post', // Used in the spec <= version 17 QUERY = 'query', } diff --git a/yarn.lock b/yarn.lock index 671a11a9..01d11551 100644 --- a/yarn.lock +++ b/yarn.lock @@ -34,6 +34,14 @@ dependencies: "@babel/highlight" "^7.22.5" +"@babel/code-frame@^7.22.13": + version "7.22.13" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e" + integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w== + dependencies: + "@babel/highlight" "^7.22.13" + chalk "^2.4.2" + "@babel/compat-data@^7.22.9": version "7.22.9" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.9.tgz#71cdb00a1ce3a329ce4cbec3a44f9fef35669730" @@ -60,6 +68,27 @@ json5 "^2.2.2" semver "^6.3.1" +"@babel/core@^7.14.6": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.0.tgz#f8259ae0e52a123eb40f552551e647b506a94d83" + integrity sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.0" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-module-transforms" "^7.23.0" + "@babel/helpers" "^7.23.0" + "@babel/parser" "^7.23.0" + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.0" + "@babel/types" "^7.23.0" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + "@babel/generator@^7.22.7", "@babel/generator@^7.22.9", "@babel/generator@^7.7.2": version "7.22.9" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.22.9.tgz#572ecfa7a31002fa1de2a9d91621fd895da8493d" @@ -70,6 +99,27 @@ "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" +"@babel/generator@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.0.tgz#df5c386e2218be505b34837acbcb874d7a983420" + integrity sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g== + dependencies: + "@babel/types" "^7.23.0" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + +"@babel/helper-compilation-targets@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz#0698fc44551a26cf29f18d4662d5bf545a6cfc52" + integrity sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw== + dependencies: + "@babel/compat-data" "^7.22.9" + "@babel/helper-validator-option" "^7.22.15" + browserslist "^4.21.9" + lru-cache "^5.1.1" + semver "^6.3.1" + "@babel/helper-compilation-targets@^7.22.9": version "7.22.9" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.9.tgz#f9d0a7aaaa7cd32a3f31c9316a69f5a9bcacb892" @@ -81,6 +131,11 @@ lru-cache "^5.1.1" semver "^6.3.1" +"@babel/helper-environment-visitor@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== + "@babel/helper-environment-visitor@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz#f06dd41b7c1f44e1f8da6c4055b41ab3a09a7e98" @@ -94,6 +149,14 @@ "@babel/template" "^7.22.5" "@babel/types" "^7.22.5" +"@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== + dependencies: + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" + "@babel/helper-hoist-variables@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" @@ -101,6 +164,13 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-module-imports@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" + integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== + dependencies: + "@babel/types" "^7.22.15" + "@babel/helper-module-imports@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz#1a8f4c9f4027d23f520bd76b364d44434a72660c" @@ -119,7 +189,18 @@ "@babel/helper-split-export-declaration" "^7.22.6" "@babel/helper-validator-identifier" "^7.22.5" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0": +"@babel/helper-module-transforms@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz#3ec246457f6c842c0aee62a01f60739906f7047e" + integrity sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-validator-identifier" "^7.22.20" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== @@ -143,11 +224,21 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== + "@babel/helper-validator-identifier@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#9544ef6a33999343c8740fa51350f30eeaaaf193" integrity sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ== +"@babel/helper-validator-option@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz#694c30dfa1d09a6534cdfcafbe56789d36aba040" + integrity sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA== + "@babel/helper-validator-option@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz#de52000a15a177413c8234fa3a8af4ee8102d0ac" @@ -162,6 +253,24 @@ "@babel/traverse" "^7.22.6" "@babel/types" "^7.22.5" +"@babel/helpers@^7.23.0": + version "7.23.1" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.1.tgz#44e981e8ce2b9e99f8f0b703f3326a4636c16d15" + integrity sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA== + dependencies: + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.0" + "@babel/types" "^7.23.0" + +"@babel/highlight@^7.22.13": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.20.tgz#4ca92b71d80554b01427815e06f2df965b9c1f54" + integrity sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" + "@babel/highlight@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.5.tgz#aa6c05c5407a67ebce408162b7ede789b4d22031" @@ -176,6 +285,19 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.7.tgz#df8cf085ce92ddbdbf668a7f186ce848c9036cae" integrity sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q== +"@babel/parser@^7.22.15", "@babel/parser@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719" + integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw== + +"@babel/plugin-proposal-export-namespace-from@^7.14.5": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz#5f7313ab348cdb19d590145f9247540e94761203" + integrity sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" @@ -197,6 +319,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.12.13" +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" @@ -274,6 +403,24 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-modules-commonjs@^7.14.5": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz#b3dba4757133b2762c00f4f94590cf6d52602481" + integrity sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ== + dependencies: + "@babel/helper-module-transforms" "^7.23.0" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-simple-access" "^7.22.5" + +"@babel/template@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" + integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== + dependencies: + "@babel/code-frame" "^7.22.13" + "@babel/parser" "^7.22.15" + "@babel/types" "^7.22.15" + "@babel/template@^7.22.5", "@babel/template@^7.3.3": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.5.tgz#0c8c4d944509875849bd0344ff0050756eefc6ec" @@ -299,6 +446,22 @@ debug "^4.1.0" globals "^11.1.0" +"@babel/traverse@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.0.tgz#18196ddfbcf4ccea324b7f6d3ada00d8c5a99c53" + integrity sha512-t/QaEvyIoIkwzpiZ7aoSKK8kObQYeF7T2v+dazAYCb8SXtp58zEVkWW7zAnju8FNKNdr4ScAOEDmMItbyOmEYw== + dependencies: + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.0" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.23.0" + "@babel/types" "^7.23.0" + debug "^4.1.0" + globals "^11.1.0" + "@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.5", "@babel/types@^7.3.3": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.5.tgz#cd93eeaab025880a3a47ec881f4b096a5b786fbe" @@ -308,6 +471,15 @@ "@babel/helper-validator-identifier" "^7.22.5" to-fast-properties "^2.0.0" +"@babel/types@^7.22.15", "@babel/types@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.0.tgz#8c1f020c9df0e737e4e247c0619f58c68458aaeb" + integrity sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg== + dependencies: + "@babel/helper-string-parser" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -636,16 +808,72 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" +"@digitalbazaar/bitstring@^3.0.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@digitalbazaar/bitstring/-/bitstring-3.1.0.tgz#bbbacb80eaaa53594723a801879b3a95a0401b11" + integrity sha512-Cii+Sl++qaexOvv3vchhgZFfSmtHPNIPzGegaq4ffPnflVXFu+V2qrJ17aL2+gfLxrlC/zazZFuAltyKTPq7eg== + dependencies: + base64url-universal "^2.0.0" + pako "^2.0.4" + +"@digitalbazaar/http-client@^3.4.1": + version "3.4.1" + resolved "https://registry.yarnpkg.com/@digitalbazaar/http-client/-/http-client-3.4.1.tgz#5116fc44290d647cfe4b615d1f3fad9d6005e44d" + integrity sha512-Ahk1N+s7urkgj7WvvUND5f8GiWEPfUw0D41hdElaqLgu8wZScI8gdI0q+qWw5N1d35x7GCRH2uk9mi+Uzo9M3g== + dependencies: + ky "^0.33.3" + ky-universal "^0.11.0" + undici "^5.21.2" + "@digitalbazaar/security-context@^1.0.0": version "1.0.1" resolved "https://registry.yarnpkg.com/@digitalbazaar/security-context/-/security-context-1.0.1.tgz#badc4b8da03411a32d4e7321ce7c4b355776b410" integrity sha512-0WZa6tPiTZZF8leBtQgYAfXQePFQp2z5ivpCEN/iZguYYZ0TB9qRmWtan5XH6mNFuusHtMcyIzAcReyE6rZPhA== +"@digitalbazaar/vc-status-list-context@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@digitalbazaar/vc-status-list-context/-/vc-status-list-context-3.0.1.tgz#0507b7b6f6ee8b5e7e4d402e7a2905efdc70a316" + integrity sha512-vQsqQXpmSXKNy/C0xxFUOBzz60dHh6oupQam1xRC8IspVC11hYJiX9SAhmbI0ulHvX1R2JfqZaJHZjmAyMZ/aA== + +"@digitalbazaar/vc-status-list@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@digitalbazaar/vc-status-list/-/vc-status-list-7.0.0.tgz#6153e099e20cc1203d04ff9badf891ae3f5b4cd4" + integrity sha512-fFSZx5S/LG9PRxHkoVgH+jMib18zAVjWLbcsrdK2qE8jalX8Kg/IILFr37ifmL4CYXIwelM0cff0P/SIaz96zw== + dependencies: + "@digitalbazaar/bitstring" "^3.0.0" + "@digitalbazaar/vc" "^5.0.0" + "@digitalbazaar/vc-status-list-context" "^3.0.1" + credentials-context "^2.0.0" + +"@digitalbazaar/vc@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@digitalbazaar/vc/-/vc-5.0.0.tgz#20180fb492cb755eb2c6b6df9a17f7407d5e4b5a" + integrity sha512-XmLM7Ag5W+XidGnFuxFIyUFSMnHnWEMJlHei602GG94+WzFJ6Ik8txzPQL8T18egSoiTsd1VekymbIlSimhuaQ== + dependencies: + credentials-context "^2.0.0" + jsonld "^8.0.0" + jsonld-signatures "^11.0.0" + "@digitalcredentials/base58-universal@^1.0.0", "@digitalcredentials/base58-universal@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@digitalcredentials/base58-universal/-/base58-universal-1.0.1.tgz#41b5a16cdeaac9cf01b23f1e564c560c2599b607" integrity sha512-1xKdJnfITMvrF/sCgwBx2C4p7qcNAARyIvrAOZGqIHmBaT/hAenpC8bf44qVY+UIMuCYP23kqpIfJQebQDThDQ== +"@digitalcredentials/base64url-universal@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@digitalcredentials/base64url-universal/-/base64url-universal-2.0.2.tgz#cfee64eff2e75f71e10aa9b0de381694a73ea55d" + integrity sha512-SgyH5xuoZNu3oIhZjG+kWdk3Hc3eIRgi9/G0auii4jMd65kxBYY5YLmUeF0u1dpWoyrDp62uATq0yBP/sVV29w== + dependencies: + base64url "^3.0.1" + +"@digitalcredentials/bitstring@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@digitalcredentials/bitstring/-/bitstring-2.0.1.tgz#bb887f1d0999980598754e426d831c96a26a3863" + integrity sha512-9priXvsEJGI4LYHPwLqf5jv9HtQGlG0MgeuY8Q4NHN+xWz5rYMylh1TYTVThKa3XI6xF2pR2oEfKZD21eWXveQ== + dependencies: + "@digitalcredentials/base64url-universal" "^2.0.2" + pako "^2.0.4" + "@digitalcredentials/did-io@^1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@digitalcredentials/did-io/-/did-io-1.0.2.tgz#bc653e75112e70b221713fe1692d601394d330b3" @@ -691,7 +919,7 @@ ky "^0.25.1" ky-universal "^0.8.2" -"@digitalcredentials/jsonld-signatures@^9.3.1": +"@digitalcredentials/jsonld-signatures@^9.3.1", "@digitalcredentials/jsonld-signatures@^9.3.2": version "9.3.2" resolved "https://registry.yarnpkg.com/@digitalcredentials/jsonld-signatures/-/jsonld-signatures-9.3.2.tgz#2c8141e7dfec2228b54ebd1f94d925df250351bb" integrity sha512-auubZrr3D7et5O6zCdqoXsLhI8/F26HqneE94gIoZYVuxNHBNaFoDQ1Z71RfddRqwJonHkfkWgeZSzqjv6aUmg== @@ -729,6 +957,11 @@ dependencies: lru-cache "^6.0.0" +"@digitalcredentials/open-badges-context@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@digitalcredentials/open-badges-context/-/open-badges-context-2.0.1.tgz#a883217b17085ee343df7c36d5e11fe8dce373d5" + integrity sha512-cMS+biUjJYwq60xeop6iHPC3Cxrv77jbdS2hPY/IkZfXIZlt2rvB7dz7rP/iGWwRiT5SQBLVdX+ZiDZc8xee/Q== + "@digitalcredentials/rdf-canonize@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@digitalcredentials/rdf-canonize/-/rdf-canonize-1.0.0.tgz#6297d512072004c2be7f280246383a9c4b0877ff" @@ -737,15 +970,39 @@ fast-text-encoding "^1.0.3" isomorphic-webcrypto "^2.3.8" -"@digitalcredentials/vc@^5.0.0": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@digitalcredentials/vc/-/vc-5.0.0.tgz#9940103221d9bdc280ce82ca615624ac2ef08d47" - integrity sha512-87ARRxlAdIuUPArbMYJ8vUY7QqkIvJGFrBwfTH1PcB8Wz1E/M4q3oc/WLrDyJNg4o/irVVB5gkA9iIntTYSpoA== +"@digitalcredentials/vc-status-list@^5.0.2": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@digitalcredentials/vc-status-list/-/vc-status-list-5.0.2.tgz#9de8b23b6d533668a354ff464a689ecc42f24445" + integrity sha512-PI0N7SM0tXpaNLelbCNsMAi34AjOeuhUzMSYTkHdeqRPX7oT2F3ukyOssgr4koEqDxw9shHtxHu3fSJzrzcPMQ== + dependencies: + "@digitalbazaar/vc-status-list-context" "^3.0.1" + "@digitalcredentials/bitstring" "^2.0.1" + "@digitalcredentials/vc" "^4.1.1" + credentials-context "^2.0.0" + +"@digitalcredentials/vc@^4.1.1": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@digitalcredentials/vc/-/vc-4.2.0.tgz#d2197b26547d670965d5969a9e49437f244b5944" + integrity sha512-8Rxpn77JghJN7noBQdcMuzm/tB8vhDwPoFepr3oGd5w+CyJxOk2RnBlgIGlAAGA+mALFWECPv1rANfXno+hdjA== dependencies: "@digitalcredentials/jsonld" "^5.2.1" "@digitalcredentials/jsonld-signatures" "^9.3.1" credentials-context "^2.0.0" +"@digitalcredentials/vc@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@digitalcredentials/vc/-/vc-6.0.0.tgz#5319f7639956e11964d5523bf1596584fc4d3c93" + integrity sha512-RNCkNAKEnkU7/8OiKbS3sM3qePQpH4ZGAXSwaQ0XrRQumPbLEJz8AMpxXmH28sFnmxUrCyvuCGKUq8CBjS1+cQ== + dependencies: + "@digitalbazaar/vc-status-list" "^7.0.0" + "@digitalcredentials/ed25519-signature-2020" "^3.0.2" + "@digitalcredentials/jsonld" "^6.0.0" + "@digitalcredentials/jsonld-signatures" "^9.3.2" + "@digitalcredentials/open-badges-context" "^2.0.1" + "@digitalcredentials/vc-status-list" "^5.0.2" + credentials-context "^2.0.0" + fix-esm "^1.0.1" + "@digitalcredentials/x25519-key-agreement-key-2020@^2.0.2": version "2.0.2" resolved "https://registry.yarnpkg.com/@digitalcredentials/x25519-key-agreement-key-2020/-/x25519-key-agreement-key-2020-2.0.2.tgz#161268d313abe3f3695f66cc809ac0647553a8cb" @@ -1155,31 +1412,24 @@ resolved "https://registry.yarnpkg.com/@sphereon/pex-models/-/pex-models-2.0.3.tgz#8ae1cc7fda9e6d10b65266e4ba3f940428e6816f" integrity sha512-NsPeYmJLhxRG5fJxpcHnRR3xvi7i8SK8s21kYR9oBWO8cBU9qBCpw3gdUNiyI01/h6fbYqkIZ7eBNsHBIzqk5Q== -"@sphereon/pex@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@sphereon/pex/-/pex-2.1.0.tgz#1e0f6c726f595ef2bf5360965b10bc486e78348a" - integrity sha512-108iEqbu6D421pK9Q6bq4wnWcL8V+fEtw4Ry6NhBidIlDHuJehdLM8Z70A/axgNYMB1C0smMDYt1Xur/ROLwvQ== +"@sphereon/pex@^2.1.2": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@sphereon/pex/-/pex-2.1.2.tgz#99ecaf9dcf62bdbaf3a24db28abc0e165051a894" + integrity sha512-x2lo4iRWfKj2NQIGVZIMhwYrCllRY7j0U9t3g0pkx3mxSUwXhQwEYAcBU+AlS5rGv1kLUXRhHDGPUwt7Y0kHgw== dependencies: "@astronautlabs/jsonpath" "^1.1.2" "@sphereon/pex-models" "^2.0.3" - "@sphereon/ssi-types" "^0.13.0" + "@sphereon/ssi-types" "^0.15.1" ajv "^8.12.0" ajv-formats "^2.1.1" jwt-decode "^3.1.2" nanoid "^3.3.6" string.prototype.matchall "^4.0.8" -"@sphereon/ssi-types@^0.13.0": - version "0.13.0" - resolved "https://registry.yarnpkg.com/@sphereon/ssi-types/-/ssi-types-0.13.0.tgz#da75ee21d13e3e7b1e492850082b476262888be9" - integrity sha512-THzkvgY6AN4/0INgGowinzOFX6NeUQJ/KmAcXrBXx2Rny5v5wCp7LhBIlK21KF2/76fbiCyJvwcd/+Yeb0fjwQ== - dependencies: - jwt-decode "^3.1.2" - -"@sphereon/ssi-types@^0.14.1": - version "0.14.1" - resolved "https://registry.yarnpkg.com/@sphereon/ssi-types/-/ssi-types-0.14.1.tgz#f01e8338d64fb84ea0efc1096eee714b820499b9" - integrity sha512-7MbiQpYaJYzyZvDKWs8N/S/kVZAVMXOpq3CjVAo0RMnCk5hwM9PkJ+7MPGaqTasbi+a9B+py9BWBUTXPAMn0dQ== +"@sphereon/ssi-types@^0.15.1": + version "0.15.1" + resolved "https://registry.yarnpkg.com/@sphereon/ssi-types/-/ssi-types-0.15.1.tgz#120926e1b633b616026ebe3dd6e73ed6fe350110" + integrity sha512-NFpgcVHIU8YQ2OkCHpw9YVa5bIDBcfSbp0kvwC0iZa0du1tr3148fV2Xm4ilcLeRNvUKL5BbDEdHl1WuQkmoyw== dependencies: jwt-decode "^3.1.2" @@ -1892,7 +2142,14 @@ base64url-universal@^1.1.0: dependencies: base64url "^3.0.0" -base64url@^3.0.0: +base64url-universal@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/base64url-universal/-/base64url-universal-2.0.0.tgz#6023785c0e349a90de1cf396e8a4519750a4e67b" + integrity sha512-6Hpg7EBf3t148C3+fMzjf+CHnADVDafWzlJUXAqqqbm4MKNXbsoPdOkWeRTjNlkYG7TpyjIpRO1Gk0SnsFD1rw== + dependencies: + base64url "^3.0.1" + +base64url@^3.0.0, base64url@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/base64url/-/base64url-3.0.1.tgz#6399d572e2bc3f90a9a8b22d5dbb0a32d33f788d" integrity sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A== @@ -1989,6 +2246,13 @@ bundle-name@^3.0.0: dependencies: run-applescript "^5.0.0" +busboy@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" + integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== + dependencies: + streamsearch "^1.1.0" + call-bind@^1.0.0, call-bind@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" @@ -2042,7 +2306,7 @@ canonicalize@^2.0.0: resolved "https://registry.yarnpkg.com/canonicalize/-/canonicalize-2.0.0.tgz#32be2cef4446d67fd5348027a384cae28f17226a" integrity sha512-ulDEYPv7asdKvqahuAY35c1selLdzDwHqugK92hfkzvlDCwXRRelDkR+Er33md/PtnpqHemgkuDPanZ4fiYZ8w== -chalk@^2.0.0, chalk@^2.4.1: +chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -2378,6 +2642,11 @@ data-uri-to-buffer@^3.0.1: resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz#594b8973938c5bc2c33046535785341abc4f3636" integrity sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og== +data-uri-to-buffer@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz#d8feb2b2881e6a4f58c2e08acfd0e2834e26222e" + integrity sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A== + debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" @@ -2973,6 +3242,14 @@ fetch-blob@^2.1.1: resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-2.1.2.tgz#a7805db1361bd44c1ef62bb57fb5fe8ea173ef3c" integrity sha512-YKqtUDwqLyfyMnmbw8XD6Q8j9i/HggKtPEI+pZ1+8bvheBu78biSmNaXWusx1TauGqtUUGx/cBb1mKdq2rLYow== +fetch-blob@^3.1.2, fetch-blob@^3.1.4: + version "3.2.0" + resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.2.0.tgz#f09b8d4bbd45adc6f0c20b7e787e793e309dcce9" + integrity sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ== + dependencies: + node-domexception "^1.0.0" + web-streams-polyfill "^3.0.3" + file-entry-cache@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" @@ -3020,6 +3297,15 @@ find-up@^6.3.0: locate-path "^7.1.0" path-exists "^5.0.0" +fix-esm@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/fix-esm/-/fix-esm-1.0.1.tgz#e0e2199d841e43ff7db9b5f5ba7496bc45130ebb" + integrity sha512-EZtb7wPXZS54GaGxaWxMlhd1DUDCnAg5srlYdu/1ZVeW+7wwR3Tp59nu52dXByFs3MBRq+SByx1wDOJpRvLEXw== + dependencies: + "@babel/core" "^7.14.6" + "@babel/plugin-proposal-export-namespace-from" "^7.14.5" + "@babel/plugin-transform-modules-commonjs" "^7.14.5" + flat-cache@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" @@ -3040,6 +3326,13 @@ for-each@^0.3.3: dependencies: is-callable "^1.1.3" +formdata-polyfill@^4.0.10: + version "4.0.10" + resolved "https://registry.yarnpkg.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz#24807c31c9d402e002ab3d8c720144ceb8848423" + integrity sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g== + dependencies: + fetch-blob "^3.1.2" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -3617,7 +3910,7 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== -isomorphic-webcrypto@^2.3.8, "isomorphic-webcrypto@npm:@sphereon/isomorphic-webcrypto@^2.4.0-unstable.1": +isomorphic-webcrypto@^2.3.8, "isomorphic-webcrypto@npm:@sphereon/isomorphic-webcrypto@^2.4.0-unstable.4": version "2.4.0-unstable.4" resolved "https://registry.yarnpkg.com/@sphereon/isomorphic-webcrypto/-/isomorphic-webcrypto-2.4.0-unstable.4.tgz#c96c4e6bec640cde825b4622311ef2860322d26f" integrity sha512-7i9GBta0yji3Z5ocyk82fXpqrV/swe7hXZVfVzOXRaGtTUNd+y8W/3cpHRQC2S4UEO/5N3lX7+B6qUunK9wS/Q== @@ -4123,6 +4416,25 @@ json5@^2.2.1, json5@^2.2.2, json5@^2.2.3: resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== +jsonld-signatures@^11.0.0: + version "11.2.1" + resolved "https://registry.yarnpkg.com/jsonld-signatures/-/jsonld-signatures-11.2.1.tgz#e2ff23ac7476fcdb92e5fecd9a1734ceaf904bb0" + integrity sha512-RNaHTEeRrX0jWeidPCwxMq/E/Ze94zFyEZz/v267ObbCHQlXhPO7GtkY6N5PSHQfQhZPXa8NlMBg5LiDF4dNbA== + dependencies: + "@digitalbazaar/security-context" "^1.0.0" + jsonld "^8.0.0" + serialize-error "^8.1.0" + +jsonld@^8.0.0: + version "8.3.1" + resolved "https://registry.yarnpkg.com/jsonld/-/jsonld-8.3.1.tgz#45a05767904bcfc498779df082ef4ad046f637ac" + integrity sha512-tYfKpWL56meSJCHS91Ph0+EUThHZOZ8bKuboME4998SF+Kkukp2PhCPdRCvA7tsGUKr9FvSoyIRqJPuImBcBuA== + dependencies: + "@digitalbazaar/http-client" "^3.4.1" + canonicalize "^1.0.1" + lru-cache "^6.0.0" + rdf-canonize "^3.4.0" + jwt-decode@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-3.1.2.tgz#3fb319f3675a2df0c2895c8f5e9fa4b67b04ed59" @@ -4138,6 +4450,14 @@ kleur@^3.0.3: resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== +ky-universal@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/ky-universal/-/ky-universal-0.11.0.tgz#f5edf857865aaaea416a1968222148ad7d9e4017" + integrity sha512-65KyweaWvk+uKKkCrfAf+xqN2/epw1IJDtlyCPxYffFCMR8u1sp2U65NtWpnozYfZxQ6IUzIlvUcw+hQ82U2Xw== + dependencies: + abort-controller "^3.0.0" + node-fetch "^3.2.10" + ky-universal@^0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/ky-universal/-/ky-universal-0.8.2.tgz#edc398d54cf495d7d6830aa1ab69559a3cc7f824" @@ -4151,6 +4471,11 @@ ky@^0.25.1: resolved "https://registry.yarnpkg.com/ky/-/ky-0.25.1.tgz#0df0bd872a9cc57e31acd5dbc1443547c881bfbc" integrity sha512-PjpCEWlIU7VpiMVrTwssahkYXX1by6NCT0fhTUX34F3DTinARlgMpriuroolugFPcMgpPWrOW4mTb984Qm1RXA== +ky@^0.33.3: + version "0.33.3" + resolved "https://registry.yarnpkg.com/ky/-/ky-0.33.3.tgz#bf1ad322a3f2c3428c13cfa4b3af95e6c4a2f543" + integrity sha512-CasD9OCEQSFIam2U8efFK81Yeg8vNMTBUqtMOHlrcWQHqUX3HeCl9Dr31u4toV7emlH8Mymk5+9p0lL6mKb/Xw== + language-subtag-registry@^0.3.20: version "0.3.22" resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d" @@ -4453,6 +4778,11 @@ nock@^13.3.0: lodash "^4.17.21" propagate "^2.0.0" +node-domexception@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" + integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== + node-fetch@3.0.0-beta.9: version "3.0.0-beta.9" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.0.0-beta.9.tgz#0a7554cfb824380dd6812864389923c783c80d9b" @@ -4468,6 +4798,15 @@ node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.9: dependencies: whatwg-url "^5.0.0" +node-fetch@^3.2.10: + version "3.3.2" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.3.2.tgz#d1e889bacdf733b4ff3b2b243eb7a12866a0b78b" + integrity sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA== + dependencies: + data-uri-to-buffer "^4.0.0" + fetch-blob "^3.1.4" + formdata-polyfill "^4.0.10" + node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -4703,6 +5042,11 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +pako@^2.0.4: + version "2.1.0" + resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86" + integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug== + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -4913,6 +5257,13 @@ randomfill@^1.0.4: randombytes "^2.0.5" safe-buffer "^5.1.0" +rdf-canonize@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/rdf-canonize/-/rdf-canonize-3.4.0.tgz#87f88342b173cc371d812a07de350f0c1aa9f058" + integrity sha512-fUeWjrkOO0t1rg7B2fdyDTvngj+9RlUyL92vOdiB7c0FPguWVsniIMjEtHH+meLBO9rzkUlUzBVXgWrjI8P9LA== + dependencies: + setimmediate "^1.0.5" + react-is@^18.0.0: version "18.2.0" resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" @@ -5121,13 +5472,18 @@ semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3: dependencies: lru-cache "^6.0.0" -serialize-error@^8.0.1: +serialize-error@^8.0.1, serialize-error@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-8.1.0.tgz#3a069970c712f78634942ddd50fbbc0eaebe2f67" integrity sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ== dependencies: type-fest "^0.20.2" +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + sha.js@^2.4.0, sha.js@^2.4.11: version "2.4.11" resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" @@ -5259,6 +5615,11 @@ stream-events@^1.0.5: dependencies: stubs "^3.0.0" +streamsearch@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" + integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== + string-length@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" @@ -5691,6 +6052,13 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" +undici@^5.21.2: + version "5.25.2" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.25.2.tgz#17ddc3e8ab3c77e473ae1547f3f2917a05da2820" + integrity sha512-tch8RbCfn1UUH1PeVCXva4V8gDpGAud/w0WubD6sHC46vYQ3KDxL+xv1A2UxK0N6jrVedutuPHxe1XIoqerwMw== + dependencies: + busboy "^1.6.0" + unique-string@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" @@ -5786,6 +6154,11 @@ walker@^1.0.8: dependencies: makeerror "1.0.12" +web-streams-polyfill@^3.0.3: + version "3.2.1" + resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz#71c2718c52b45fd49dbeee88634b3a60ceab42a6" + integrity sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q== + webcrypto-core@^1.7.7: version "1.7.7" resolved "https://registry.yarnpkg.com/webcrypto-core/-/webcrypto-core-1.7.7.tgz#06f24b3498463e570fed64d7cab149e5437b162c"