{"version":3,"sources":["../plugin.schema.json","../src/index.ts","../src/agent/OIDFClient.ts"],"sourcesContent":["{\n  \"IOIDFClient\": {\n    \"components\": {\n      \"schemas\": {\n        \"ResolveTrustChainArgs\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"entityIdentifier\": {\n              \"type\": \"string\"\n            },\n            \"trustAnchors\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              }\n            }\n          },\n          \"required\": [\"entityIdentifier\", \"trustAnchors\"],\n          \"additionalProperties\": false\n        },\n        \"TrustChainResolveResponse\": {\n          \"type\": \"object\",\n          \"additionalProperties\": false\n        }\n      },\n      \"methods\": {\n        \"resolveTrustChain\": {\n          \"description\": \"\",\n          \"arguments\": {\n            \"$ref\": \"#/components/schemas/ResolveTrustChainArgs\"\n          },\n          \"returnType\": {\n            \"$ref\": \"#/components/schemas/TrustChainResolveResponse\"\n          }\n        }\n      }\n    }\n  }\n}\n","import { Loggers } from '@sphereon/ssi-types'\n\n/**\n * @public\n */\nconst schema = require('../plugin.schema.json')\nexport { schema }\n\nexport const logger = Loggers.DEFAULT.get('sphereon:oidf-client')\n\nexport { OIDFClient, oidfClientMethods } from './agent/OIDFClient'\n\nexport * from './types/IOIDFClient'\n","import { JoseCurveString, JoseSignatureAlgorithmString, JwkKeyTypeString } from '@sphereon/ssi-types'\nimport { IAgentPlugin } from '@veramo/core'\nimport { schema } from '../'\nimport { IOIDFClient, IRequiredContext, OIDFClientArgs, ResolveTrustChainArgs } from '../types/IOIDFClient'\nimport { FederationClient, ICryptoService, Jwk, TrustChainResolveResponse } from '@sphereon/openid-federation-client'\n\nexport const oidfClientMethods: Array<string> = ['resolveTrustChain']\n\nexport class OIDFClient implements IAgentPlugin {\n  // private readonly fetchServiceCallback?: IFetchService\n  private readonly cryptoServiceCallback?: ICryptoService\n  readonly methods: IOIDFClient = {\n    resolveTrustChain: this.resolveTrustChain.bind(this),\n  }\n  readonly schema = schema.IOIDFClient\n\n  constructor(args?: OIDFClientArgs) {\n    const { /*fetchServiceCallback,*/ cryptoServiceCallback } = { ...args }\n\n    // this.fetchServiceCallback = fetchServiceCallback\n    this.cryptoServiceCallback = cryptoServiceCallback\n  }\n\n  private defaultCryptoJSImpl(context: IRequiredContext): ICryptoService {\n    return {\n      verify: async (jwt: string, key: Jwk): Promise<boolean> => {\n        const verification = await context.agent.jwtVerifyJwsSignature({\n          jws: jwt,\n          jwk: {\n            alg: key.alg as JoseSignatureAlgorithmString | undefined,\n            crv: key.crv as JoseCurveString | undefined,\n            kty: key.kty as JwkKeyTypeString,\n            x: key.x ?? (undefined as string | undefined),\n            y: key.y ?? (undefined as string | undefined),\n            n: key.n ?? (undefined as string | undefined),\n            e: key.e ?? (undefined as string | undefined),\n            use: key.use ?? (undefined as string | undefined),\n            kid: key.kid,\n          },\n        })\n        return !verification.error\n      },\n    }\n  }\n  /*\n  private defaultFetchJSImpl(context: IRequiredContext): IFetchService {\n    return {\n      async fetchStatement(endpoint: string): Promise<string> {\n        const requestInfo = new Request(endpoint, {\n          method: 'GET',\n        })\n\n        const response = await context.agent.resourceResolve({\n          input: requestInfo,\n          resourceType: 'application/entity-statement+jwt',\n        })\n\n        if (response.status != 200) {\n          throw new Error(`Failed to fetch statement from ${endpoint}`)\n        }\n\n        return await response.text()\n      },\n    }\n  }*/\n\n  private getOIDFClient(context: IRequiredContext): FederationClient {\n    return new FederationClient(\n      this.cryptoServiceCallback || this.defaultCryptoJSImpl(context),\n      // this.fetchServiceCallback || this.defaultFetchJSImpl(context),\n    )\n  }\n\n  private async resolveTrustChain(args: ResolveTrustChainArgs, context: IRequiredContext): Promise<TrustChainResolveResponse> {\n    const { entityIdentifier, trustAnchors } = args\n\n    const oidfClient = this.getOIDFClient(context)\n\n    return await oidfClient.resolveTrustChain(entityIdentifier, trustAnchors, 10)\n  }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA,gCAAAA,SAAA;AAAA,IAAAA,QAAA;AAAA,MACE,aAAe;AAAA,QACb,YAAc;AAAA,UACZ,SAAW;AAAA,YACT,uBAAyB;AAAA,cACvB,MAAQ;AAAA,cACR,YAAc;AAAA,gBACZ,kBAAoB;AAAA,kBAClB,MAAQ;AAAA,gBACV;AAAA,gBACA,cAAgB;AAAA,kBACd,MAAQ;AAAA,kBACR,OAAS;AAAA,oBACP,MAAQ;AAAA,kBACV;AAAA,gBACF;AAAA,cACF;AAAA,cACA,UAAY,CAAC,oBAAoB,cAAc;AAAA,cAC/C,sBAAwB;AAAA,YAC1B;AAAA,YACA,2BAA6B;AAAA,cAC3B,MAAQ;AAAA,cACR,sBAAwB;AAAA,YAC1B;AAAA,UACF;AAAA,UACA,SAAW;AAAA,YACT,mBAAqB;AAAA,cACnB,aAAe;AAAA,cACf,WAAa;AAAA,gBACX,MAAQ;AAAA,cACV;AAAA,cACA,YAAc;AAAA,gBACZ,MAAQ;AAAA,cACV;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;ACtCA;;;;;;;;AAAA,uBAAwB;;;ACIxB,sCAAiF;AAE1E,IAAMC,oBAAmC;EAAC;;AAE1C,IAAMC,aAAN,MAAMA;EANb,OAMaA;;;;EAEMC;EACRC,UAAuB;IAC9BC,mBAAmB,KAAKA,kBAAkBC,KAAK,IAAI;EACrD;EACSC,SAASA,OAAOC;EAEzBC,YAAYC,MAAuB;AACjC,UAAM,EAA4BP,sBAAqB,IAAK;MAAE,GAAGO;IAAK;AAGtE,SAAKP,wBAAwBA;EAC/B;EAEQQ,oBAAoBC,SAA2C;AACrE,WAAO;MACLC,QAAQ,8BAAOC,KAAaC,QAAAA;AAC1B,cAAMC,eAAe,MAAMJ,QAAQK,MAAMC,sBAAsB;UAC7DC,KAAKL;UACLM,KAAK;YACHC,KAAKN,IAAIM;YACTC,KAAKP,IAAIO;YACTC,KAAKR,IAAIQ;YACTC,GAAGT,IAAIS,KAAMC;YACbC,GAAGX,IAAIW,KAAMD;YACbE,GAAGZ,IAAIY,KAAMF;YACbG,GAAGb,IAAIa,KAAMH;YACbI,KAAKd,IAAIc,OAAQJ;YACjBK,KAAKf,IAAIe;UACX;QACF,CAAA;AACA,eAAO,CAACd,aAAae;MACvB,GAhBQ;IAiBV;EACF;;;;;;;;;;;;;;;;;;;;;;EAuBQC,cAAcpB,SAA6C;AACjE,WAAO,IAAIqB,iDACT,KAAK9B,yBAAyB,KAAKQ,oBAAoBC,OAAAA,CAAAA;EAG3D;EAEA,MAAcP,kBAAkBK,MAA6BE,SAA+D;AAC1H,UAAM,EAAEsB,kBAAkBC,aAAY,IAAKzB;AAE3C,UAAM0B,aAAa,KAAKJ,cAAcpB,OAAAA;AAEtC,WAAO,MAAMwB,WAAW/B,kBAAkB6B,kBAAkBC,cAAc,EAAA;EAC5E;AACF;;;AD3EA,IAAME,SAASC;AAGR,IAAMC,SAASC,yBAAQC,QAAQC,IAAI,sBAAA;","names":["module","oidfClientMethods","OIDFClient","cryptoServiceCallback","methods","resolveTrustChain","bind","schema","IOIDFClient","constructor","args","defaultCryptoJSImpl","context","verify","jwt","key","verification","agent","jwtVerifyJwsSignature","jws","jwk","alg","crv","kty","x","undefined","y","n","e","use","kid","error","getOIDFClient","FederationClient","entityIdentifier","trustAnchors","oidfClient","schema","require","logger","Loggers","DEFAULT","get"]}