@sphereon/ssi-sdk.presentation-exchange 0.33.1-feature.vcdm2.4 → 0.33.1-feature.vcdm2.tsup.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +625 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +83 -0
- package/dist/index.d.ts +79 -5
- package/dist/index.js +598 -8
- package/dist/index.js.map +1 -1
- package/package.json +26 -17
- package/dist/agent/PresentationExchange.d.ts +0 -16
- package/dist/agent/PresentationExchange.d.ts.map +0 -1
- package/dist/agent/PresentationExchange.js +0 -98
- package/dist/agent/PresentationExchange.js.map +0 -1
- package/dist/functions.d.ts +0 -13
- package/dist/functions.d.ts.map +0 -1
- package/dist/functions.js +0 -144
- package/dist/functions.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/types/IPresentationExchange.d.ts +0 -55
- package/dist/types/IPresentationExchange.d.ts.map +0 -1
- package/dist/types/IPresentationExchange.js +0 -2
- package/dist/types/IPresentationExchange.js.map +0 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAA;AAC/C,OAAO,EAAE,MAAM,EAAE,CAAA;AACjB,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AACnE,cAAc,+BAA+B,CAAA;AAC7C,cAAc,aAAa,CAAA"}
|
|
1
|
+
{"version":3,"sources":["../plugin.schema.json","../src/agent/PresentationExchange.ts","../src/functions.ts","../src/index.ts"],"sourcesContent":["{\n \"IDidAuthSiopOpAuthenticator\": {\n \"components\": {\n \"schemas\": {\n \"IGetSiopSessionArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"sessionId\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false\n },\n \"required\": [\"sessionId\"],\n \"description\": \"Arguments needed for {@link DidAuthSiopOpAuthenticator.getSessionForSiop } \"\n },\n \"IRegisterSiopSessionArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"identifier\": {\n \"type\": \"object\",\n \"properties\": {\n \"did\": {\n \"type\": \"string\"\n },\n \"alias\": {\n \"type\": \"string\"\n },\n \"provider\": {\n \"type\": \"string\"\n },\n \"controllerKeyId\": {\n \"type\": \"string\"\n },\n \"keys\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n }\n },\n \"services\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n }\n }\n },\n \"additionalProperties\": false,\n \"required\": [\"did\", \"provider\", \"keys\", \"services\"]\n },\n \"sessionId\": {\n \"type\": \"string\"\n },\n \"expiresIn\": {\n \"type\": \"number\"\n },\n \"additionalProperties\": false\n },\n \"required\": [\"identifier\"],\n \"description\": \"Arguments needed for {@link DidAuthSiopOpAuthenticator.registerSessionForSiop } \"\n },\n \"IRemoveSiopSessionArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"sessionId\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false\n },\n \"required\": [\"sessionId\"],\n \"description\": \"Arguments needed for {@link DidAuthSiopOpAuthenticator.removeSessionForSiop } \"\n },\n \"IAuthenticateWithSiopArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"sessionId\": {\n \"type\": \"string\"\n },\n \"stateId\": {\n \"type\": \"string\"\n },\n \"redirectUrl\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false\n },\n \"required\": [\"sessionId\", \"stateId\", \"redirectUrl\"],\n \"description\": \"Arguments needed for {@link DidAuthSiopOpAuthenticator.authenticateWithSiop } \"\n },\n \"IResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"status\": {\n \"type\": \"number\"\n },\n \"additionalProperties\": true\n },\n \"required\": [\"status\"],\n \"description\": \"Result of {@link DidAuthSiopOpAuthenticator.authenticateWithSiop & DidAuthSiopOpAuthenticator.sendSiopAuthenticationResponse } \"\n },\n \"IGetSiopAuthenticationRequestFromRpArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"sessionId\": {\n \"type\": \"string\"\n },\n \"stateId\": {\n \"type\": \"string\"\n },\n \"redirectUrl\": {\n \"type\": \"string\"\n },\n \"additionalProperties\": false\n },\n \"required\": [\"sessionId\", \"stateId\", \"redirectUrl\"],\n \"description\": \"Arguments needed for {@link DidAuthSiopOpAuthenticator.getSiopAuthenticationRequestFromRP } \"\n },\n \"ParsedAuthenticationRequestURI\": {\n \"type\": \"object\",\n \"properties\": {\n \"jwt\": {\n \"type\": \"string\"\n },\n \"requestPayload\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"registration\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"additionalProperties\": false\n },\n \"required\": [\"jwt\", \"requestPayload\", \"registration\"],\n \"description\": \"Result of {@link DidAuthSiopOpAuthenticator.getSiopAuthenticationRequestFromRP } \"\n },\n \"IGetSiopAuthenticationRequestDetailsArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"sessionId\": {\n \"type\": \"string\"\n },\n \"verifiedAuthenticationRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"credentialFilter\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"additionalProperties\": false\n },\n \"required\": [\"sessionId\", \"verifiedAuthenticationRequest\"],\n \"description\": \"Arguments needed for {@link DidAuthSiopOpAuthenticator.getSiopAuthenticationRequestDetails } \"\n },\n \"IAuthRequestDetails\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"alsoKnownAs\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"vpResponseOpts\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"additionalProperties\": false\n },\n \"required\": [\"id\", \"vpResponseOpts\"],\n \"description\": \"Result of {@link DidAuthSiopOpAuthenticator.getSiopAuthenticationRequestDetails } \"\n },\n \"IVerifySiopAuthenticationRequestUriArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"sessionId\": {\n \"type\": \"string\"\n },\n \"ParsedAuthenticationRequestURI\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"additionalProperties\": false\n },\n \"required\": [\"sessionId\", \"ParsedAuthenticationRequestURI\"],\n \"description\": \"Arguments needed for {@link DidAuthSiopOpAuthenticator.verifySiopAuthenticationRequestURI } \"\n },\n \"VerifiedAuthorizationRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"payload\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"presentationDefinitions\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"verifyOpts\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"additionalProperties\": false\n },\n \"required\": [\"payload\", \"verifyOpts\"],\n \"description\": \"Result of {@link DidAuthSiopOpAuthenticator.verifySiopAuthenticationRequestURI } \"\n },\n \"ISendSiopAuthenticationResponseArgs\": {\n \"type\": \"object\",\n \"properties\": {\n \"sessionId\": {\n \"type\": \"string\"\n },\n \"verifiedAuthenticationRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"verifiablePresentationResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"additionalProperties\": true\n }\n },\n \"additionalProperties\": false\n },\n \"required\": [\"sessionId\", \"verifiedAuthenticationRequest\"],\n \"description\": \"Arguments needed for {@link DidAuthSiopOpAuthenticator.sendSiopAuthenticationResponse } \"\n }\n },\n \"methods\": {\n \"getSessionForSiop\": {\n \"description\": \"Get SIOP session\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IGetSiopSessionArgs\"\n },\n \"returnType\": \"object\"\n },\n \"registerSessionForSiop\": {\n \"description\": \"Register SIOP session\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IRegisterSiopSessionArgs\"\n },\n \"returnType\": \"object\"\n },\n \"removeSessionForSiop\": {\n \"description\": \"Remove SIOP session\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IRemoveSiopSessionArgs\"\n },\n \"returnType\": \"boolean\"\n },\n \"authenticateWithSiop\": {\n \"description\": \"Authenticate using DID Auth SIOP\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IAuthenticateWithSiopArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/Response\"\n }\n },\n \"getSiopAuthenticationRequestFromRP\": {\n \"description\": \"Get authentication request from RP\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IGetSiopAuthenticationRequestFromRpArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/ParsedAuthenticationRequestURI\"\n }\n },\n \"getSiopAuthenticationRequestDetails\": {\n \"description\": \"Get authentication request details\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IGetSiopAuthenticationRequestDetailsArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/IAuthRequestDetails\"\n }\n },\n \"verifySiopAuthenticationRequestURI\": {\n \"description\": \"Verify authentication request URI\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/IVerifySiopAuthenticationRequestUriArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/VerifiedAuthorizationRequest\"\n }\n },\n \"sendSiopAuthenticationResponse\": {\n \"description\": \"Send authentication response\",\n \"arguments\": {\n \"$ref\": \"#/components/schemas/ISendSiopAuthenticationResponseArgs\"\n },\n \"returnType\": {\n \"$ref\": \"#/components/schemas/IRequiredContext\"\n }\n }\n }\n }\n }\n}\n","import {\n IDefinitionCredentialFilterArgs,\n IDefinitionValidateArgs,\n IPEXFilterResult,\n IPEXFilterResultWithInputDescriptor,\n IRequiredContext,\n PEXOpts,\n schema,\n VersionDiscoveryResult,\n} from '../index'\nimport { IAgentPlugin } from '@veramo/core'\n\nimport { IPresentationExchange } from '../types/IPresentationExchange'\nimport { Checked, IPresentationDefinition, PEX } from '@sphereon/pex'\nimport { CompactJWT, CredentialMapper, IProof, JWT_PROOF_TYPE_2020, W3CVerifiableCredential } from '@sphereon/ssi-types'\nimport { InputDescriptorV1, InputDescriptorV2 } from '@sphereon/pex-models'\nimport { toDIDs } from '@sphereon/ssi-sdk-ext.did-utils'\nimport { CredentialRole, UniqueDigitalCredential, verifiableCredentialForRoleFilter } from '@sphereon/ssi-sdk.credential-store'\nimport { FindDigitalCredentialArgs } from '@sphereon/ssi-sdk.data-store'\n\nexport class PresentationExchange implements IAgentPlugin {\n readonly schema = schema.IDidAuthSiopOpAuthenticator\n private readonly pex = new PEX()\n\n readonly methods: IPresentationExchange = {\n pexValidateDefinition: this.pexValidateDefinition.bind(this),\n pexDefinitionVersion: this.pexDefinitionVersion.bind(this),\n pexDefinitionFilterCredentials: this.pexDefinitionFilterCredentials.bind(this),\n pexDefinitionFilterCredentialsPerInputDescriptor: this.pexDefinitionFilterCredentialsPerInputDescriptor.bind(this),\n }\n\n constructor(opts?: PEXOpts) {}\n\n private async pexValidateDefinition(args: IDefinitionValidateArgs): Promise<boolean> {\n const { definition } = args\n const invalids: Checked[] = []\n\n try {\n const result = PEX.validateDefinition(definition)\n const validations = Array.isArray(result) ? result : [result]\n invalids.push(...validations.filter((v) => v.status === 'error'))\n } catch (error) {\n invalids.push({\n status: 'error',\n message:\n typeof error === 'string'\n ? error\n : typeof error === 'object' && 'message' in (error as object)\n ? (error as Error).message\n : 'unknown error',\n tag: 'validation',\n })\n }\n\n if (invalids.length > 0) {\n throw Error(`Invalid definition. ${invalids.map((v) => v.message).toString()}`)\n }\n return true // Never returns false, but REST API does not allow Promise<void>\n }\n\n async pexDefinitionVersion(presentationDefinition: IPresentationDefinition): Promise<VersionDiscoveryResult> {\n return PEX.definitionVersionDiscovery(presentationDefinition)\n }\n\n async pexDefinitionFilterCredentials(args: IDefinitionCredentialFilterArgs, context: IRequiredContext): Promise<IPEXFilterResult> {\n const credentials = await this.pexFilterCredentials(args.credentialFilterOpts, context)\n const holderDIDs = args.holderDIDs ? toDIDs(args.holderDIDs) : toDIDs(await context.agent.dataStoreORMGetIdentifiers())\n const selectResults = this.pex.selectFrom(args.presentationDefinition, credentials ?? [], {\n ...args,\n holderDIDs,\n limitDisclosureSignatureSuites: args.limitDisclosureSignatureSuites ?? ['BbsBlsSignature2020'],\n })\n return {\n id: args.presentationDefinition.id,\n selectResults,\n filteredCredentials: selectResults.verifiableCredential?.map((vc) => CredentialMapper.storedCredentialToOriginalFormat(vc)) ?? [],\n }\n }\n\n async pexDefinitionFilterCredentialsPerInputDescriptor(\n args: IDefinitionCredentialFilterArgs,\n context: IRequiredContext,\n ): Promise<IPEXFilterResultWithInputDescriptor[]> {\n const origDefinition = args.presentationDefinition\n const credentials = await this.pexFilterCredentials(args.credentialFilterOpts ?? {}, context)\n const holderDIDs = args.holderDIDs ? toDIDs(args.holderDIDs) : toDIDs(await context.agent.dataStoreORMGetIdentifiers())\n const limitDisclosureSignatureSuites = args.limitDisclosureSignatureSuites\n\n const promises = new Map<InputDescriptorV1 | InputDescriptorV2, Promise<IPEXFilterResult>>()\n origDefinition.input_descriptors.forEach((inputDescriptor) => {\n const presentationDefinition = {\n id: inputDescriptor.id,\n input_descriptors: [inputDescriptor],\n }\n\n const credentialRole = args.credentialFilterOpts.credentialRole\n\n promises.set(\n inputDescriptor,\n this.pexDefinitionFilterCredentials(\n {\n credentialFilterOpts: { credentialRole, verifiableCredentials: credentials },\n // @ts-ignore\n presentationDefinition,\n holderDIDs,\n limitDisclosureSignatureSuites,\n },\n context,\n ),\n )\n })\n await Promise.all(promises.values())\n const result: IPEXFilterResultWithInputDescriptor[] = []\n for (const entry of promises.entries()) {\n result.push({ ...(await entry[1]), inputDescriptor: entry[0] })\n }\n return result\n }\n\n private async pexFilterCredentials(\n filterOpts: {\n credentialRole: CredentialRole\n verifiableCredentials?: W3CVerifiableCredential[]\n filter?: FindDigitalCredentialArgs\n },\n context: IRequiredContext,\n ): Promise<W3CVerifiableCredential[]> {\n if (filterOpts.verifiableCredentials && filterOpts.verifiableCredentials.length > 0) {\n return filterOpts.verifiableCredentials as W3CVerifiableCredential[]\n }\n\n const filter = verifiableCredentialForRoleFilter(filterOpts.credentialRole, filterOpts.filter)\n const uniqueCredentials = await context.agent.crsGetUniqueCredentials({ filter })\n\n return uniqueCredentials.map((uniqueVC: UniqueDigitalCredential) => {\n const vc = uniqueVC.uniformVerifiableCredential!\n const proof = Array.isArray(vc.proof) ? vc.proof : [vc.proof]\n const jwtProof = proof.find((p: IProof) => p?.type === JWT_PROOF_TYPE_2020)\n return jwtProof ? (jwtProof.jwt as CompactJWT) : vc\n })\n }\n}\n","import { IPresentationDefinition } from '@sphereon/pex'\nimport { Format } from '@sphereon/pex-models'\nimport {\n isManagedIdentifierDidOpts,\n isManagedIdentifierDidResult,\n isManagedIdentifierX5cResult,\n ManagedIdentifierOptsOrResult,\n} from '@sphereon/ssi-sdk-ext.identifier-resolution'\nimport {\n CredentialMapper,\n Optional,\n OriginalVerifiablePresentation,\n SdJwtDecodedVerifiableCredential,\n W3CVerifiablePresentation,\n} from '@sphereon/ssi-types'\nimport { PresentationPayload, ProofFormat } from '@veramo/core'\nimport { IPEXPresentationSignCallback, IRequiredContext } from './types/IPresentationExchange'\n\nexport async function createPEXPresentationSignCallback(\n args: {\n idOpts: ManagedIdentifierOptsOrResult\n fetchRemoteContexts?: boolean\n skipDidResolution?: boolean\n format?: Format | ProofFormat\n domain?: string\n challenge?: string\n },\n context: IRequiredContext,\n): Promise<IPEXPresentationSignCallback> {\n function determineProofFormat(determineArgs: {\n format?: Format | 'jwt' | 'lds' | 'EthereumEip712Signature2021'\n presentationDefinition: IPresentationDefinition\n presentation: Optional<PresentationPayload, 'holder'> | SdJwtDecodedVerifiableCredential\n }): string {\n const { format, presentationDefinition, presentation } = determineArgs\n\n var formatOptions = format ?? presentationDefinition.format ?? args.format\n // TODO Refactor so it takes into account the Input Descriptors and we can lookup from there. Now we only do that if there is 1 descriptor\n if (!formatOptions && presentationDefinition.input_descriptors.length == 1 && 'format' in presentationDefinition.input_descriptors[0]) {\n formatOptions = presentationDefinition.input_descriptors[0].format\n }\n // All format arguments are optional. So if no format has been given we go for the most supported 'jwt'\n if (!formatOptions) {\n if (CredentialMapper.isSdJwtDecodedCredentialPayload(presentation.decodedPayload)) {\n return 'vc+sd-jwt'\n } else if (CredentialMapper.isMsoMdocDecodedPresentation(presentation.decodedPayload as OriginalVerifiablePresentation)) {\n return 'mso_mdoc'\n } else if (CredentialMapper.isW3cPresentation(presentation.decodedPayload)) {\n if (typeof presentation.signedPayload === 'string') {\n return 'jwt'\n }\n return 'lds'\n }\n return 'jwt'\n } else if (typeof formatOptions === 'string') {\n // if formatOptions is a singular string we can return that as the format\n return formatOptions\n }\n\n // here we transform all format options to either lds or jwt. but we also want to support sd-jwt, so we need to specifically check for this one. which is ['vc+sd-jwt']\n const formats = new Set(\n Object.keys(formatOptions).map((form) => (form.includes('ldp') ? 'lds' : form.includes('vc+sd-jwt') ? 'vc+sd-jwt' : 'jwt')),\n )\n\n // if we only have 1 format type we can return that\n if (formats.size === 1) {\n return formats.values().next().value!!\n }\n formats.keys().next()\n // if we can go for sd-jwt, we go for sd-jwt\n if (formats.has('vc+sd-jwt')) {\n return 'vc+sd-jwt'\n }\n // if it is not sd-jwt we would like to go for jwt\n else if (formats.has('jwt')) {\n return 'jwt'\n }\n\n // else we go for lds\n return 'lds'\n }\n\n return async ({\n presentation,\n domain,\n presentationDefinition,\n format,\n challenge,\n }: {\n presentation: Optional<PresentationPayload, 'holder'> | SdJwtDecodedVerifiableCredential\n presentationDefinition: IPresentationDefinition\n format?: Format | ProofFormat\n domain?: string\n challenge?: string\n }): Promise<W3CVerifiablePresentation> => {\n const proofFormat = determineProofFormat({ format, presentationDefinition, presentation })\n const { idOpts } = args\n const CLOCK_SKEW = 120\n if (args.skipDidResolution && isManagedIdentifierDidOpts(idOpts)) {\n idOpts.offlineWhenNoDIDRegistered = true\n }\n\n if ('compactSdJwtVc' in presentation) {\n if (proofFormat !== 'vc+sd-jwt') {\n return Promise.reject(Error(`presentation payload does not match proof format ${proofFormat}`))\n }\n\n const presentationResult = await context.agent.createSdJwtPresentation({\n ...(idOpts?.method === 'oid4vci-issuer' && { holder: idOpts?.issuer as string }),\n presentation: presentation.compactSdJwtVc,\n kb: {\n payload: {\n ...presentation.kbJwt?.payload,\n iat: presentation.kbJwt?.payload?.iat ?? Math.floor(Date.now() / 1000 - CLOCK_SKEW),\n nonce: challenge ?? presentation.kbJwt?.payload?.nonce,\n aud: presentation.kbJwt?.payload?.aud ?? domain ?? args.domain,\n },\n },\n })\n\n return CredentialMapper.storedPresentationToOriginalFormat(presentationResult.presentation as OriginalVerifiablePresentation)\n } else {\n const resolution = await context.agent.identifierManagedGet(idOpts)\n\n if (proofFormat === 'vc+sd-jwt') {\n return Promise.reject(Error(`presentation payload does not match proof format ${proofFormat}`))\n }\n let header\n if (!presentation.holder) {\n presentation.holder = resolution.issuer\n }\n if (proofFormat === 'jwt') {\n header = {\n ...((isManagedIdentifierDidResult(resolution) || isManagedIdentifierX5cResult(resolution)) && resolution.kid && { kid: resolution.kid }),\n ...(isManagedIdentifierX5cResult(resolution) && { jwk: resolution.jwk }),\n }\n if (presentation.verifier || !presentation.aud) {\n presentation.aud = Array.isArray(presentation.verifier) ? presentation.verifier : (presentation.verifier ?? domain ?? args.domain)\n delete presentation.verifier\n }\n\n if (!presentation.nbf) {\n if (presentation.issuanceDate) {\n const converted = Date.parse(presentation.issuanceDate)\n if (!isNaN(converted)) {\n presentation.nbf = Math.floor(converted / 1000) // no skew here, as an explicit value was given\n }\n } else {\n presentation.nbf = Math.floor(Date.now() / 1000 - CLOCK_SKEW)\n }\n }\n\n if (!presentation.iat) {\n presentation.iat = presentation.nbf\n }\n\n if (!presentation.exp) {\n if (presentation.expirationDate) {\n const converted = Date.parse(presentation.expirationDate)\n if (!isNaN(converted)) {\n presentation.exp = Math.floor(converted / 1000) // no skew here as an explicit value w as given\n }\n } else {\n presentation.exp = presentation.nbf + 600 + CLOCK_SKEW\n }\n }\n\n if (!presentation.vp) {\n presentation.vp = {}\n }\n /*if (!presentation.sub) {\n presentation.sub = id.did\n }*/\n if (!presentation.vp.holder) {\n presentation.vp.holder = presentation.holder\n }\n }\n\n // we ignore the alg / proof_format for now, as we already have the kid anyway at this point\n\n // todo: look for jwt_vc_json and remove types and @context\n\n const vp = await context.agent.createVerifiablePresentation({\n presentation: presentation as PresentationPayload,\n removeOriginalFields: false,\n keyRef: resolution.kmsKeyRef,\n // domain: domain ?? args.domain, // handled above, and did-jwt-vc creates an array even for 1 entry\n challenge: challenge ?? args.challenge,\n fetchRemoteContexts: args.fetchRemoteContexts !== false,\n proofFormat: proofFormat as ProofFormat,\n header,\n })\n\n // makes sure we extract an actual JWT from the internal representation in case it is a JWT\n return CredentialMapper.storedPresentationToOriginalFormat(vp as OriginalVerifiablePresentation)\n }\n }\n}\n","/**\n * @public\n */\nconst schema = require('../plugin.schema.json')\nexport { schema }\nexport { PresentationExchange } from './agent/PresentationExchange'\nexport * from './types/IPresentationExchange'\nexport * from './functions'\n"],"mappings":"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","names":["PEX","CredentialMapper","JWT_PROOF_TYPE_2020","toDIDs","verifiableCredentialForRoleFilter","PresentationExchange","schema","IDidAuthSiopOpAuthenticator","pex","PEX","methods","pexValidateDefinition","bind","pexDefinitionVersion","pexDefinitionFilterCredentials","pexDefinitionFilterCredentialsPerInputDescriptor","constructor","opts","args","definition","invalids","result","validateDefinition","validations","Array","isArray","push","filter","v","status","error","message","tag","length","Error","map","toString","presentationDefinition","definitionVersionDiscovery","context","credentials","pexFilterCredentials","credentialFilterOpts","holderDIDs","toDIDs","agent","dataStoreORMGetIdentifiers","selectResults","selectFrom","limitDisclosureSignatureSuites","id","filteredCredentials","verifiableCredential","vc","CredentialMapper","storedCredentialToOriginalFormat","origDefinition","promises","Map","input_descriptors","forEach","inputDescriptor","credentialRole","set","verifiableCredentials","Promise","all","values","entry","entries","filterOpts","verifiableCredentialForRoleFilter","uniqueCredentials","crsGetUniqueCredentials","uniqueVC","uniformVerifiableCredential","proof","jwtProof","find","p","type","JWT_PROOF_TYPE_2020","jwt","isManagedIdentifierDidOpts","isManagedIdentifierDidResult","isManagedIdentifierX5cResult","CredentialMapper","createPEXPresentationSignCallback","args","context","determineProofFormat","determineArgs","format","presentationDefinition","presentation","formatOptions","input_descriptors","length","CredentialMapper","isSdJwtDecodedCredentialPayload","decodedPayload","isMsoMdocDecodedPresentation","isW3cPresentation","signedPayload","formats","Set","Object","keys","map","form","includes","size","values","next","value","has","domain","challenge","proofFormat","idOpts","CLOCK_SKEW","skipDidResolution","isManagedIdentifierDidOpts","offlineWhenNoDIDRegistered","Promise","reject","Error","presentationResult","agent","createSdJwtPresentation","method","holder","issuer","compactSdJwtVc","kb","payload","kbJwt","iat","Math","floor","Date","now","nonce","aud","storedPresentationToOriginalFormat","resolution","identifierManagedGet","header","isManagedIdentifierDidResult","isManagedIdentifierX5cResult","kid","jwk","verifier","Array","isArray","nbf","issuanceDate","converted","parse","isNaN","exp","expirationDate","vp","createVerifiablePresentation","removeOriginalFields","keyRef","kmsKeyRef","fetchRemoteContexts","schema","require"]}
|
package/package.json
CHANGED
|
@@ -1,32 +1,43 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sphereon/ssi-sdk.presentation-exchange",
|
|
3
|
-
"version": "0.33.1-feature.vcdm2.
|
|
3
|
+
"version": "0.33.1-feature.vcdm2.tsup.19+db508b44",
|
|
4
4
|
"source": "src/index.ts",
|
|
5
|
-
"
|
|
6
|
-
"
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.cjs",
|
|
7
|
+
"module": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
"import": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.js"
|
|
13
|
+
},
|
|
14
|
+
"require": {
|
|
15
|
+
"types": "./dist/index.d.cts",
|
|
16
|
+
"require": "./dist/index.cjs"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
7
19
|
"veramo": {
|
|
8
20
|
"pluginInterfaces": {
|
|
9
21
|
"IPresentationExchange": "./src/types/IPresentationExchange.ts"
|
|
10
22
|
}
|
|
11
23
|
},
|
|
12
24
|
"scripts": {
|
|
13
|
-
"build": "
|
|
14
|
-
"build:clean": "tsc --build --clean && tsc --build"
|
|
25
|
+
"build": "tsup --config ../../tsup.config.ts --tsconfig ../../tsconfig.tsup.json"
|
|
15
26
|
},
|
|
16
27
|
"dependencies": {
|
|
17
28
|
"@sphereon/pex": "5.0.0-unstable.28",
|
|
18
29
|
"@sphereon/pex-models": "^2.3.2",
|
|
19
|
-
"@sphereon/ssi-sdk-ext.did-utils": "0.28.
|
|
20
|
-
"@sphereon/ssi-sdk-ext.identifier-resolution": "0.28.
|
|
21
|
-
"@sphereon/ssi-sdk.credential-store": "0.33.1-feature.vcdm2.
|
|
22
|
-
"@sphereon/ssi-sdk.data-store": "0.33.1-feature.vcdm2.
|
|
23
|
-
"@sphereon/ssi-sdk.sd-jwt": "0.33.1-feature.vcdm2.
|
|
24
|
-
"@sphereon/ssi-types": "0.33.1-feature.vcdm2.
|
|
30
|
+
"@sphereon/ssi-sdk-ext.did-utils": "0.28.1-feature.esm.cjs.11",
|
|
31
|
+
"@sphereon/ssi-sdk-ext.identifier-resolution": "0.28.1-feature.esm.cjs.11",
|
|
32
|
+
"@sphereon/ssi-sdk.credential-store": "^0.33.1-feature.vcdm2.tsup.19+db508b44",
|
|
33
|
+
"@sphereon/ssi-sdk.data-store": "^0.33.1-feature.vcdm2.tsup.19+db508b44",
|
|
34
|
+
"@sphereon/ssi-sdk.sd-jwt": "^0.33.1-feature.vcdm2.tsup.19+db508b44",
|
|
35
|
+
"@sphereon/ssi-types": "^0.33.1-feature.vcdm2.tsup.19+db508b44",
|
|
25
36
|
"@veramo/core": "4.2.0"
|
|
26
37
|
},
|
|
27
38
|
"devDependencies": {
|
|
28
39
|
"@sphereon/did-uni-client": "^0.6.3",
|
|
29
|
-
"@sphereon/ssi-sdk.agent-config": "0.33.1-feature.vcdm2.
|
|
40
|
+
"@sphereon/ssi-sdk.agent-config": "^0.33.1-feature.vcdm2.tsup.19+db508b44",
|
|
30
41
|
"@types/json-buffer": "^3.0.2",
|
|
31
42
|
"@veramo/did-provider-key": "4.2.0",
|
|
32
43
|
"@veramo/did-resolver": "4.2.0",
|
|
@@ -37,9 +48,8 @@
|
|
|
37
48
|
"nock": "^13.5.4"
|
|
38
49
|
},
|
|
39
50
|
"files": [
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
"src/**/*",
|
|
51
|
+
"dist",
|
|
52
|
+
"src",
|
|
43
53
|
"README.md",
|
|
44
54
|
"plugin.schema.json",
|
|
45
55
|
"LICENSE"
|
|
@@ -63,6 +73,5 @@
|
|
|
63
73
|
"OpenID Connect",
|
|
64
74
|
"Authenticator"
|
|
65
75
|
],
|
|
66
|
-
"
|
|
67
|
-
"gitHead": "9f634bdb714061141e277508c124b08d626f6036"
|
|
76
|
+
"gitHead": "db508b447fb1f769700f1d5e7cd8196653f4f794"
|
|
68
77
|
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { IDefinitionCredentialFilterArgs, IPEXFilterResult, IPEXFilterResultWithInputDescriptor, IRequiredContext, PEXOpts, VersionDiscoveryResult } from '../index';
|
|
2
|
-
import { IAgentPlugin } from '@veramo/core';
|
|
3
|
-
import { IPresentationExchange } from '../types/IPresentationExchange';
|
|
4
|
-
import { IPresentationDefinition } from '@sphereon/pex';
|
|
5
|
-
export declare class PresentationExchange implements IAgentPlugin {
|
|
6
|
-
readonly schema: any;
|
|
7
|
-
private readonly pex;
|
|
8
|
-
readonly methods: IPresentationExchange;
|
|
9
|
-
constructor(opts?: PEXOpts);
|
|
10
|
-
private pexValidateDefinition;
|
|
11
|
-
pexDefinitionVersion(presentationDefinition: IPresentationDefinition): Promise<VersionDiscoveryResult>;
|
|
12
|
-
pexDefinitionFilterCredentials(args: IDefinitionCredentialFilterArgs, context: IRequiredContext): Promise<IPEXFilterResult>;
|
|
13
|
-
pexDefinitionFilterCredentialsPerInputDescriptor(args: IDefinitionCredentialFilterArgs, context: IRequiredContext): Promise<IPEXFilterResultWithInputDescriptor[]>;
|
|
14
|
-
private pexFilterCredentials;
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=PresentationExchange.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PresentationExchange.d.ts","sourceRoot":"","sources":["../../src/agent/PresentationExchange.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAE/B,gBAAgB,EAChB,mCAAmC,EACnC,gBAAgB,EAChB,OAAO,EAEP,sBAAsB,EACvB,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAE3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAA;AACtE,OAAO,EAAW,uBAAuB,EAAO,MAAM,eAAe,CAAA;AAOrE,qBAAa,oBAAqB,YAAW,YAAY;IACvD,QAAQ,CAAC,MAAM,MAAqC;IACpD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAY;IAEhC,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAKtC;gBAEW,IAAI,CAAC,EAAE,OAAO;YAEZ,qBAAqB;IA2B7B,oBAAoB,CAAC,sBAAsB,EAAE,uBAAuB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAItG,8BAA8B,CAAC,IAAI,EAAE,+BAA+B,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAe3H,gDAAgD,CACpD,IAAI,EAAE,+BAA+B,EACrC,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,mCAAmC,EAAE,CAAC;YAqCnC,oBAAoB;CAsBnC"}
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import { schema, } from '../index';
|
|
2
|
-
import { PEX } from '@sphereon/pex';
|
|
3
|
-
import { CredentialMapper, JWT_PROOF_TYPE_2020 } from '@sphereon/ssi-types';
|
|
4
|
-
import { toDIDs } from '@sphereon/ssi-sdk-ext.did-utils';
|
|
5
|
-
import { verifiableCredentialForRoleFilter } from '@sphereon/ssi-sdk.credential-store';
|
|
6
|
-
export class PresentationExchange {
|
|
7
|
-
schema = schema.IDidAuthSiopOpAuthenticator;
|
|
8
|
-
pex = new PEX();
|
|
9
|
-
methods = {
|
|
10
|
-
pexValidateDefinition: this.pexValidateDefinition.bind(this),
|
|
11
|
-
pexDefinitionVersion: this.pexDefinitionVersion.bind(this),
|
|
12
|
-
pexDefinitionFilterCredentials: this.pexDefinitionFilterCredentials.bind(this),
|
|
13
|
-
pexDefinitionFilterCredentialsPerInputDescriptor: this.pexDefinitionFilterCredentialsPerInputDescriptor.bind(this),
|
|
14
|
-
};
|
|
15
|
-
constructor(opts) { }
|
|
16
|
-
async pexValidateDefinition(args) {
|
|
17
|
-
const { definition } = args;
|
|
18
|
-
const invalids = [];
|
|
19
|
-
try {
|
|
20
|
-
const result = PEX.validateDefinition(definition);
|
|
21
|
-
const validations = Array.isArray(result) ? result : [result];
|
|
22
|
-
invalids.push(...validations.filter((v) => v.status === 'error'));
|
|
23
|
-
}
|
|
24
|
-
catch (error) {
|
|
25
|
-
invalids.push({
|
|
26
|
-
status: 'error',
|
|
27
|
-
message: typeof error === 'string'
|
|
28
|
-
? error
|
|
29
|
-
: typeof error === 'object' && 'message' in error
|
|
30
|
-
? error.message
|
|
31
|
-
: 'unknown error',
|
|
32
|
-
tag: 'validation',
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
if (invalids.length > 0) {
|
|
36
|
-
throw Error(`Invalid definition. ${invalids.map((v) => v.message).toString()}`);
|
|
37
|
-
}
|
|
38
|
-
return true; // Never returns false, but REST API does not allow Promise<void>
|
|
39
|
-
}
|
|
40
|
-
async pexDefinitionVersion(presentationDefinition) {
|
|
41
|
-
return PEX.definitionVersionDiscovery(presentationDefinition);
|
|
42
|
-
}
|
|
43
|
-
async pexDefinitionFilterCredentials(args, context) {
|
|
44
|
-
const credentials = await this.pexFilterCredentials(args.credentialFilterOpts, context);
|
|
45
|
-
const holderDIDs = args.holderDIDs ? toDIDs(args.holderDIDs) : toDIDs(await context.agent.dataStoreORMGetIdentifiers());
|
|
46
|
-
const selectResults = this.pex.selectFrom(args.presentationDefinition, credentials ?? [], {
|
|
47
|
-
...args,
|
|
48
|
-
holderDIDs,
|
|
49
|
-
limitDisclosureSignatureSuites: args.limitDisclosureSignatureSuites ?? ['BbsBlsSignature2020'],
|
|
50
|
-
});
|
|
51
|
-
return {
|
|
52
|
-
id: args.presentationDefinition.id,
|
|
53
|
-
selectResults,
|
|
54
|
-
filteredCredentials: selectResults.verifiableCredential?.map((vc) => CredentialMapper.storedCredentialToOriginalFormat(vc)) ?? [],
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
async pexDefinitionFilterCredentialsPerInputDescriptor(args, context) {
|
|
58
|
-
const origDefinition = args.presentationDefinition;
|
|
59
|
-
const credentials = await this.pexFilterCredentials(args.credentialFilterOpts ?? {}, context);
|
|
60
|
-
const holderDIDs = args.holderDIDs ? toDIDs(args.holderDIDs) : toDIDs(await context.agent.dataStoreORMGetIdentifiers());
|
|
61
|
-
const limitDisclosureSignatureSuites = args.limitDisclosureSignatureSuites;
|
|
62
|
-
const promises = new Map();
|
|
63
|
-
origDefinition.input_descriptors.forEach((inputDescriptor) => {
|
|
64
|
-
const presentationDefinition = {
|
|
65
|
-
id: inputDescriptor.id,
|
|
66
|
-
input_descriptors: [inputDescriptor],
|
|
67
|
-
};
|
|
68
|
-
const credentialRole = args.credentialFilterOpts.credentialRole;
|
|
69
|
-
promises.set(inputDescriptor, this.pexDefinitionFilterCredentials({
|
|
70
|
-
credentialFilterOpts: { credentialRole, verifiableCredentials: credentials },
|
|
71
|
-
// @ts-ignore
|
|
72
|
-
presentationDefinition,
|
|
73
|
-
holderDIDs,
|
|
74
|
-
limitDisclosureSignatureSuites,
|
|
75
|
-
}, context));
|
|
76
|
-
});
|
|
77
|
-
await Promise.all(promises.values());
|
|
78
|
-
const result = [];
|
|
79
|
-
for (const entry of promises.entries()) {
|
|
80
|
-
result.push({ ...(await entry[1]), inputDescriptor: entry[0] });
|
|
81
|
-
}
|
|
82
|
-
return result;
|
|
83
|
-
}
|
|
84
|
-
async pexFilterCredentials(filterOpts, context) {
|
|
85
|
-
if (filterOpts.verifiableCredentials && filterOpts.verifiableCredentials.length > 0) {
|
|
86
|
-
return filterOpts.verifiableCredentials;
|
|
87
|
-
}
|
|
88
|
-
const filter = verifiableCredentialForRoleFilter(filterOpts.credentialRole, filterOpts.filter);
|
|
89
|
-
const uniqueCredentials = await context.agent.crsGetUniqueCredentials({ filter });
|
|
90
|
-
return uniqueCredentials.map((uniqueVC) => {
|
|
91
|
-
const vc = uniqueVC.uniformVerifiableCredential;
|
|
92
|
-
const proof = Array.isArray(vc.proof) ? vc.proof : [vc.proof];
|
|
93
|
-
const jwtProof = proof.find((p) => p?.type === JWT_PROOF_TYPE_2020);
|
|
94
|
-
return jwtProof ? jwtProof.jwt : vc;
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
//# sourceMappingURL=PresentationExchange.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PresentationExchange.js","sourceRoot":"","sources":["../../src/agent/PresentationExchange.ts"],"names":[],"mappings":"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"}
|
package/dist/functions.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { Format } from '@sphereon/pex-models';
|
|
2
|
-
import { ManagedIdentifierOptsOrResult } from '@sphereon/ssi-sdk-ext.identifier-resolution';
|
|
3
|
-
import { ProofFormat } from '@veramo/core';
|
|
4
|
-
import { IPEXPresentationSignCallback, IRequiredContext } from './types/IPresentationExchange';
|
|
5
|
-
export declare function createPEXPresentationSignCallback(args: {
|
|
6
|
-
idOpts: ManagedIdentifierOptsOrResult;
|
|
7
|
-
fetchRemoteContexts?: boolean;
|
|
8
|
-
skipDidResolution?: boolean;
|
|
9
|
-
format?: Format | ProofFormat;
|
|
10
|
-
domain?: string;
|
|
11
|
-
challenge?: string;
|
|
12
|
-
}, context: IRequiredContext): Promise<IPEXPresentationSignCallback>;
|
|
13
|
-
//# sourceMappingURL=functions.d.ts.map
|
package/dist/functions.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../src/functions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC7C,OAAO,EAIL,6BAA6B,EAC9B,MAAM,6CAA6C,CAAA;AAQpD,OAAO,EAAuB,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/D,OAAO,EAAE,4BAA4B,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAE9F,wBAAsB,iCAAiC,CACrD,IAAI,EAAE;IACJ,MAAM,EAAE,6BAA6B,CAAA;IACrC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,WAAW,CAAA;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,EACD,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,4BAA4B,CAAC,CAyKvC"}
|
package/dist/functions.js
DELETED
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
import { isManagedIdentifierDidOpts, isManagedIdentifierDidResult, isManagedIdentifierX5cResult, } from '@sphereon/ssi-sdk-ext.identifier-resolution';
|
|
2
|
-
import { CredentialMapper, } from '@sphereon/ssi-types';
|
|
3
|
-
export async function createPEXPresentationSignCallback(args, context) {
|
|
4
|
-
function determineProofFormat(determineArgs) {
|
|
5
|
-
const { format, presentationDefinition, presentation } = determineArgs;
|
|
6
|
-
var formatOptions = format ?? presentationDefinition.format ?? args.format;
|
|
7
|
-
// TODO Refactor so it takes into account the Input Descriptors and we can lookup from there. Now we only do that if there is 1 descriptor
|
|
8
|
-
if (!formatOptions && presentationDefinition.input_descriptors.length == 1 && 'format' in presentationDefinition.input_descriptors[0]) {
|
|
9
|
-
formatOptions = presentationDefinition.input_descriptors[0].format;
|
|
10
|
-
}
|
|
11
|
-
// All format arguments are optional. So if no format has been given we go for the most supported 'jwt'
|
|
12
|
-
if (!formatOptions) {
|
|
13
|
-
if (CredentialMapper.isSdJwtDecodedCredentialPayload(presentation.decodedPayload)) {
|
|
14
|
-
return 'vc+sd-jwt';
|
|
15
|
-
}
|
|
16
|
-
else if (CredentialMapper.isMsoMdocDecodedPresentation(presentation.decodedPayload)) {
|
|
17
|
-
return 'mso_mdoc';
|
|
18
|
-
}
|
|
19
|
-
else if (CredentialMapper.isW3cPresentation(presentation.decodedPayload)) {
|
|
20
|
-
if (typeof presentation.signedPayload === 'string') {
|
|
21
|
-
return 'jwt';
|
|
22
|
-
}
|
|
23
|
-
return 'lds';
|
|
24
|
-
}
|
|
25
|
-
return 'jwt';
|
|
26
|
-
}
|
|
27
|
-
else if (typeof formatOptions === 'string') {
|
|
28
|
-
// if formatOptions is a singular string we can return that as the format
|
|
29
|
-
return formatOptions;
|
|
30
|
-
}
|
|
31
|
-
// here we transform all format options to either lds or jwt. but we also want to support sd-jwt, so we need to specifically check for this one. which is ['vc+sd-jwt']
|
|
32
|
-
const formats = new Set(Object.keys(formatOptions).map((form) => (form.includes('ldp') ? 'lds' : form.includes('vc+sd-jwt') ? 'vc+sd-jwt' : 'jwt')));
|
|
33
|
-
// if we only have 1 format type we can return that
|
|
34
|
-
if (formats.size === 1) {
|
|
35
|
-
return formats.values().next().value;
|
|
36
|
-
}
|
|
37
|
-
formats.keys().next();
|
|
38
|
-
// if we can go for sd-jwt, we go for sd-jwt
|
|
39
|
-
if (formats.has('vc+sd-jwt')) {
|
|
40
|
-
return 'vc+sd-jwt';
|
|
41
|
-
}
|
|
42
|
-
// if it is not sd-jwt we would like to go for jwt
|
|
43
|
-
else if (formats.has('jwt')) {
|
|
44
|
-
return 'jwt';
|
|
45
|
-
}
|
|
46
|
-
// else we go for lds
|
|
47
|
-
return 'lds';
|
|
48
|
-
}
|
|
49
|
-
return async ({ presentation, domain, presentationDefinition, format, challenge, }) => {
|
|
50
|
-
const proofFormat = determineProofFormat({ format, presentationDefinition, presentation });
|
|
51
|
-
const { idOpts } = args;
|
|
52
|
-
const CLOCK_SKEW = 120;
|
|
53
|
-
if (args.skipDidResolution && isManagedIdentifierDidOpts(idOpts)) {
|
|
54
|
-
idOpts.offlineWhenNoDIDRegistered = true;
|
|
55
|
-
}
|
|
56
|
-
if ('compactSdJwtVc' in presentation) {
|
|
57
|
-
if (proofFormat !== 'vc+sd-jwt') {
|
|
58
|
-
return Promise.reject(Error(`presentation payload does not match proof format ${proofFormat}`));
|
|
59
|
-
}
|
|
60
|
-
const presentationResult = await context.agent.createSdJwtPresentation({
|
|
61
|
-
...(idOpts?.method === 'oid4vci-issuer' && { holder: idOpts?.issuer }),
|
|
62
|
-
presentation: presentation.compactSdJwtVc,
|
|
63
|
-
kb: {
|
|
64
|
-
payload: {
|
|
65
|
-
...presentation.kbJwt?.payload,
|
|
66
|
-
iat: presentation.kbJwt?.payload?.iat ?? Math.floor(Date.now() / 1000 - CLOCK_SKEW),
|
|
67
|
-
nonce: challenge ?? presentation.kbJwt?.payload?.nonce,
|
|
68
|
-
aud: presentation.kbJwt?.payload?.aud ?? domain ?? args.domain,
|
|
69
|
-
},
|
|
70
|
-
},
|
|
71
|
-
});
|
|
72
|
-
return CredentialMapper.storedPresentationToOriginalFormat(presentationResult.presentation);
|
|
73
|
-
}
|
|
74
|
-
else {
|
|
75
|
-
const resolution = await context.agent.identifierManagedGet(idOpts);
|
|
76
|
-
if (proofFormat === 'vc+sd-jwt') {
|
|
77
|
-
return Promise.reject(Error(`presentation payload does not match proof format ${proofFormat}`));
|
|
78
|
-
}
|
|
79
|
-
let header;
|
|
80
|
-
if (!presentation.holder) {
|
|
81
|
-
presentation.holder = resolution.issuer;
|
|
82
|
-
}
|
|
83
|
-
if (proofFormat === 'jwt') {
|
|
84
|
-
header = {
|
|
85
|
-
...((isManagedIdentifierDidResult(resolution) || isManagedIdentifierX5cResult(resolution)) && resolution.kid && { kid: resolution.kid }),
|
|
86
|
-
...(isManagedIdentifierX5cResult(resolution) && { jwk: resolution.jwk }),
|
|
87
|
-
};
|
|
88
|
-
if (presentation.verifier || !presentation.aud) {
|
|
89
|
-
presentation.aud = Array.isArray(presentation.verifier) ? presentation.verifier : (presentation.verifier ?? domain ?? args.domain);
|
|
90
|
-
delete presentation.verifier;
|
|
91
|
-
}
|
|
92
|
-
if (!presentation.nbf) {
|
|
93
|
-
if (presentation.issuanceDate) {
|
|
94
|
-
const converted = Date.parse(presentation.issuanceDate);
|
|
95
|
-
if (!isNaN(converted)) {
|
|
96
|
-
presentation.nbf = Math.floor(converted / 1000); // no skew here, as an explicit value was given
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
presentation.nbf = Math.floor(Date.now() / 1000 - CLOCK_SKEW);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
if (!presentation.iat) {
|
|
104
|
-
presentation.iat = presentation.nbf;
|
|
105
|
-
}
|
|
106
|
-
if (!presentation.exp) {
|
|
107
|
-
if (presentation.expirationDate) {
|
|
108
|
-
const converted = Date.parse(presentation.expirationDate);
|
|
109
|
-
if (!isNaN(converted)) {
|
|
110
|
-
presentation.exp = Math.floor(converted / 1000); // no skew here as an explicit value w as given
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
else {
|
|
114
|
-
presentation.exp = presentation.nbf + 600 + CLOCK_SKEW;
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
if (!presentation.vp) {
|
|
118
|
-
presentation.vp = {};
|
|
119
|
-
}
|
|
120
|
-
/*if (!presentation.sub) {
|
|
121
|
-
presentation.sub = id.did
|
|
122
|
-
}*/
|
|
123
|
-
if (!presentation.vp.holder) {
|
|
124
|
-
presentation.vp.holder = presentation.holder;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
// we ignore the alg / proof_format for now, as we already have the kid anyway at this point
|
|
128
|
-
// todo: look for jwt_vc_json and remove types and @context
|
|
129
|
-
const vp = await context.agent.createVerifiablePresentation({
|
|
130
|
-
presentation: presentation,
|
|
131
|
-
removeOriginalFields: false,
|
|
132
|
-
keyRef: resolution.kmsKeyRef,
|
|
133
|
-
// domain: domain ?? args.domain, // handled above, and did-jwt-vc creates an array even for 1 entry
|
|
134
|
-
challenge: challenge ?? args.challenge,
|
|
135
|
-
fetchRemoteContexts: args.fetchRemoteContexts !== false,
|
|
136
|
-
proofFormat: proofFormat,
|
|
137
|
-
header,
|
|
138
|
-
});
|
|
139
|
-
// makes sure we extract an actual JWT from the internal representation in case it is a JWT
|
|
140
|
-
return CredentialMapper.storedPresentationToOriginalFormat(vp);
|
|
141
|
-
}
|
|
142
|
-
};
|
|
143
|
-
}
|
|
144
|
-
//# sourceMappingURL=functions.js.map
|
package/dist/functions.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"functions.js","sourceRoot":"","sources":["../src/functions.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,EAC5B,4BAA4B,GAE7B,MAAM,6CAA6C,CAAA;AACpD,OAAO,EACL,gBAAgB,GAKjB,MAAM,qBAAqB,CAAA;AAI5B,MAAM,CAAC,KAAK,UAAU,iCAAiC,CACrD,IAOC,EACD,OAAyB;IAEzB,SAAS,oBAAoB,CAAC,aAI7B;QACC,MAAM,EAAE,MAAM,EAAE,sBAAsB,EAAE,YAAY,EAAE,GAAG,aAAa,CAAA;QAEtE,IAAI,aAAa,GAAG,MAAM,IAAI,sBAAsB,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAA;QAC1E,0IAA0I;QAC1I,IAAI,CAAC,aAAa,IAAI,sBAAsB,CAAC,iBAAiB,CAAC,MAAM,IAAI,CAAC,IAAI,QAAQ,IAAI,sBAAsB,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;YACtI,aAAa,GAAG,sBAAsB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;QACpE,CAAC;QACD,uGAAuG;QACvG,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,IAAI,gBAAgB,CAAC,+BAA+B,CAAC,YAAY,CAAC,cAAc,CAAC,EAAE,CAAC;gBAClF,OAAO,WAAW,CAAA;YACpB,CAAC;iBAAM,IAAI,gBAAgB,CAAC,4BAA4B,CAAC,YAAY,CAAC,cAAgD,CAAC,EAAE,CAAC;gBACxH,OAAO,UAAU,CAAA;YACnB,CAAC;iBAAM,IAAI,gBAAgB,CAAC,iBAAiB,CAAC,YAAY,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC3E,IAAI,OAAO,YAAY,CAAC,aAAa,KAAK,QAAQ,EAAE,CAAC;oBACnD,OAAO,KAAK,CAAA;gBACd,CAAC;gBACD,OAAO,KAAK,CAAA;YACd,CAAC;YACD,OAAO,KAAK,CAAA;QACd,CAAC;aAAM,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;YAC7C,yEAAyE;YACzE,OAAO,aAAa,CAAA;QACtB,CAAC;QAED,uKAAuK;QACvK,MAAM,OAAO,GAAG,IAAI,GAAG,CACrB,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAC5H,CAAA;QAED,mDAAmD;QACnD,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAO,CAAA;QACxC,CAAC;QACD,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAA;QACrB,4CAA4C;QAC5C,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7B,OAAO,WAAW,CAAA;QACpB,CAAC;QACD,kDAAkD;aAC7C,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,KAAK,CAAA;QACd,CAAC;QAED,qBAAqB;QACrB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,KAAK,EAAE,EACZ,YAAY,EACZ,MAAM,EACN,sBAAsB,EACtB,MAAM,EACN,SAAS,GAOV,EAAsC,EAAE;QACvC,MAAM,WAAW,GAAG,oBAAoB,CAAC,EAAE,MAAM,EAAE,sBAAsB,EAAE,YAAY,EAAE,CAAC,CAAA;QAC1F,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;QACvB,MAAM,UAAU,GAAG,GAAG,CAAA;QACtB,IAAI,IAAI,CAAC,iBAAiB,IAAI,0BAA0B,CAAC,MAAM,CAAC,EAAE,CAAC;YACjE,MAAM,CAAC,0BAA0B,GAAG,IAAI,CAAA;QAC1C,CAAC;QAED,IAAI,gBAAgB,IAAI,YAAY,EAAE,CAAC;YACrC,IAAI,WAAW,KAAK,WAAW,EAAE,CAAC;gBAChC,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oDAAoD,WAAW,EAAE,CAAC,CAAC,CAAA;YACjG,CAAC;YAED,MAAM,kBAAkB,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC;gBACrE,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,gBAAgB,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAgB,EAAE,CAAC;gBAChF,YAAY,EAAE,YAAY,CAAC,cAAc;gBACzC,EAAE,EAAE;oBACF,OAAO,EAAE;wBACP,GAAG,YAAY,CAAC,KAAK,EAAE,OAAO;wBAC9B,GAAG,EAAE,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,UAAU,CAAC;wBACnF,KAAK,EAAE,SAAS,IAAI,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK;wBACtD,GAAG,EAAE,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,MAAM,IAAI,IAAI,CAAC,MAAM;qBAC/D;iBACF;aACF,CAAC,CAAA;YAEF,OAAO,gBAAgB,CAAC,kCAAkC,CAAC,kBAAkB,CAAC,YAA8C,CAAC,CAAA;QAC/H,CAAC;aAAM,CAAC;YACN,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAA;YAEnE,IAAI,WAAW,KAAK,WAAW,EAAE,CAAC;gBAChC,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oDAAoD,WAAW,EAAE,CAAC,CAAC,CAAA;YACjG,CAAC;YACD,IAAI,MAAM,CAAA;YACV,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;gBACzB,YAAY,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAA;YACzC,CAAC;YACD,IAAI,WAAW,KAAK,KAAK,EAAE,CAAC;gBAC1B,MAAM,GAAG;oBACP,GAAG,CAAC,CAAC,4BAA4B,CAAC,UAAU,CAAC,IAAI,4BAA4B,CAAC,UAAU,CAAC,CAAC,IAAI,UAAU,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC;oBACxI,GAAG,CAAC,4BAA4B,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC;iBACzE,CAAA;gBACD,IAAI,YAAY,CAAC,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;oBAC/C,YAAY,CAAC,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,IAAI,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,CAAA;oBAClI,OAAO,YAAY,CAAC,QAAQ,CAAA;gBAC9B,CAAC;gBAED,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;oBACtB,IAAI,YAAY,CAAC,YAAY,EAAE,CAAC;wBAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC,CAAA;wBACvD,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;4BACtB,YAAY,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,CAAA,CAAC,+CAA+C;wBACjG,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,YAAY,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,UAAU,CAAC,CAAA;oBAC/D,CAAC;gBACH,CAAC;gBAED,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;oBACtB,YAAY,CAAC,GAAG,GAAG,YAAY,CAAC,GAAG,CAAA;gBACrC,CAAC;gBAED,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;oBACtB,IAAI,YAAY,CAAC,cAAc,EAAE,CAAC;wBAChC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC,CAAA;wBACzD,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;4BACtB,YAAY,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,CAAA,CAAC,+CAA+C;wBACjG,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,YAAY,CAAC,GAAG,GAAG,YAAY,CAAC,GAAG,GAAG,GAAG,GAAG,UAAU,CAAA;oBACxD,CAAC;gBACH,CAAC;gBAED,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC;oBACrB,YAAY,CAAC,EAAE,GAAG,EAAE,CAAA;gBACtB,CAAC;gBACD;;mBAEG;gBACH,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;oBAC5B,YAAY,CAAC,EAAE,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAA;gBAC9C,CAAC;YACH,CAAC;YAED,4FAA4F;YAE5F,2DAA2D;YAE3D,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC;gBAC1D,YAAY,EAAE,YAAmC;gBACjD,oBAAoB,EAAE,KAAK;gBAC3B,MAAM,EAAE,UAAU,CAAC,SAAS;gBAC5B,oGAAoG;gBACpG,SAAS,EAAE,SAAS,IAAI,IAAI,CAAC,SAAS;gBACtC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,KAAK,KAAK;gBACvD,WAAW,EAAE,WAA0B;gBACvC,MAAM;aACP,CAAC,CAAA;YAEF,2FAA2F;YAC3F,OAAO,gBAAgB,CAAC,kCAAkC,CAAC,EAAoC,CAAC,CAAA;QAClG,CAAC;IACH,CAAC,CAAA;AACH,CAAC"}
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,QAAA,MAAM,MAAM,KAAmC,CAAA;AAC/C,OAAO,EAAE,MAAM,EAAE,CAAA;AACjB,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AACnE,cAAc,+BAA+B,CAAA;AAC7C,cAAc,aAAa,CAAA"}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { IIdentifierResolution } from '@sphereon/ssi-sdk-ext.identifier-resolution';
|
|
2
|
-
import { IAgentContext, ICredentialPlugin, IDataStoreORM, IDIDManager, IIdentifier, IPluginMethodMap, IResolver, PresentationPayload } from '@veramo/core';
|
|
3
|
-
import { IPresentation, Optional, SdJwtDecodedVerifiableCredential, W3CVerifiableCredential, W3CVerifiablePresentation } from '@sphereon/ssi-types';
|
|
4
|
-
import { IPresentationDefinition, PEVersion, SelectResults } from '@sphereon/pex';
|
|
5
|
-
import { Format, InputDescriptorV1, InputDescriptorV2 } from '@sphereon/pex-models';
|
|
6
|
-
import { CredentialRole, FindDigitalCredentialArgs } from '@sphereon/ssi-sdk.data-store';
|
|
7
|
-
import { ISDJwtPlugin } from '@sphereon/ssi-sdk.sd-jwt';
|
|
8
|
-
export interface IPresentationExchange extends IPluginMethodMap {
|
|
9
|
-
pexValidateDefinition(args: IDefinitionValidateArgs): Promise<boolean>;
|
|
10
|
-
pexDefinitionVersion(presentationDefinition: IPresentationDefinition): Promise<VersionDiscoveryResult>;
|
|
11
|
-
pexDefinitionFilterCredentials(args: IDefinitionCredentialFilterArgs, context: IRequiredContext): Promise<IPEXFilterResult>;
|
|
12
|
-
pexDefinitionFilterCredentialsPerInputDescriptor(args: IDefinitionCredentialFilterArgs, context: IRequiredContext): Promise<IPEXFilterResultWithInputDescriptor[]>;
|
|
13
|
-
}
|
|
14
|
-
export interface IDefinitionValidateArgs {
|
|
15
|
-
definition: IPresentationDefinition;
|
|
16
|
-
}
|
|
17
|
-
export interface IDefinitionCredentialFilterArgs {
|
|
18
|
-
presentationDefinition: IPresentationDefinition;
|
|
19
|
-
credentialFilterOpts: {
|
|
20
|
-
credentialRole: CredentialRole;
|
|
21
|
-
verifiableCredentials?: W3CVerifiableCredential[];
|
|
22
|
-
filter?: FindDigitalCredentialArgs;
|
|
23
|
-
};
|
|
24
|
-
holderDIDs?: (string | IIdentifier)[];
|
|
25
|
-
limitDisclosureSignatureSuites?: string[];
|
|
26
|
-
restrictToFormats?: Format;
|
|
27
|
-
restrictToDIDMethods?: string[];
|
|
28
|
-
}
|
|
29
|
-
export interface PEXOpts {
|
|
30
|
-
defaultStore?: string;
|
|
31
|
-
defaultNamespace?: string;
|
|
32
|
-
}
|
|
33
|
-
export interface IPEXOptions {
|
|
34
|
-
definition?: IPresentationDefinition;
|
|
35
|
-
definitionId: string;
|
|
36
|
-
}
|
|
37
|
-
export interface IPEXFilterResultWithInputDescriptor extends IPEXFilterResult {
|
|
38
|
-
inputDescriptor: InputDescriptorV1 | InputDescriptorV2;
|
|
39
|
-
}
|
|
40
|
-
export interface IPEXFilterResult {
|
|
41
|
-
id: string;
|
|
42
|
-
selectResults: SelectResults;
|
|
43
|
-
filteredCredentials: W3CVerifiableCredential[];
|
|
44
|
-
}
|
|
45
|
-
export interface VersionDiscoveryResult {
|
|
46
|
-
version?: PEVersion;
|
|
47
|
-
error?: string;
|
|
48
|
-
}
|
|
49
|
-
export type IPEXPresentationSignCallback = (args: IPEXPresentationSignCallBackParams) => Promise<W3CVerifiablePresentation>;
|
|
50
|
-
export interface IPEXPresentationSignCallBackParams {
|
|
51
|
-
presentation: IPresentation | Optional<PresentationPayload, 'holder'> | SdJwtDecodedVerifiableCredential;
|
|
52
|
-
presentationDefinition: IPresentationDefinition;
|
|
53
|
-
}
|
|
54
|
-
export type IRequiredContext = IAgentContext<IDataStoreORM & IResolver & IDIDManager & IIdentifierResolution & ICredentialPlugin & ISDJwtPlugin>;
|
|
55
|
-
//# sourceMappingURL=IPresentationExchange.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"IPresentationExchange.d.ts","sourceRoot":"","sources":["../../src/types/IPresentationExchange.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"IPresentationExchange.js","sourceRoot":"","sources":["../../src/types/IPresentationExchange.ts"],"names":[],"mappings":""}
|