@sphereon/ssi-sdk.oidf-client 0.34.1-feature.SSISDK.17.bitstring.sl.9 → 0.34.1-feature.merge.crypto.extensions.modules.33

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.
@@ -1 +1 @@
1
- {"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"]}
1
+ {"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;EAEzB,YAAYC,MAAuB;AACjC,UAAM,EAA4BN,sBAAqB,IAAK;MAAE,GAAGM;IAAK;AAGtE,SAAKN,wBAAwBA;EAC/B;EAEQO,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,KAAK7B,yBAAyB,KAAKO,oBAAoBC,OAAAA,CAAAA;EAG3D;EAEA,MAAcN,kBAAkBI,MAA6BE,SAA+D;AAC1H,UAAM,EAAEsB,kBAAkBC,aAAY,IAAKzB;AAE3C,UAAM0B,aAAa,KAAKJ,cAAcpB,OAAAA;AAEtC,WAAO,MAAMwB,WAAW9B,kBAAkB4B,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","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"]}
package/dist/index.d.cts CHANGED
@@ -1,8 +1,8 @@
1
1
  import * as _sphereon_ssi_types from '@sphereon/ssi-types';
2
2
  import { IPluginMethodMap, IAgentContext, IAgentPlugin } from '@veramo/core';
3
3
  import { IResourceResolver } from '@sphereon/ssi-sdk.resource-resolver';
4
- import { IJwtService } from '@sphereon/ssi-sdk-ext.jwt-service';
5
4
  import { TrustChainResolveResponse, IFetchService, ICryptoService } from '@sphereon/openid-federation-client';
5
+ import { JWK } from 'jose';
6
6
 
7
7
  type IRequiredPlugins = IJwtService & IResourceResolver;
8
8
  type IRequiredContext = IAgentContext<IRequiredPlugins>;
@@ -17,6 +17,17 @@ type OIDFClientArgs = {
17
17
  fetchServiceCallback?: IFetchService;
18
18
  cryptoServiceCallback?: ICryptoService;
19
19
  };
20
+ /**
21
+ * Partial opy of IJWTService to break cyclic dep between identifier-resolution, jwt-service and oidf-client
22
+ */
23
+ interface IJwtService extends IPluginMethodMap {
24
+ jwtVerifyJwsSignature(args: VerifyJwsArgs, context: IRequiredContext): Promise<any>;
25
+ }
26
+ type VerifyJwsArgs = {
27
+ jws: any;
28
+ jwk?: JWK;
29
+ opts?: any;
30
+ };
20
31
 
21
32
  declare const oidfClientMethods: Array<string>;
