@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.
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +13 -2
- package/dist/index.d.ts +13 -2
- package/dist/index.js.map +1 -1
- package/package.json +8 -8
- package/src/types/IOIDFClient.ts +15 -1
package/dist/index.cjs.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,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;
|
|
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;
|
|
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.
|
|
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": "
|
|
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
|
|
34
|
-
"@sphereon/ssi-
|
|
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.
|
|
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": "
|
|
63
|
+
"gitHead": "426c3a17d6a2a57ba428e83340c6904d3d2d79e1"
|
|
64
64
|
}
|
package/src/types/IOIDFClient.ts
CHANGED
|
@@ -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
|
+
}
|