@twin.org/trust-verifiers 0.0.3-next.8 → 0.9.0-next.1
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/README.md +1 -1
- package/dist/es/index.js +3 -0
- package/dist/es/index.js.map +1 -1
- package/dist/es/models/IIdentityAllowDenyVerifierConfig.js +4 -0
- package/dist/es/models/IIdentityAllowDenyVerifierConfig.js.map +1 -0
- package/dist/es/models/IIdentityAllowDenyVerifierConstructorOptions.js +2 -0
- package/dist/es/models/IIdentityAllowDenyVerifierConstructorOptions.js.map +1 -0
- package/dist/es/models/IJwtVerifiableCredentialVerifierConstructorOptions.js.map +1 -1
- package/dist/es/verifiers/identityAllowDenyVerifier.js +70 -0
- package/dist/es/verifiers/identityAllowDenyVerifier.js.map +1 -0
- package/dist/es/verifiers/jwtVerifiableCredentialVerifier.js +3 -9
- package/dist/es/verifiers/jwtVerifiableCredentialVerifier.js.map +1 -1
- package/dist/types/index.d.ts +3 -0
- package/dist/types/models/IIdentityAllowDenyVerifierConfig.d.ts +15 -0
- package/dist/types/models/IIdentityAllowDenyVerifierConstructorOptions.d.ts +10 -0
- package/dist/types/models/IJwtVerifiableCredentialVerifierConstructorOptions.d.ts +0 -5
- package/dist/types/verifiers/identityAllowDenyVerifier.d.ts +31 -0
- package/dist/types/verifiers/jwtVerifiableCredentialVerifier.d.ts +3 -3
- package/docs/changelog.md +261 -15
- package/docs/examples.md +44 -1
- package/docs/reference/classes/IdentityAllowDenyVerifier.md +91 -0
- package/docs/reference/classes/JwtVerifiableCredentialVerifier.md +6 -6
- package/docs/reference/index.md +3 -0
- package/docs/reference/interfaces/IIdentityAllowDenyVerifierConfig.md +21 -0
- package/docs/reference/interfaces/IIdentityAllowDenyVerifierConstructorOptions.md +11 -0
- package/docs/reference/interfaces/IJwtVerifiableCredentialVerifierConstructorOptions.md +2 -16
- package/locales/en.json +5 -0
- package/package.json +11 -11
package/README.md
CHANGED
package/dist/es/index.js
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
// Copyright 2025 IOTA Stiftung.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0.
|
|
3
|
+
export * from "./models/IIdentityAllowDenyVerifierConfig.js";
|
|
4
|
+
export * from "./models/IIdentityAllowDenyVerifierConstructorOptions.js";
|
|
3
5
|
export * from "./models/IJwtVerifiableCredentialVerifierConstructorOptions.js";
|
|
6
|
+
export * from "./verifiers/identityAllowDenyVerifier.js";
|
|
4
7
|
export * from "./verifiers/jwtVerifiableCredentialVerifier.js";
|
|
5
8
|
//# sourceMappingURL=index.js.map
|
package/dist/es/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,uCAAuC;AACvC,cAAc,gEAAgE,CAAC;AAC/E,cAAc,gDAAgD,CAAC","sourcesContent":["// Copyright 2025 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\nexport * from \"./models/IJwtVerifiableCredentialVerifierConstructorOptions.js\";\nexport * from \"./verifiers/jwtVerifiableCredentialVerifier.js\";\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,uCAAuC;AACvC,cAAc,8CAA8C,CAAC;AAC7D,cAAc,0DAA0D,CAAC;AACzE,cAAc,gEAAgE,CAAC;AAC/E,cAAc,0CAA0C,CAAC;AACzD,cAAc,gDAAgD,CAAC","sourcesContent":["// Copyright 2025 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\nexport * from \"./models/IIdentityAllowDenyVerifierConfig.js\";\nexport * from \"./models/IIdentityAllowDenyVerifierConstructorOptions.js\";\nexport * from \"./models/IJwtVerifiableCredentialVerifierConstructorOptions.js\";\nexport * from \"./verifiers/identityAllowDenyVerifier.js\";\nexport * from \"./verifiers/jwtVerifiableCredentialVerifier.js\";\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IIdentityAllowDenyVerifierConfig.js","sourceRoot":"","sources":["../../../src/models/IIdentityAllowDenyVerifierConfig.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,uCAAuC","sourcesContent":["// Copyright 2025 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\n\n/**\n * Configuration for the Identity Allow/Deny Verifier.\n */\nexport interface IIdentityAllowDenyVerifierConfig {\n\t/**\n\t * Identities that are permitted; all others are rejected.\n\t * Skipped when empty or absent.\n\t */\n\tallowIdentities?: string[];\n\n\t/**\n\t * Identities that are explicitly rejected.\n\t * Skipped when empty or absent.\n\t */\n\tdenyIdentities?: string[];\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IIdentityAllowDenyVerifierConstructorOptions.js","sourceRoot":"","sources":["../../../src/models/IIdentityAllowDenyVerifierConstructorOptions.ts"],"names":[],"mappings":"","sourcesContent":["// Copyright 2025 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\nimport type { IIdentityAllowDenyVerifierConfig } from \"./IIdentityAllowDenyVerifierConfig.js\";\n\n/**\n * The options for the Identity Allow/Deny Verifier.\n */\nexport interface IIdentityAllowDenyVerifierConstructorOptions {\n\t/**\n\t * The allow/deny configuration for the verifier.\n\t */\n\tconfig?: IIdentityAllowDenyVerifierConfig;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IJwtVerifiableCredentialVerifierConstructorOptions.js","sourceRoot":"","sources":["../../../src/models/IJwtVerifiableCredentialVerifierConstructorOptions.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,uCAAuC","sourcesContent":["// Copyright 2025 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\n\n/**\n * The options for the JWT Verifiable Credential Verifier.\n */\nexport interface IJwtVerifiableCredentialVerifierConstructorOptions {\n\t/**\n\t * The
|
|
1
|
+
{"version":3,"file":"IJwtVerifiableCredentialVerifierConstructorOptions.js","sourceRoot":"","sources":["../../../src/models/IJwtVerifiableCredentialVerifierConstructorOptions.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,uCAAuC","sourcesContent":["// Copyright 2025 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\n\n/**\n * The options for the JWT Verifiable Credential Verifier.\n */\nexport interface IJwtVerifiableCredentialVerifierConstructorOptions {\n\t/**\n\t * The identity component type.\n\t * @default identity\n\t */\n\tidentityComponentType?: string;\n}\n"]}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
// Copyright 2025 IOTA Stiftung.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0.
|
|
3
|
+
import { GeneralError, Is } from "@twin.org/core";
|
|
4
|
+
/**
|
|
5
|
+
* Class to gate verification based on allowed and denied identity lists.
|
|
6
|
+
*/
|
|
7
|
+
export class IdentityAllowDenyVerifier {
|
|
8
|
+
/**
|
|
9
|
+
* Runtime name for the class.
|
|
10
|
+
*/
|
|
11
|
+
static CLASS_NAME = "IdentityAllowDenyVerifier";
|
|
12
|
+
/**
|
|
13
|
+
* The identities that are permitted.
|
|
14
|
+
* @internal
|
|
15
|
+
*/
|
|
16
|
+
_allowIdentities;
|
|
17
|
+
/**
|
|
18
|
+
* The identities that are explicitly rejected.
|
|
19
|
+
* @internal
|
|
20
|
+
*/
|
|
21
|
+
_denyIdentities;
|
|
22
|
+
/**
|
|
23
|
+
* Creates a new instance of IdentityAllowDenyVerifier.
|
|
24
|
+
* @param options The options for the verifier.
|
|
25
|
+
*/
|
|
26
|
+
constructor(options) {
|
|
27
|
+
this._allowIdentities = options?.config?.allowIdentities;
|
|
28
|
+
this._denyIdentities = options?.config?.denyIdentities;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Returns the class name of the component.
|
|
32
|
+
* @returns The runtime class name string
|
|
33
|
+
*/
|
|
34
|
+
className() {
|
|
35
|
+
return IdentityAllowDenyVerifier.CLASS_NAME;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Verify a payload by checking the validity of its structure and content.
|
|
39
|
+
* @param payload The payload to verify.
|
|
40
|
+
* @param info Information extracted from previous verifiers and to be added by this verifier.
|
|
41
|
+
* @param info.identity The identity associated with the payload.
|
|
42
|
+
* @param errors Array to collect verification errors.
|
|
43
|
+
* @returns Whether the payload is verified, returns undefined if payload was not processed.
|
|
44
|
+
*/
|
|
45
|
+
async verify(payload, info, errors) {
|
|
46
|
+
const hasAllow = Is.arrayValue(this._allowIdentities);
|
|
47
|
+
const hasDeny = Is.arrayValue(this._denyIdentities);
|
|
48
|
+
if (!hasAllow && !hasDeny) {
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
if (!Is.stringValue(info.identity)) {
|
|
52
|
+
errors.push(new GeneralError(IdentityAllowDenyVerifier.CLASS_NAME, "identityMissing"));
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
if (hasAllow && !this._allowIdentities.includes(info.identity)) {
|
|
56
|
+
errors.push(new GeneralError(IdentityAllowDenyVerifier.CLASS_NAME, "identityNotAllowed", {
|
|
57
|
+
identity: info.identity
|
|
58
|
+
}));
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
if (hasDeny && this._denyIdentities.includes(info.identity)) {
|
|
62
|
+
errors.push(new GeneralError(IdentityAllowDenyVerifier.CLASS_NAME, "identityDenied", {
|
|
63
|
+
identity: info.identity
|
|
64
|
+
}));
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=identityAllowDenyVerifier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identityAllowDenyVerifier.js","sourceRoot":"","sources":["../../../src/verifiers/identityAllowDenyVerifier.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,uCAAuC;AACvC,OAAO,EAAE,YAAY,EAAE,EAAE,EAAe,MAAM,gBAAgB,CAAC;AAK/D;;GAEG;AACH,MAAM,OAAO,yBAAyB;IACrC;;OAEG;IACI,MAAM,CAAU,UAAU,+BAA+C;IAEhF;;;OAGG;IACc,gBAAgB,CAAY;IAE7C;;;OAGG;IACc,eAAe,CAAY;IAE5C;;;OAGG;IACH,YAAY,OAAsD;QACjE,IAAI,CAAC,gBAAgB,GAAG,OAAO,EAAE,MAAM,EAAE,eAAe,CAAC;QACzD,IAAI,CAAC,eAAe,GAAG,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC;IACxD,CAAC;IAED;;;OAGG;IACI,SAAS;QACf,OAAO,yBAAyB,CAAC,UAAU,CAAC;IAC7C,CAAC;IAED;;;;;;;OAOG;IACI,KAAK,CAAC,MAAM,CAClB,OAAgB,EAChB,IAA4B,EAC5B,MAAgB;QAEhB,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAS,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAG,EAAE,CAAC,UAAU,CAAS,IAAI,CAAC,eAAe,CAAC,CAAC;QAE5D,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;YAC3B,OAAO,SAAS,CAAC;QAClB,CAAC;QAED,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,yBAAyB,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC;YACvF,OAAO,KAAK,CAAC;QACd,CAAC;QAED,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChE,MAAM,CAAC,IAAI,CACV,IAAI,YAAY,CAAC,yBAAyB,CAAC,UAAU,EAAE,oBAAoB,EAAE;gBAC5E,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACvB,CAAC,CACF,CAAC;YACF,OAAO,KAAK,CAAC;QACd,CAAC;QAED,IAAI,OAAO,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7D,MAAM,CAAC,IAAI,CACV,IAAI,YAAY,CAAC,yBAAyB,CAAC,UAAU,EAAE,gBAAgB,EAAE;gBACxE,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACvB,CAAC,CACF,CAAC;YACF,OAAO,KAAK,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC;IACb,CAAC","sourcesContent":["// Copyright 2025 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\nimport { GeneralError, Is, type IError } from \"@twin.org/core\";\nimport { nameof } from \"@twin.org/nameof\";\nimport type { ITrustVerificationInfo, ITrustVerifier } from \"@twin.org/trust-models\";\nimport type { IIdentityAllowDenyVerifierConstructorOptions } from \"../models/IIdentityAllowDenyVerifierConstructorOptions.js\";\n\n/**\n * Class to gate verification based on allowed and denied identity lists.\n */\nexport class IdentityAllowDenyVerifier implements ITrustVerifier {\n\t/**\n\t * Runtime name for the class.\n\t */\n\tpublic static readonly CLASS_NAME: string = nameof<IdentityAllowDenyVerifier>();\n\n\t/**\n\t * The identities that are permitted.\n\t * @internal\n\t */\n\tprivate readonly _allowIdentities?: string[];\n\n\t/**\n\t * The identities that are explicitly rejected.\n\t * @internal\n\t */\n\tprivate readonly _denyIdentities?: string[];\n\n\t/**\n\t * Creates a new instance of IdentityAllowDenyVerifier.\n\t * @param options The options for the verifier.\n\t */\n\tconstructor(options?: IIdentityAllowDenyVerifierConstructorOptions) {\n\t\tthis._allowIdentities = options?.config?.allowIdentities;\n\t\tthis._denyIdentities = options?.config?.denyIdentities;\n\t}\n\n\t/**\n\t * Returns the class name of the component.\n\t * @returns The runtime class name string\n\t */\n\tpublic className(): string {\n\t\treturn IdentityAllowDenyVerifier.CLASS_NAME;\n\t}\n\n\t/**\n\t * Verify a payload by checking the validity of its structure and content.\n\t * @param payload The payload to verify.\n\t * @param info Information extracted from previous verifiers and to be added by this verifier.\n\t * @param info.identity The identity associated with the payload.\n\t * @param errors Array to collect verification errors.\n\t * @returns Whether the payload is verified, returns undefined if payload was not processed.\n\t */\n\tpublic async verify(\n\t\tpayload: unknown,\n\t\tinfo: ITrustVerificationInfo,\n\t\terrors: IError[]\n\t): Promise<boolean | undefined> {\n\t\tconst hasAllow = Is.arrayValue<string>(this._allowIdentities);\n\t\tconst hasDeny = Is.arrayValue<string>(this._denyIdentities);\n\n\t\tif (!hasAllow && !hasDeny) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (!Is.stringValue(info.identity)) {\n\t\t\terrors.push(new GeneralError(IdentityAllowDenyVerifier.CLASS_NAME, \"identityMissing\"));\n\t\t\treturn false;\n\t\t}\n\n\t\tif (hasAllow && !this._allowIdentities.includes(info.identity)) {\n\t\t\terrors.push(\n\t\t\t\tnew GeneralError(IdentityAllowDenyVerifier.CLASS_NAME, \"identityNotAllowed\", {\n\t\t\t\t\tidentity: info.identity\n\t\t\t\t})\n\t\t\t);\n\t\t\treturn false;\n\t\t}\n\n\t\tif (hasDeny && this._denyIdentities.includes(info.identity)) {\n\t\t\terrors.push(\n\t\t\t\tnew GeneralError(IdentityAllowDenyVerifier.CLASS_NAME, \"identityDenied\", {\n\t\t\t\t\tidentity: info.identity\n\t\t\t\t})\n\t\t\t);\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n}\n"]}
|
|
@@ -11,27 +11,21 @@ export class JwtVerifiableCredentialVerifier {
|
|
|
11
11
|
* Runtime name for the class.
|
|
12
12
|
*/
|
|
13
13
|
static CLASS_NAME = "JwtVerifiableCredentialVerifier";
|
|
14
|
-
/**
|
|
15
|
-
* The logging component.
|
|
16
|
-
* @internal
|
|
17
|
-
*/
|
|
18
|
-
_loggingComponent;
|
|
19
14
|
/**
|
|
20
15
|
* The identity component.
|
|
21
16
|
* @internal
|
|
22
17
|
*/
|
|
23
18
|
_identityComponent;
|
|
24
19
|
/**
|
|
25
|
-
*
|
|
26
|
-
* @param options The options for the
|
|
20
|
+
* Creates a new instance of JwtVerifiableCredentialVerifier.
|
|
21
|
+
* @param options The options for the verifier.
|
|
27
22
|
*/
|
|
28
23
|
constructor(options) {
|
|
29
|
-
this._loggingComponent = ComponentFactory.getIfExists(options?.loggingComponentType ?? "logging");
|
|
30
24
|
this._identityComponent = ComponentFactory.get(options?.identityComponentType ?? "identity");
|
|
31
25
|
}
|
|
32
26
|
/**
|
|
33
27
|
* Returns the class name of the component.
|
|
34
|
-
* @returns The class name
|
|
28
|
+
* @returns The runtime class name string
|
|
35
29
|
*/
|
|
36
30
|
className() {
|
|
37
31
|
return JwtVerifiableCredentialVerifier.CLASS_NAME;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jwtVerifiableCredentialVerifier.js","sourceRoot":"","sources":["../../../src/verifiers/jwtVerifiableCredentialVerifier.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,uCAAuC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,YAAY,EAAE,EAAE,EAAe,MAAM,gBAAgB,CAAC;AACpG,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"jwtVerifiableCredentialVerifier.js","sourceRoot":"","sources":["../../../src/verifiers/jwtVerifiableCredentialVerifier.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2025 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\nimport { BaseError, Coerce, ComponentFactory, GeneralError, Is, type IError } from \"@twin.org/core\";\nimport { JsonLdHelper } from \"@twin.org/data-json-ld\";\nimport type { IIdentityComponent } from \"@twin.org/identity-models\";\nimport { nameof } from \"@twin.org/nameof\";\nimport type { ITrustVerificationInfo, ITrustVerifier } from \"@twin.org/trust-models\";\nimport { Jwt } from \"@twin.org/web\";\nimport type { IJwtVerifiableCredentialVerifierConstructorOptions } from \"../models/IJwtVerifiableCredentialVerifierConstructorOptions.js\";\n\n/**\n * Class to verify a JWT Verifiable Credential.\n */\nexport class JwtVerifiableCredentialVerifier implements ITrustVerifier {\n\t/**\n\t * Runtime name for the class.\n\t */\n\tpublic static readonly CLASS_NAME: string = nameof<JwtVerifiableCredentialVerifier>();\n\n\t/**\n\t * The identity component.\n\t * @internal\n\t */\n\tprivate readonly _identityComponent: IIdentityComponent;\n\n\t/**\n\t * Creates a new instance of JwtVerifiableCredentialVerifier.\n\t * @param options The options for the verifier.\n\t */\n\tconstructor(options?: IJwtVerifiableCredentialVerifierConstructorOptions) {\n\t\tthis._identityComponent = ComponentFactory.get(options?.identityComponentType ?? \"identity\");\n\t}\n\n\t/**\n\t * Returns the class name of the component.\n\t * @returns The runtime class name string\n\t */\n\tpublic className(): string {\n\t\treturn JwtVerifiableCredentialVerifier.CLASS_NAME;\n\t}\n\n\t/**\n\t * Verify a payload by checking the validity of its structure and content.\n\t * @param payload The payload to verify.\n\t * @param info Information extracted from previous verifiers and to be added by this verifier.\n\t * @param info.identity The identity associated with the payload.\n\t * @param errors Array to collect verification errors.\n\t * @returns Whether the payload is verified, returns undefined if payload was not processed.\n\t */\n\tpublic async verify(\n\t\tpayload: unknown,\n\t\tinfo: ITrustVerificationInfo,\n\t\terrors: IError[]\n\t): Promise<boolean | undefined> {\n\t\tif (Is.stringValue(payload)) {\n\t\t\tconst jwt = await Jwt.decode(payload);\n\n\t\t\tif (Is.objectValue(jwt.header) && Is.object(jwt.payload) && Is.uint8Array(jwt.signature)) {\n\t\t\t\tlet isVerified = true;\n\t\t\t\ttry {\n\t\t\t\t\tconst expiredMs = (Coerce.number(jwt.payload.exp) ?? 0) * 1000;\n\t\t\t\t\tif (expiredMs > 0 && expiredMs < Date.now()) {\n\t\t\t\t\t\terrors.push(\n\t\t\t\t\t\t\tnew GeneralError(JwtVerifiableCredentialVerifier.CLASS_NAME, \"tokenExpired\")\n\t\t\t\t\t\t);\n\t\t\t\t\t\tisVerified = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst verificationResult =\n\t\t\t\t\t\tawait this._identityComponent.verifiableCredentialVerify(payload);\n\n\t\t\t\t\tconst verifiableCredential = verificationResult.verifiableCredential;\n\t\t\t\t\tif (Is.empty(verifiableCredential)) {\n\t\t\t\t\t\terrors.push(\n\t\t\t\t\t\t\tnew GeneralError(JwtVerifiableCredentialVerifier.CLASS_NAME, \"tokenMissingCredential\")\n\t\t\t\t\t\t);\n\t\t\t\t\t\tisVerified = false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tinfo.data ??= {};\n\t\t\t\t\t\tinfo.data.verifiableCredential = JsonLdHelper.toNodeObject(verifiableCredential);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst issuer: string | undefined = Is.stringValue(verifiableCredential?.issuer)\n\t\t\t\t\t\t? verifiableCredential?.issuer\n\t\t\t\t\t\t: undefined;\n\t\t\t\t\tif (Is.empty(issuer)) {\n\t\t\t\t\t\terrors.push(\n\t\t\t\t\t\t\tnew GeneralError(JwtVerifiableCredentialVerifier.CLASS_NAME, \"tokenMissingIssuer\")\n\t\t\t\t\t\t);\n\t\t\t\t\t\tisVerified = false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tinfo.identity = issuer;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst subject = verifiableCredential?.credentialSubject;\n\t\t\t\t\tif (Is.empty(subject)) {\n\t\t\t\t\t\terrors.push(\n\t\t\t\t\t\t\tnew GeneralError(JwtVerifiableCredentialVerifier.CLASS_NAME, \"tokenMissingSubject\")\n\t\t\t\t\t\t);\n\t\t\t\t\t\tisVerified = false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tinfo.data ??= {};\n\t\t\t\t\t\tinfo.data.subject = JsonLdHelper.toNodeObject(subject);\n\t\t\t\t\t}\n\t\t\t\t} catch (err) {\n\t\t\t\t\tisVerified = false;\n\t\t\t\t\terrors.push(\n\t\t\t\t\t\tnew GeneralError(\n\t\t\t\t\t\t\tJwtVerifiableCredentialVerifier.CLASS_NAME,\n\t\t\t\t\t\t\t\"tokenDecodingFailed\",\n\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\tBaseError.fromError(err)\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn isVerified;\n\t\t\t}\n\t\t}\n\t}\n}\n"]}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,2 +1,5 @@
|
|
|
1
|
+
export * from "./models/IIdentityAllowDenyVerifierConfig.js";
|
|
2
|
+
export * from "./models/IIdentityAllowDenyVerifierConstructorOptions.js";
|
|
1
3
|
export * from "./models/IJwtVerifiableCredentialVerifierConstructorOptions.js";
|
|
4
|
+
export * from "./verifiers/identityAllowDenyVerifier.js";
|
|
2
5
|
export * from "./verifiers/jwtVerifiableCredentialVerifier.js";
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration for the Identity Allow/Deny Verifier.
|
|
3
|
+
*/
|
|
4
|
+
export interface IIdentityAllowDenyVerifierConfig {
|
|
5
|
+
/**
|
|
6
|
+
* Identities that are permitted; all others are rejected.
|
|
7
|
+
* Skipped when empty or absent.
|
|
8
|
+
*/
|
|
9
|
+
allowIdentities?: string[];
|
|
10
|
+
/**
|
|
11
|
+
* Identities that are explicitly rejected.
|
|
12
|
+
* Skipped when empty or absent.
|
|
13
|
+
*/
|
|
14
|
+
denyIdentities?: string[];
|
|
15
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { IIdentityAllowDenyVerifierConfig } from "./IIdentityAllowDenyVerifierConfig.js";
|
|
2
|
+
/**
|
|
3
|
+
* The options for the Identity Allow/Deny Verifier.
|
|
4
|
+
*/
|
|
5
|
+
export interface IIdentityAllowDenyVerifierConstructorOptions {
|
|
6
|
+
/**
|
|
7
|
+
* The allow/deny configuration for the verifier.
|
|
8
|
+
*/
|
|
9
|
+
config?: IIdentityAllowDenyVerifierConfig;
|
|
10
|
+
}
|
|
@@ -2,11 +2,6 @@
|
|
|
2
2
|
* The options for the JWT Verifiable Credential Verifier.
|
|
3
3
|
*/
|
|
4
4
|
export interface IJwtVerifiableCredentialVerifierConstructorOptions {
|
|
5
|
-
/**
|
|
6
|
-
* The logging component type.
|
|
7
|
-
* @default logging
|
|
8
|
-
*/
|
|
9
|
-
loggingComponentType?: string;
|
|
10
5
|
/**
|
|
11
6
|
* The identity component type.
|
|
12
7
|
* @default identity
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type IError } from "@twin.org/core";
|
|
2
|
+
import type { ITrustVerificationInfo, ITrustVerifier } from "@twin.org/trust-models";
|
|
3
|
+
import type { IIdentityAllowDenyVerifierConstructorOptions } from "../models/IIdentityAllowDenyVerifierConstructorOptions.js";
|
|
4
|
+
/**
|
|
5
|
+
* Class to gate verification based on allowed and denied identity lists.
|
|
6
|
+
*/
|
|
7
|
+
export declare class IdentityAllowDenyVerifier implements ITrustVerifier {
|
|
8
|
+
/**
|
|
9
|
+
* Runtime name for the class.
|
|
10
|
+
*/
|
|
11
|
+
static readonly CLASS_NAME: string;
|
|
12
|
+
/**
|
|
13
|
+
* Creates a new instance of IdentityAllowDenyVerifier.
|
|
14
|
+
* @param options The options for the verifier.
|
|
15
|
+
*/
|
|
16
|
+
constructor(options?: IIdentityAllowDenyVerifierConstructorOptions);
|
|
17
|
+
/**
|
|
18
|
+
* Returns the class name of the component.
|
|
19
|
+
* @returns The runtime class name string
|
|
20
|
+
*/
|
|
21
|
+
className(): string;
|
|
22
|
+
/**
|
|
23
|
+
* Verify a payload by checking the validity of its structure and content.
|
|
24
|
+
* @param payload The payload to verify.
|
|
25
|
+
* @param info Information extracted from previous verifiers and to be added by this verifier.
|
|
26
|
+
* @param info.identity The identity associated with the payload.
|
|
27
|
+
* @param errors Array to collect verification errors.
|
|
28
|
+
* @returns Whether the payload is verified, returns undefined if payload was not processed.
|
|
29
|
+
*/
|
|
30
|
+
verify(payload: unknown, info: ITrustVerificationInfo, errors: IError[]): Promise<boolean | undefined>;
|
|
31
|
+
}
|
|
@@ -10,13 +10,13 @@ export declare class JwtVerifiableCredentialVerifier implements ITrustVerifier {
|
|
|
10
10
|
*/
|
|
11
11
|
static readonly CLASS_NAME: string;
|
|
12
12
|
/**
|
|
13
|
-
*
|
|
14
|
-
* @param options The options for the
|
|
13
|
+
* Creates a new instance of JwtVerifiableCredentialVerifier.
|
|
14
|
+
* @param options The options for the verifier.
|
|
15
15
|
*/
|
|
16
16
|
constructor(options?: IJwtVerifiableCredentialVerifierConstructorOptions);
|
|
17
17
|
/**
|
|
18
18
|
* Returns the class name of the component.
|
|
19
|
-
* @returns The class name
|
|
19
|
+
* @returns The runtime class name string
|
|
20
20
|
*/
|
|
21
21
|
className(): string;
|
|
22
22
|
/**
|
package/docs/changelog.md
CHANGED
|
@@ -1,11 +1,257 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## [0.0
|
|
3
|
+
## [0.9.0-next.1](https://github.com/iotaledger/twin-trust/compare/trust-verifiers-v0.9.0-next.0...trust-verifiers-v0.9.0-next.1) (2026-06-23)
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
### Features
|
|
7
7
|
|
|
8
|
-
*
|
|
8
|
+
* add allow deny verifier ([#32](https://github.com/iotaledger/twin-trust/issues/32)) ([daf5d03](https://github.com/iotaledger/twin-trust/commit/daf5d033ffbe82e2228c48ca7ffea870a1ce956e))
|
|
9
|
+
* add generators ([6228c88](https://github.com/iotaledger/twin-trust/commit/6228c88a8f0244b7bdfc76b8624c427c81d23f7b))
|
|
10
|
+
* add optional tenantId + organizationId to trust VC payload ([#19](https://github.com/iotaledger/twin-trust/issues/19)) ([1e93f6b](https://github.com/iotaledger/twin-trust/commit/1e93f6b0eacbfa725f3c3515d4255b39dd122ce7))
|
|
11
|
+
* always include identity in verification info ([9594d19](https://github.com/iotaledger/twin-trust/commit/9594d19e9d718bd42b82964750ae3bcfb7df51bf))
|
|
12
|
+
* flatten error structure ([5fdd665](https://github.com/iotaledger/twin-trust/commit/5fdd665d0fc523a655563a0c20d1d82b634534e2))
|
|
13
|
+
* initial commit ([d378ef4](https://github.com/iotaledger/twin-trust/commit/d378ef4cd66c98fa188aaf3b23152d1e47d88a37))
|
|
14
|
+
* organization identifiers ([#39](https://github.com/iotaledger/twin-trust/issues/39)) ([a5891b9](https://github.com/iotaledger/twin-trust/commit/a5891b9d57ef209c20f53302442d1910dce963d2))
|
|
15
|
+
* remove logging component ([54b56cb](https://github.com/iotaledger/twin-trust/commit/54b56cb81a6cb0aac41e37e8edda9c36685f2adb))
|
|
16
|
+
* support pass through of info between verifiers ([1ce64b9](https://github.com/iotaledger/twin-trust/commit/1ce64b97a949278b447cc12b576ce5de537f30f3))
|
|
17
|
+
* typescript 6 update ([a232da2](https://github.com/iotaledger/twin-trust/commit/a232da293afbd3b42843e187e4952dabd7917397))
|
|
18
|
+
* update dependencies ([367d7fc](https://github.com/iotaledger/twin-trust/commit/367d7fc1f970522650c776d231bfacc84f97be67))
|
|
19
|
+
* verification info structure ([#10](https://github.com/iotaledger/twin-trust/issues/10)) ([8b09ec8](https://github.com/iotaledger/twin-trust/commit/8b09ec8128214b659f427fc3a985eb8ced9ed5dc))
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
### Dependencies
|
|
23
|
+
|
|
24
|
+
* The following workspace dependencies were updated
|
|
25
|
+
* dependencies
|
|
26
|
+
* @twin.org/trust-models bumped from 0.9.0-next.0 to 0.9.0-next.1
|
|
27
|
+
|
|
28
|
+
## [0.0.3-next.24](https://github.com/iotaledger/twin-trust/compare/trust-verifiers-v0.0.3-next.23...trust-verifiers-v0.0.3-next.24) (2026-06-18)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
### Miscellaneous Chores
|
|
32
|
+
|
|
33
|
+
* **trust-verifiers:** Synchronize repo versions
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
### Dependencies
|
|
37
|
+
|
|
38
|
+
* The following workspace dependencies were updated
|
|
39
|
+
* dependencies
|
|
40
|
+
* @twin.org/trust-models bumped from 0.0.3-next.23 to 0.0.3-next.24
|
|
41
|
+
|
|
42
|
+
## [0.0.3-next.23](https://github.com/iotaledger/twin-trust/compare/trust-verifiers-v0.0.3-next.22...trust-verifiers-v0.0.3-next.23) (2026-06-11)
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
### Features
|
|
46
|
+
|
|
47
|
+
* add allow deny verifier ([#32](https://github.com/iotaledger/twin-trust/issues/32)) ([daf5d03](https://github.com/iotaledger/twin-trust/commit/daf5d033ffbe82e2228c48ca7ffea870a1ce956e))
|
|
48
|
+
* add generators ([6228c88](https://github.com/iotaledger/twin-trust/commit/6228c88a8f0244b7bdfc76b8624c427c81d23f7b))
|
|
49
|
+
* add optional tenantId + organizationId to trust VC payload ([#19](https://github.com/iotaledger/twin-trust/issues/19)) ([1e93f6b](https://github.com/iotaledger/twin-trust/commit/1e93f6b0eacbfa725f3c3515d4255b39dd122ce7))
|
|
50
|
+
* always include identity in verification info ([9594d19](https://github.com/iotaledger/twin-trust/commit/9594d19e9d718bd42b82964750ae3bcfb7df51bf))
|
|
51
|
+
* flatten error structure ([5fdd665](https://github.com/iotaledger/twin-trust/commit/5fdd665d0fc523a655563a0c20d1d82b634534e2))
|
|
52
|
+
* initial commit ([d378ef4](https://github.com/iotaledger/twin-trust/commit/d378ef4cd66c98fa188aaf3b23152d1e47d88a37))
|
|
53
|
+
* organization identifiers ([#39](https://github.com/iotaledger/twin-trust/issues/39)) ([a5891b9](https://github.com/iotaledger/twin-trust/commit/a5891b9d57ef209c20f53302442d1910dce963d2))
|
|
54
|
+
* remove logging component ([54b56cb](https://github.com/iotaledger/twin-trust/commit/54b56cb81a6cb0aac41e37e8edda9c36685f2adb))
|
|
55
|
+
* support pass through of info between verifiers ([1ce64b9](https://github.com/iotaledger/twin-trust/commit/1ce64b97a949278b447cc12b576ce5de537f30f3))
|
|
56
|
+
* typescript 6 update ([a232da2](https://github.com/iotaledger/twin-trust/commit/a232da293afbd3b42843e187e4952dabd7917397))
|
|
57
|
+
* update dependencies ([367d7fc](https://github.com/iotaledger/twin-trust/commit/367d7fc1f970522650c776d231bfacc84f97be67))
|
|
58
|
+
* verification info structure ([#10](https://github.com/iotaledger/twin-trust/issues/10)) ([8b09ec8](https://github.com/iotaledger/twin-trust/commit/8b09ec8128214b659f427fc3a985eb8ced9ed5dc))
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
### Dependencies
|
|
62
|
+
|
|
63
|
+
* The following workspace dependencies were updated
|
|
64
|
+
* dependencies
|
|
65
|
+
* @twin.org/trust-models bumped from 0.0.3-next.21 to 0.0.3-next.23
|
|
66
|
+
|
|
67
|
+
## [0.0.3-next.21](https://github.com/iotaledger/twin-trust/compare/trust-verifiers-v0.0.3-next.20...trust-verifiers-v0.0.3-next.21) (2026-06-11)
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
### Features
|
|
71
|
+
|
|
72
|
+
* organization identifiers ([#39](https://github.com/iotaledger/twin-trust/issues/39)) ([a5891b9](https://github.com/iotaledger/twin-trust/commit/a5891b9d57ef209c20f53302442d1910dce963d2))
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
### Dependencies
|
|
76
|
+
|
|
77
|
+
* The following workspace dependencies were updated
|
|
78
|
+
* dependencies
|
|
79
|
+
* @twin.org/trust-models bumped from 0.0.3-next.20 to 0.0.3-next.21
|
|
80
|
+
|
|
81
|
+
## [0.0.3-next.20](https://github.com/iotaledger/twin-trust/compare/trust-verifiers-v0.0.3-next.19...trust-verifiers-v0.0.3-next.20) (2026-06-10)
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
### Miscellaneous Chores
|
|
85
|
+
|
|
86
|
+
* **trust-verifiers:** Synchronize repo versions
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
### Dependencies
|
|
90
|
+
|
|
91
|
+
* The following workspace dependencies were updated
|
|
92
|
+
* dependencies
|
|
93
|
+
* @twin.org/trust-models bumped from 0.0.3-next.19 to 0.0.3-next.20
|
|
94
|
+
|
|
95
|
+
## [0.0.3-next.19](https://github.com/iotaledger/twin-trust/compare/trust-verifiers-v0.0.3-next.18...trust-verifiers-v0.0.3-next.19) (2026-06-05)
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
### Features
|
|
99
|
+
|
|
100
|
+
* remove logging component ([54b56cb](https://github.com/iotaledger/twin-trust/commit/54b56cb81a6cb0aac41e37e8edda9c36685f2adb))
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
### Dependencies
|
|
104
|
+
|
|
105
|
+
* The following workspace dependencies were updated
|
|
106
|
+
* dependencies
|
|
107
|
+
* @twin.org/trust-models bumped from 0.0.3-next.18 to 0.0.3-next.19
|
|
108
|
+
|
|
109
|
+
## [0.0.3-next.18](https://github.com/iotaledger/twin-trust/compare/trust-verifiers-v0.0.3-next.17...trust-verifiers-v0.0.3-next.18) (2026-06-05)
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
### Features
|
|
113
|
+
|
|
114
|
+
* add allow deny verifier ([#32](https://github.com/iotaledger/twin-trust/issues/32)) ([daf5d03](https://github.com/iotaledger/twin-trust/commit/daf5d033ffbe82e2228c48ca7ffea870a1ce956e))
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
### Dependencies
|
|
118
|
+
|
|
119
|
+
* The following workspace dependencies were updated
|
|
120
|
+
* dependencies
|
|
121
|
+
* @twin.org/trust-models bumped from 0.0.3-next.17 to 0.0.3-next.18
|
|
122
|
+
|
|
123
|
+
## [0.0.3-next.17](https://github.com/iotaledger/twin-trust/compare/trust-verifiers-v0.0.3-next.16...trust-verifiers-v0.0.3-next.17) (2026-06-02)
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
### Miscellaneous Chores
|
|
127
|
+
|
|
128
|
+
* **trust-verifiers:** Synchronize repo versions
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
### Dependencies
|
|
132
|
+
|
|
133
|
+
* The following workspace dependencies were updated
|
|
134
|
+
* dependencies
|
|
135
|
+
* @twin.org/trust-models bumped from 0.0.3-next.16 to 0.0.3-next.17
|
|
136
|
+
|
|
137
|
+
## [0.0.3-next.16](https://github.com/iotaledger/twin-trust/compare/trust-verifiers-v0.0.3-next.15...trust-verifiers-v0.0.3-next.16) (2026-05-27)
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
### Miscellaneous Chores
|
|
141
|
+
|
|
142
|
+
* **trust-verifiers:** Synchronize repo versions
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
### Dependencies
|
|
146
|
+
|
|
147
|
+
* The following workspace dependencies were updated
|
|
148
|
+
* dependencies
|
|
149
|
+
* @twin.org/trust-models bumped from 0.0.3-next.15 to 0.0.3-next.16
|
|
150
|
+
|
|
151
|
+
## [0.0.3-next.15](https://github.com/iotaledger/twin-trust/compare/trust-verifiers-v0.0.3-next.14...trust-verifiers-v0.0.3-next.15) (2026-05-26)
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
### Miscellaneous Chores
|
|
155
|
+
|
|
156
|
+
* **trust-verifiers:** Synchronize repo versions
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
### Dependencies
|
|
160
|
+
|
|
161
|
+
* The following workspace dependencies were updated
|
|
162
|
+
* dependencies
|
|
163
|
+
* @twin.org/trust-models bumped from 0.0.3-next.14 to 0.0.3-next.15
|
|
164
|
+
|
|
165
|
+
## [0.0.3-next.14](https://github.com/iotaledger/twin-trust/compare/trust-verifiers-v0.0.3-next.13...trust-verifiers-v0.0.3-next.14) (2026-05-22)
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
### Features
|
|
169
|
+
|
|
170
|
+
* add optional tenantId + organizationId to trust VC payload ([#19](https://github.com/iotaledger/twin-trust/issues/19)) ([1e93f6b](https://github.com/iotaledger/twin-trust/commit/1e93f6b0eacbfa725f3c3515d4255b39dd122ce7))
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
### Dependencies
|
|
174
|
+
|
|
175
|
+
* The following workspace dependencies were updated
|
|
176
|
+
* dependencies
|
|
177
|
+
* @twin.org/trust-models bumped from 0.0.3-next.13 to 0.0.3-next.14
|
|
178
|
+
|
|
179
|
+
## [0.0.3-next.13](https://github.com/iotaledger/twin-trust/compare/trust-verifiers-v0.0.3-next.12...trust-verifiers-v0.0.3-next.13) (2026-05-20)
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
### Features
|
|
183
|
+
|
|
184
|
+
* update dependencies ([367d7fc](https://github.com/iotaledger/twin-trust/commit/367d7fc1f970522650c776d231bfacc84f97be67))
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
### Dependencies
|
|
188
|
+
|
|
189
|
+
* The following workspace dependencies were updated
|
|
190
|
+
* dependencies
|
|
191
|
+
* @twin.org/trust-models bumped from 0.0.3-next.12 to 0.0.3-next.13
|
|
192
|
+
|
|
193
|
+
## [0.0.3-next.12](https://github.com/iotaledger/twin-trust/compare/trust-verifiers-v0.0.3-next.11...trust-verifiers-v0.0.3-next.12) (2026-05-11)
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
### Features
|
|
197
|
+
|
|
198
|
+
* typescript 6 update ([a232da2](https://github.com/iotaledger/twin-trust/commit/a232da293afbd3b42843e187e4952dabd7917397))
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
### Dependencies
|
|
202
|
+
|
|
203
|
+
* The following workspace dependencies were updated
|
|
204
|
+
* dependencies
|
|
205
|
+
* @twin.org/trust-models bumped from 0.0.3-next.11 to 0.0.3-next.12
|
|
206
|
+
|
|
207
|
+
## [0.0.3-next.11](https://github.com/iotaledger/twin-trust/compare/trust-verifiers-v0.0.3-next.10...trust-verifiers-v0.0.3-next.11) (2026-03-04)
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
### Miscellaneous Chores
|
|
211
|
+
|
|
212
|
+
* **trust-verifiers:** Synchronize repo versions
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
### Dependencies
|
|
216
|
+
|
|
217
|
+
* The following workspace dependencies were updated
|
|
218
|
+
* dependencies
|
|
219
|
+
* @twin.org/trust-models bumped from 0.0.3-next.10 to 0.0.3-next.11
|
|
220
|
+
|
|
221
|
+
## [0.0.3-next.10](https://github.com/iotaledger/twin-trust/compare/trust-verifiers-v0.0.3-next.9...trust-verifiers-v0.0.3-next.10) (2026-02-27)
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
### Miscellaneous Chores
|
|
225
|
+
|
|
226
|
+
* **trust-verifiers:** Synchronize repo versions
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
### Dependencies
|
|
230
|
+
|
|
231
|
+
* The following workspace dependencies were updated
|
|
232
|
+
* dependencies
|
|
233
|
+
* @twin.org/trust-models bumped from 0.0.3-next.9 to 0.0.3-next.10
|
|
234
|
+
|
|
235
|
+
## [0.0.3-next.9](https://github.com/iotaledger/twin-trust/compare/trust-verifiers-v0.0.3-next.8...trust-verifiers-v0.0.3-next.9) (2026-02-26)
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
### Miscellaneous Chores
|
|
239
|
+
|
|
240
|
+
* **trust-verifiers:** Synchronize repo versions
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
### Dependencies
|
|
244
|
+
|
|
245
|
+
* The following workspace dependencies were updated
|
|
246
|
+
* dependencies
|
|
247
|
+
* @twin.org/trust-models bumped from 0.0.3-next.8 to 0.0.3-next.9
|
|
248
|
+
|
|
249
|
+
## [0.0.3-next.8](https://github.com/iotaledger/twin-trust/compare/trust-verifiers-v0.0.3-next.7...trust-verifiers-v0.0.3-next.8) (2026-01-30)
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
### Features
|
|
253
|
+
|
|
254
|
+
* verification info structure ([#10](https://github.com/iotaledger/twin-trust/issues/10)) ([8b09ec8](https://github.com/iotaledger/twin-trust/commit/8b09ec8128214b659f427fc3a985eb8ced9ed5dc))
|
|
9
255
|
|
|
10
256
|
|
|
11
257
|
### Dependencies
|
|
@@ -14,7 +260,7 @@
|
|
|
14
260
|
* dependencies
|
|
15
261
|
* @twin.org/trust-models bumped from 0.0.3-next.7 to 0.0.3-next.8
|
|
16
262
|
|
|
17
|
-
## [0.0.3-next.7](https://github.com/
|
|
263
|
+
## [0.0.3-next.7](https://github.com/iotaledger/twin-trust/compare/trust-verifiers-v0.0.3-next.6...trust-verifiers-v0.0.3-next.7) (2025-12-04)
|
|
18
264
|
|
|
19
265
|
|
|
20
266
|
### Miscellaneous Chores
|
|
@@ -28,12 +274,12 @@
|
|
|
28
274
|
* dependencies
|
|
29
275
|
* @twin.org/trust-models bumped from 0.0.3-next.6 to 0.0.3-next.7
|
|
30
276
|
|
|
31
|
-
## [0.0.3-next.6](https://github.com/
|
|
277
|
+
## [0.0.3-next.6](https://github.com/iotaledger/twin-trust/compare/trust-verifiers-v0.0.3-next.5...trust-verifiers-v0.0.3-next.6) (2025-12-04)
|
|
32
278
|
|
|
33
279
|
|
|
34
280
|
### Features
|
|
35
281
|
|
|
36
|
-
* always include identity in verification info ([9594d19](https://github.com/
|
|
282
|
+
* always include identity in verification info ([9594d19](https://github.com/iotaledger/twin-trust/commit/9594d19e9d718bd42b82964750ae3bcfb7df51bf))
|
|
37
283
|
|
|
38
284
|
|
|
39
285
|
### Dependencies
|
|
@@ -42,7 +288,7 @@
|
|
|
42
288
|
* dependencies
|
|
43
289
|
* @twin.org/trust-models bumped from 0.0.3-next.5 to 0.0.3-next.6
|
|
44
290
|
|
|
45
|
-
## [0.0.3-next.5](https://github.com/
|
|
291
|
+
## [0.0.3-next.5](https://github.com/iotaledger/twin-trust/compare/trust-verifiers-v0.0.3-next.4...trust-verifiers-v0.0.3-next.5) (2025-12-04)
|
|
46
292
|
|
|
47
293
|
|
|
48
294
|
### Miscellaneous Chores
|
|
@@ -56,12 +302,12 @@
|
|
|
56
302
|
* dependencies
|
|
57
303
|
* @twin.org/trust-models bumped from 0.0.3-next.4 to 0.0.3-next.5
|
|
58
304
|
|
|
59
|
-
## [0.0.3-next.4](https://github.com/
|
|
305
|
+
## [0.0.3-next.4](https://github.com/iotaledger/twin-trust/compare/trust-verifiers-v0.0.3-next.3...trust-verifiers-v0.0.3-next.4) (2025-12-04)
|
|
60
306
|
|
|
61
307
|
|
|
62
308
|
### Features
|
|
63
309
|
|
|
64
|
-
* add generators ([6228c88](https://github.com/
|
|
310
|
+
* add generators ([6228c88](https://github.com/iotaledger/twin-trust/commit/6228c88a8f0244b7bdfc76b8624c427c81d23f7b))
|
|
65
311
|
|
|
66
312
|
|
|
67
313
|
### Dependencies
|
|
@@ -70,12 +316,12 @@
|
|
|
70
316
|
* dependencies
|
|
71
317
|
* @twin.org/trust-models bumped from 0.0.3-next.3 to 0.0.3-next.4
|
|
72
318
|
|
|
73
|
-
## [0.0.3-next.3](https://github.com/
|
|
319
|
+
## [0.0.3-next.3](https://github.com/iotaledger/twin-trust/compare/trust-verifiers-v0.0.3-next.2...trust-verifiers-v0.0.3-next.3) (2025-12-04)
|
|
74
320
|
|
|
75
321
|
|
|
76
322
|
### Features
|
|
77
323
|
|
|
78
|
-
* flatten error structure ([5fdd665](https://github.com/
|
|
324
|
+
* flatten error structure ([5fdd665](https://github.com/iotaledger/twin-trust/commit/5fdd665d0fc523a655563a0c20d1d82b634534e2))
|
|
79
325
|
|
|
80
326
|
|
|
81
327
|
### Dependencies
|
|
@@ -84,12 +330,12 @@
|
|
|
84
330
|
* dependencies
|
|
85
331
|
* @twin.org/trust-models bumped from 0.0.3-next.2 to 0.0.3-next.3
|
|
86
332
|
|
|
87
|
-
## [0.0.3-next.2](https://github.com/
|
|
333
|
+
## [0.0.3-next.2](https://github.com/iotaledger/twin-trust/compare/trust-verifiers-v0.0.3-next.1...trust-verifiers-v0.0.3-next.2) (2025-12-03)
|
|
88
334
|
|
|
89
335
|
|
|
90
336
|
### Features
|
|
91
337
|
|
|
92
|
-
* support pass through of info between verifiers ([1ce64b9](https://github.com/
|
|
338
|
+
* support pass through of info between verifiers ([1ce64b9](https://github.com/iotaledger/twin-trust/commit/1ce64b97a949278b447cc12b576ce5de537f30f3))
|
|
93
339
|
|
|
94
340
|
|
|
95
341
|
### Dependencies
|
|
@@ -98,12 +344,12 @@
|
|
|
98
344
|
* dependencies
|
|
99
345
|
* @twin.org/trust-models bumped from 0.0.3-next.1 to 0.0.3-next.2
|
|
100
346
|
|
|
101
|
-
## [0.0.3-next.1](https://github.com/
|
|
347
|
+
## [0.0.3-next.1](https://github.com/iotaledger/twin-trust/compare/trust-verifiers-v0.0.3-next.0...trust-verifiers-v0.0.3-next.1) (2025-12-02)
|
|
102
348
|
|
|
103
349
|
|
|
104
350
|
### Features
|
|
105
351
|
|
|
106
|
-
* initial commit ([d378ef4](https://github.com/
|
|
352
|
+
* initial commit ([d378ef4](https://github.com/iotaledger/twin-trust/commit/d378ef4cd66c98fa188aaf3b23152d1e47d88a37))
|
|
107
353
|
|
|
108
354
|
|
|
109
355
|
### Dependencies
|
|
@@ -112,4 +358,4 @@
|
|
|
112
358
|
* dependencies
|
|
113
359
|
* @twin.org/trust-models bumped from 0.0.3-next.0 to 0.0.3-next.1
|
|
114
360
|
|
|
115
|
-
##
|
|
361
|
+
## Changelog
|
package/docs/examples.md
CHANGED
|
@@ -1 +1,44 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Trust Verifiers Examples
|
|
2
|
+
|
|
3
|
+
These snippets demonstrate how to initialise a JWT verifier and evaluate a token while collecting identity and subject details.
|
|
4
|
+
|
|
5
|
+
## JwtVerifiableCredentialVerifier
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
import { ComponentFactory, type IError } from '@twin.org/core';
|
|
9
|
+
import type { IIdentityComponent } from '@twin.org/identity-models';
|
|
10
|
+
import type { ITrustVerificationInfo } from '@twin.org/trust-models';
|
|
11
|
+
import { JwtVerifiableCredentialVerifier } from '@twin.org/trust-verifiers';
|
|
12
|
+
|
|
13
|
+
const identityComponent: IIdentityComponent = {
|
|
14
|
+
verifiableCredentialVerify: async () => ({
|
|
15
|
+
verifiableCredential: {
|
|
16
|
+
issuer: 'did:example:issuer',
|
|
17
|
+
credentialSubject: {
|
|
18
|
+
id: 'did:example:subject',
|
|
19
|
+
role: 'supplier'
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
})
|
|
23
|
+
} as IIdentityComponent;
|
|
24
|
+
|
|
25
|
+
ComponentFactory.register('identity', () => identityComponent);
|
|
26
|
+
|
|
27
|
+
const verifier = new JwtVerifiableCredentialVerifier({
|
|
28
|
+
identityComponentType: 'identity'
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
console.log(verifier.className()); // JwtVerifiableCredentialVerifier
|
|
32
|
+
|
|
33
|
+
const info: ITrustVerificationInfo = { identity: '' };
|
|
34
|
+
const errors: IError[] = [];
|
|
35
|
+
const verified = await verifier.verify(
|
|
36
|
+
'eyJhbGciOiJFZERTQSJ9.eyJleHAiOjQwMDAwMDAwMDB9.signature',
|
|
37
|
+
info,
|
|
38
|
+
errors
|
|
39
|
+
);
|
|
40
|
+
|
|
41
|
+
console.log(verified); // true
|
|
42
|
+
console.log(info.identity); // did:example:issuer
|
|
43
|
+
console.log(info.data?.subject); // { id: "did:example:subject", role: "supplier" }
|
|
44
|
+
```
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# Class: IdentityAllowDenyVerifier
|
|
2
|
+
|
|
3
|
+
Class to gate verification based on allowed and denied identity lists.
|
|
4
|
+
|
|
5
|
+
## Implements
|
|
6
|
+
|
|
7
|
+
- `ITrustVerifier`
|
|
8
|
+
|
|
9
|
+
## Constructors
|
|
10
|
+
|
|
11
|
+
### Constructor
|
|
12
|
+
|
|
13
|
+
> **new IdentityAllowDenyVerifier**(`options?`): `IdentityAllowDenyVerifier`
|
|
14
|
+
|
|
15
|
+
Creates a new instance of IdentityAllowDenyVerifier.
|
|
16
|
+
|
|
17
|
+
#### Parameters
|
|
18
|
+
|
|
19
|
+
##### options?
|
|
20
|
+
|
|
21
|
+
[`IIdentityAllowDenyVerifierConstructorOptions`](../interfaces/IIdentityAllowDenyVerifierConstructorOptions.md)
|
|
22
|
+
|
|
23
|
+
The options for the verifier.
|
|
24
|
+
|
|
25
|
+
#### Returns
|
|
26
|
+
|
|
27
|
+
`IdentityAllowDenyVerifier`
|
|
28
|
+
|
|
29
|
+
## Properties
|
|
30
|
+
|
|
31
|
+
### CLASS\_NAME {#class_name}
|
|
32
|
+
|
|
33
|
+
> `readonly` `static` **CLASS\_NAME**: `string`
|
|
34
|
+
|
|
35
|
+
Runtime name for the class.
|
|
36
|
+
|
|
37
|
+
## Methods
|
|
38
|
+
|
|
39
|
+
### className() {#classname}
|
|
40
|
+
|
|
41
|
+
> **className**(): `string`
|
|
42
|
+
|
|
43
|
+
Returns the class name of the component.
|
|
44
|
+
|
|
45
|
+
#### Returns
|
|
46
|
+
|
|
47
|
+
`string`
|
|
48
|
+
|
|
49
|
+
The runtime class name string
|
|
50
|
+
|
|
51
|
+
#### Implementation of
|
|
52
|
+
|
|
53
|
+
`ITrustVerifier.className`
|
|
54
|
+
|
|
55
|
+
***
|
|
56
|
+
|
|
57
|
+
### verify() {#verify}
|
|
58
|
+
|
|
59
|
+
> **verify**(`payload`, `info`, `errors`): `Promise`\<`boolean` \| `undefined`\>
|
|
60
|
+
|
|
61
|
+
Verify a payload by checking the validity of its structure and content.
|
|
62
|
+
|
|
63
|
+
#### Parameters
|
|
64
|
+
|
|
65
|
+
##### payload
|
|
66
|
+
|
|
67
|
+
`unknown`
|
|
68
|
+
|
|
69
|
+
The payload to verify.
|
|
70
|
+
|
|
71
|
+
##### info
|
|
72
|
+
|
|
73
|
+
`ITrustVerificationInfo`
|
|
74
|
+
|
|
75
|
+
Information extracted from previous verifiers and to be added by this verifier.
|
|
76
|
+
|
|
77
|
+
##### errors
|
|
78
|
+
|
|
79
|
+
`IError`[]
|
|
80
|
+
|
|
81
|
+
Array to collect verification errors.
|
|
82
|
+
|
|
83
|
+
#### Returns
|
|
84
|
+
|
|
85
|
+
`Promise`\<`boolean` \| `undefined`\>
|
|
86
|
+
|
|
87
|
+
Whether the payload is verified, returns undefined if payload was not processed.
|
|
88
|
+
|
|
89
|
+
#### Implementation of
|
|
90
|
+
|
|
91
|
+
`ITrustVerifier.verify`
|
|
@@ -12,7 +12,7 @@ Class to verify a JWT Verifiable Credential.
|
|
|
12
12
|
|
|
13
13
|
> **new JwtVerifiableCredentialVerifier**(`options?`): `JwtVerifiableCredentialVerifier`
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
Creates a new instance of JwtVerifiableCredentialVerifier.
|
|
16
16
|
|
|
17
17
|
#### Parameters
|
|
18
18
|
|
|
@@ -20,7 +20,7 @@ Create a new instance of JwtVerifiableCredentialVerifier.
|
|
|
20
20
|
|
|
21
21
|
[`IJwtVerifiableCredentialVerifierConstructorOptions`](../interfaces/IJwtVerifiableCredentialVerifierConstructorOptions.md)
|
|
22
22
|
|
|
23
|
-
The options for the
|
|
23
|
+
The options for the verifier.
|
|
24
24
|
|
|
25
25
|
#### Returns
|
|
26
26
|
|
|
@@ -28,7 +28,7 @@ The options for the service.
|
|
|
28
28
|
|
|
29
29
|
## Properties
|
|
30
30
|
|
|
31
|
-
### CLASS\_NAME
|
|
31
|
+
### CLASS\_NAME {#class_name}
|
|
32
32
|
|
|
33
33
|
> `readonly` `static` **CLASS\_NAME**: `string`
|
|
34
34
|
|
|
@@ -36,7 +36,7 @@ Runtime name for the class.
|
|
|
36
36
|
|
|
37
37
|
## Methods
|
|
38
38
|
|
|
39
|
-
### className()
|
|
39
|
+
### className() {#classname}
|
|
40
40
|
|
|
41
41
|
> **className**(): `string`
|
|
42
42
|
|
|
@@ -46,7 +46,7 @@ Returns the class name of the component.
|
|
|
46
46
|
|
|
47
47
|
`string`
|
|
48
48
|
|
|
49
|
-
The class name
|
|
49
|
+
The runtime class name string
|
|
50
50
|
|
|
51
51
|
#### Implementation of
|
|
52
52
|
|
|
@@ -54,7 +54,7 @@ The class name of the component.
|
|
|
54
54
|
|
|
55
55
|
***
|
|
56
56
|
|
|
57
|
-
### verify()
|
|
57
|
+
### verify() {#verify}
|
|
58
58
|
|
|
59
59
|
> **verify**(`payload`, `info`, `errors`): `Promise`\<`boolean` \| `undefined`\>
|
|
60
60
|
|
package/docs/reference/index.md
CHANGED
|
@@ -2,8 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
## Classes
|
|
4
4
|
|
|
5
|
+
- [IdentityAllowDenyVerifier](classes/IdentityAllowDenyVerifier.md)
|
|
5
6
|
- [JwtVerifiableCredentialVerifier](classes/JwtVerifiableCredentialVerifier.md)
|
|
6
7
|
|
|
7
8
|
## Interfaces
|
|
8
9
|
|
|
10
|
+
- [IIdentityAllowDenyVerifierConfig](interfaces/IIdentityAllowDenyVerifierConfig.md)
|
|
11
|
+
- [IIdentityAllowDenyVerifierConstructorOptions](interfaces/IIdentityAllowDenyVerifierConstructorOptions.md)
|
|
9
12
|
- [IJwtVerifiableCredentialVerifierConstructorOptions](interfaces/IJwtVerifiableCredentialVerifierConstructorOptions.md)
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Interface: IIdentityAllowDenyVerifierConfig
|
|
2
|
+
|
|
3
|
+
Configuration for the Identity Allow/Deny Verifier.
|
|
4
|
+
|
|
5
|
+
## Properties
|
|
6
|
+
|
|
7
|
+
### allowIdentities? {#allowidentities}
|
|
8
|
+
|
|
9
|
+
> `optional` **allowIdentities?**: `string`[]
|
|
10
|
+
|
|
11
|
+
Identities that are permitted; all others are rejected.
|
|
12
|
+
Skipped when empty or absent.
|
|
13
|
+
|
|
14
|
+
***
|
|
15
|
+
|
|
16
|
+
### denyIdentities? {#denyidentities}
|
|
17
|
+
|
|
18
|
+
> `optional` **denyIdentities?**: `string`[]
|
|
19
|
+
|
|
20
|
+
Identities that are explicitly rejected.
|
|
21
|
+
Skipped when empty or absent.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Interface: IIdentityAllowDenyVerifierConstructorOptions
|
|
2
|
+
|
|
3
|
+
The options for the Identity Allow/Deny Verifier.
|
|
4
|
+
|
|
5
|
+
## Properties
|
|
6
|
+
|
|
7
|
+
### config? {#config}
|
|
8
|
+
|
|
9
|
+
> `optional` **config?**: [`IIdentityAllowDenyVerifierConfig`](IIdentityAllowDenyVerifierConfig.md)
|
|
10
|
+
|
|
11
|
+
The allow/deny configuration for the verifier.
|
|
@@ -4,23 +4,9 @@ The options for the JWT Verifiable Credential Verifier.
|
|
|
4
4
|
|
|
5
5
|
## Properties
|
|
6
6
|
|
|
7
|
-
###
|
|
7
|
+
### identityComponentType? {#identitycomponenttype}
|
|
8
8
|
|
|
9
|
-
> `optional` **
|
|
10
|
-
|
|
11
|
-
The logging component type.
|
|
12
|
-
|
|
13
|
-
#### Default
|
|
14
|
-
|
|
15
|
-
```ts
|
|
16
|
-
logging
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
***
|
|
20
|
-
|
|
21
|
-
### identityComponentType?
|
|
22
|
-
|
|
23
|
-
> `optional` **identityComponentType**: `string`
|
|
9
|
+
> `optional` **identityComponentType?**: `string`
|
|
24
10
|
|
|
25
11
|
The identity component type.
|
|
26
12
|
|
package/locales/en.json
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"error": {
|
|
3
|
+
"identityAllowDenyVerifier": {
|
|
4
|
+
"identityMissing": "The identity is missing from the verification info.",
|
|
5
|
+
"identityNotAllowed": "The identity is not in the allowed identities list \"{identity}\".",
|
|
6
|
+
"identityDenied": "The identity is in the denied identities list \"{identity}\"."
|
|
7
|
+
},
|
|
3
8
|
"jwtVerifiableCredentialVerifier": {
|
|
4
9
|
"tokenMissingCredential": "The JWT token does not contain a verifiable credential.",
|
|
5
10
|
"tokenMissingIssuer": "The verifiable credential in the JWT does not contain an issuer.",
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@twin.org/trust-verifiers",
|
|
3
|
-
"version": "0.0
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.9.0-next.1",
|
|
4
|
+
"description": "Implements trust verifiers that validate credentials and proofs against trust model requirements",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
|
-
"url": "git+https://github.com/
|
|
7
|
+
"url": "git+https://github.com/iotaledger/twin-trust.git",
|
|
8
8
|
"directory": "packages/trust-verifiers"
|
|
9
9
|
},
|
|
10
10
|
"author": "martyn.janes@iota.org",
|
|
@@ -14,13 +14,13 @@
|
|
|
14
14
|
"node": ">=20.0.0"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@twin.org/core": "next",
|
|
18
|
-
"@twin.org/data-json-ld": "next",
|
|
19
|
-
"@twin.org/identity-models": "next",
|
|
20
|
-
"@twin.org/logging-models": "next",
|
|
21
|
-
"@twin.org/nameof": "next",
|
|
22
|
-
"@twin.org/trust-models": "0.0
|
|
23
|
-
"@twin.org/web": "next"
|
|
17
|
+
"@twin.org/core": "0.9.0-next.1",
|
|
18
|
+
"@twin.org/data-json-ld": "0.9.0-next.1",
|
|
19
|
+
"@twin.org/identity-models": "0.0.3-next.36",
|
|
20
|
+
"@twin.org/logging-models": "0.9.0-next.1",
|
|
21
|
+
"@twin.org/nameof": "0.9.0-next.1",
|
|
22
|
+
"@twin.org/trust-models": "0.9.0-next.1",
|
|
23
|
+
"@twin.org/web": "0.9.0-next.1"
|
|
24
24
|
},
|
|
25
25
|
"main": "./dist/es/index.js",
|
|
26
26
|
"types": "./dist/types/index.d.ts",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"schemas"
|
|
51
51
|
],
|
|
52
52
|
"bugs": {
|
|
53
|
-
"url": "git+https://github.com/
|
|
53
|
+
"url": "git+https://github.com/iotaledger/twin-trust/issues"
|
|
54
54
|
},
|
|
55
55
|
"homepage": "https://twindev.org"
|
|
56
56
|
}
|