22
33
  declare class OIDFClient implements IAgentPlugin {
@@ -36,4 +47,4 @@ declare const schema: any;
36
47
 
37
48
  declare const logger: _sphereon_ssi_types.ISimpleLogger<unknown>;
38
49
 
39
- export { type IOIDFClient, type IRequiredContext, type IRequiredPlugins, OIDFClient, type OIDFClientArgs, type ResolveTrustChainArgs, logger, oidfClientMethods, schema };
50
+ export { type IJwtService, type IOIDFClient, type IRequiredContext, type IRequiredPlugins, OIDFClient, type OIDFClientArgs, type ResolveTrustChainArgs, type VerifyJwsArgs, logger, oidfClientMethods, schema };
package/dist/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import * as _sphereon_ssi_types from '@sphereon/ssi-types';
2
2
  import { IPluginMethodMap, IAgentContext, IAgentPlugin } from '@veramo/core';
3
3
  import { IResourceResolver } from '@sphereon/ssi-sdk.resource-resolver';
4
- import { IJwtService } from '@sphereon/ssi-sdk-ext.jwt-service';
5
4
  import { TrustChainResolveResponse, IFetchService, ICryptoService } from '@sphereon/openid-federation-client';
5
+ import { JWK } from 'jose';
6
6
 
7
7
  type IRequiredPlugins = IJwtService & IResourceResolver;
8
8
  type IRequiredContext = IAgentContext<IRequiredPlugins>;
@@ -17,6 +17,17 @@ type OIDFClientArgs = {
17
17
  fetchServiceCallback?: IFetchService;
18
18
  cryptoServiceCallback?: ICryptoService;
19
19
  };
20
+ /**
21
+ * Partial opy of IJWTService to break cyclic dep between identifier-resolution, jwt-service and oidf-client
22
+ */
23
+ interface IJwtService extends IPluginMethodMap {
24
+ jwtVerifyJwsSignature(args: VerifyJwsArgs, context: IRequiredContext): Promise<any>;
25
+ }
26
+ type VerifyJwsArgs = {
27
+ jws: any;
28
+ jwk?: JWK;
29
+ opts?: any;
30
+ };
20
31
 
21
32
  declare const oidfClientMethods: Array<string>;
22
33
  declare class OIDFClient implements IAgentPlugin {
@@ -36,4 +47,4 @@ declare const schema: any;
36
47
 
37
48
  declare const logger: _sphereon_ssi_types.ISimpleLogger<unknown>;
38
49
 
39
- export { type IOIDFClient, type IRequiredContext, type IRequiredPlugins, OIDFClient, type OIDFClientArgs, type ResolveTrustChainArgs, logger, oidfClientMethods, schema };
50
+ export { type IJwtService, type IOIDFClient, type IRequiredContext, type IRequiredPlugins, OIDFClient, type OIDFClientArgs, type ResolveTrustChainArgs, type VerifyJwsArgs, logger, oidfClientMethods, schema };
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"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;AAAA;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,SAASA,eAAe;;;ACIxB,SAASC,wBAAwE;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,iBACT,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,QAAQC,QAAQC,IAAI,sBAAA;","names":["Loggers","FederationClient","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"]}
1
+ {"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;AAAA;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,SAASA,eAAe;;;ACIxB,SAASC,wBAAwE;AAE1E,IAAMC,oBAAmC;EAAC;;AAE1C,IAAMC,aAAN,MAAMA;EANb,OAMaA;;;;EAEMC;EACRC,UAAuB;IAC9BC,mBAAmB,KAAKA,kBAAkBC,KAAK,IAAI;EACrD;EACSC,SAASA,OAAOC;EAEzB,YAAYC,MAAuB;AACjC,UAAM,EAA4BN,sBAAqB,IAAK;MAAE,GAAGM;IAAK;AAGtE,SAAKN,wBAAwBA;EAC/B;EAEQO,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,iBACT,KAAK7B,yBAAyB,KAAKO,oBAAoBC,OAAAA,CAAAA;EAG3D;EAEA,MAAcN,kBAAkBI,MAA6BE,SAA+D;AAC1H,UAAM,EAAEsB,kBAAkBC,aAAY,IAAKzB;AAE3C,UAAM0B,aAAa,KAAKJ,cAAcpB,OAAAA;AAEtC,WAAO,MAAMwB,WAAW9B,kBAAkB4B,kBAAkBC,cAAc,EAAA;EAC5E;AACF;;;AD3EA,IAAME,SAASC;AAGR,IAAMC,SAASC,QAAQC,QAAQC,IAAI,sBAAA;","names":["Loggers","FederationClient","oidfClientMethods","OIDFClient","cryptoServiceCallback","methods","resolveTrustChain","bind","schema","IOIDFClient","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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sphereon/ssi-sdk.oidf-client",
3
- "version": "0.34.1-feature.SSISDK.17.bitstring.sl.9+a052acba",
3
+ "version": "0.34.1-feature.merge.crypto.extensions.modules.33+426c3a17",
4
4
  "source": "src/index.ts",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -24,21 +24,21 @@
24
24
  },
25
25
  "scripts": {
26
26
  "build": "tsup --config ../../tsup.config.ts --tsconfig ../../tsconfig.tsup.json",
27
- "generate-plugin-schema": "ts-node ../../packages/dev/bin/sphereon.js dev generate-plugin-schema"
27
+ "generate-plugin-schema": "tsx ../../packages/dev/bin/sphereon.js dev generate-plugin-schema"
28
28
  },
29
29
  "dependencies": {
30
30
  "@sphereon/openid-federation-client": "0.20.9-unstable.48ddfa1",
31
31
  "@sphereon/openid-federation-common": "0.20.9-unstable.48ddfa1",
32
32
  "@sphereon/openid-federation-open-api": "0.20.9-unstable.48ddfa1",
33
- "@sphereon/ssi-sdk-ext.jwt-service": "0.29.0",
34
- "@sphereon/ssi-sdk.resource-resolver": "0.34.1-feature.SSISDK.17.bitstring.sl.9+a052acba",
35
- "@sphereon/ssi-types": "0.34.1-feature.SSISDK.17.bitstring.sl.9+a052acba"
33
+ "@sphereon/ssi-sdk.resource-resolver": "0.34.1-feature.merge.crypto.extensions.modules.33+426c3a17",
34
+ "@sphereon/ssi-types": "0.34.1-feature.merge.crypto.extensions.modules.33+426c3a17"
36
35
  },
37
36
  "devDependencies": {
38
- "@sphereon/ssi-sdk.agent-config": "0.34.1-feature.SSISDK.17.bitstring.sl.9+a052acba",
37
+ "@sphereon/ssi-sdk.agent-config": "0.34.1-feature.merge.crypto.extensions.modules.33+426c3a17",
39
38
  "@veramo/remote-client": "4.2.0",
40
39
  "@veramo/remote-server": "4.2.0",
41
- "jose": "^5.10.0"
40
+ "jose": "^5.10.0",
41
+ "uint8arrays": "3.1.1"
42
42
  },
43
43
  "files": [
44
44
  "dist",
@@ -60,5 +60,5 @@
60
60
  "Veramo",
61
61
  "OpenID Federation"
62
62
  ],
63
- "gitHead": "a052acbaa88acf4be22236ca3afaadd5b2821fe1"
63
+ "gitHead": "426c3a17d6a2a57ba428e83340c6904d3d2d79e1"
64
64
  }
@@ -1,7 +1,8 @@
1
1
  import { IResourceResolver } from '@sphereon/ssi-sdk.resource-resolver'
2
2
  import { IAgentContext, IPluginMethodMap } from '@veramo/core'
3
- import { IJwtService } from '@sphereon/ssi-sdk-ext.jwt-service'
4
3
  import { ICryptoService, IFetchService, TrustChainResolveResponse } from '@sphereon/openid-federation-client'
4
+ import { JWK } from 'jose'
5
+
5
6
  export type IRequiredPlugins = IJwtService & IResourceResolver
6
7
  export type IRequiredContext = IAgentContext<IRequiredPlugins>
7
8
 
@@ -18,3 +19,16 @@ export type OIDFClientArgs = {
18
19
  fetchServiceCallback?: IFetchService
19
20
  cryptoServiceCallback?: ICryptoService
20
21
  }
22
+
23
+ /**
24
+ * Partial opy of IJWTService to break cyclic dep between identifier-resolution, jwt-service and oidf-client
25
+ */
26
+ export interface IJwtService extends IPluginMethodMap {
27
+ jwtVerifyJwsSignature(args: VerifyJwsArgs, context: IRequiredContext): Promise<any>
28
+ }
29
+
30
+ export type VerifyJwsArgs = {
31
+ jws: any
32
+ jwk?: JWK // Jwk will be resolved from jws, but you can also provide one
33
+ opts?: any
34
+ }