ubid-common 0.1.0

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.
Files changed (129) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +20 -0
  3. package/dist/ParsingEngine.d.ts +3 -0
  4. package/dist/ParsingEngine.d.ts.map +1 -0
  5. package/dist/ParsingEngine.js +25 -0
  6. package/dist/PublicKeyResolverEngine.d.ts +3 -0
  7. package/dist/PublicKeyResolverEngine.d.ts.map +1 -0
  8. package/dist/PublicKeyResolverEngine.js +24 -0
  9. package/dist/VerifyingEngine.d.ts +3 -0
  10. package/dist/VerifyingEngine.d.ts.map +1 -0
  11. package/dist/VerifyingEngine.js +27 -0
  12. package/dist/credential-parsers/MsoMdocParser.d.ts +6 -0
  13. package/dist/credential-parsers/MsoMdocParser.d.ts.map +1 -0
  14. package/dist/credential-parsers/MsoMdocParser.js +164 -0
  15. package/dist/credential-parsers/SDJWTVCParser.d.ts +6 -0
  16. package/dist/credential-parsers/SDJWTVCParser.d.ts.map +1 -0
  17. package/dist/credential-parsers/SDJWTVCParser.js +214 -0
  18. package/dist/credential-verifiers/MsoMdocVerifier.d.ts +8 -0
  19. package/dist/credential-verifiers/MsoMdocVerifier.d.ts.map +1 -0
  20. package/dist/credential-verifiers/MsoMdocVerifier.js +213 -0
  21. package/dist/credential-verifiers/SDJWTVCValidation.d.ts +52 -0
  22. package/dist/credential-verifiers/SDJWTVCValidation.d.ts.map +1 -0
  23. package/dist/credential-verifiers/SDJWTVCValidation.js +248 -0
  24. package/dist/credential-verifiers/SDJWTVCVerifier.d.ts +15 -0
  25. package/dist/credential-verifiers/SDJWTVCVerifier.d.ts.map +1 -0
  26. package/dist/credential-verifiers/SDJWTVCVerifier.js +394 -0
  27. package/dist/defaultHttpClient.d.ts +3 -0
  28. package/dist/defaultHttpClient.d.ts.map +1 -0
  29. package/dist/defaultHttpClient.js +18 -0
  30. package/dist/error.d.ts +134 -0
  31. package/dist/error.d.ts.map +1 -0
  32. package/dist/error.js +160 -0
  33. package/dist/functions/convertDataUriToImage.d.ts +2 -0
  34. package/dist/functions/convertDataUriToImage.d.ts.map +1 -0
  35. package/dist/functions/convertDataUriToImage.js +38 -0
  36. package/dist/functions/convertOpenid4vciToSdjwtvcClaims.d.ts +5 -0
  37. package/dist/functions/convertOpenid4vciToSdjwtvcClaims.d.ts.map +1 -0
  38. package/dist/functions/convertOpenid4vciToSdjwtvcClaims.js +31 -0
  39. package/dist/functions/convertSdjwtvcToOpenid4vciClaims.d.ts +11 -0
  40. package/dist/functions/convertSdjwtvcToOpenid4vciClaims.d.ts.map +1 -0
  41. package/dist/functions/convertSdjwtvcToOpenid4vciClaims.js +35 -0
  42. package/dist/functions/convertSdjwtvcToOpenid4vciDisplay.d.ts +19 -0
  43. package/dist/functions/convertSdjwtvcToOpenid4vciDisplay.d.ts.map +1 -0
  44. package/dist/functions/convertSdjwtvcToOpenid4vciDisplay.js +56 -0
  45. package/dist/functions/formatDate.d.ts +2 -0
  46. package/dist/functions/formatDate.d.ts.map +1 -0
  47. package/dist/functions/formatDate.js +50 -0
  48. package/dist/functions/index.d.ts +3 -0
  49. package/dist/functions/index.d.ts.map +1 -0
  50. package/dist/functions/index.js +19 -0
  51. package/dist/functions/openID4VCICredentialRendering.d.ts +5 -0
  52. package/dist/functions/openID4VCICredentialRendering.d.ts.map +1 -0
  53. package/dist/functions/openID4VCICredentialRendering.js +93 -0
  54. package/dist/index.d.ts +19 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.js +35 -0
  57. package/dist/interfaces.d.ts +112 -0
  58. package/dist/interfaces.d.ts.map +1 -0
  59. package/dist/interfaces.js +3 -0
  60. package/dist/rendering.d.ts +3 -0
  61. package/dist/rendering.d.ts.map +1 -0
  62. package/dist/rendering.js +56 -0
  63. package/dist/resolvers/RemoteJwksResolver.d.ts +17 -0
  64. package/dist/resolvers/RemoteJwksResolver.d.ts.map +1 -0
  65. package/dist/resolvers/RemoteJwksResolver.js +138 -0
  66. package/dist/schemas/CredentialConfigurationSupportedSchema.d.ts +710 -0
  67. package/dist/schemas/CredentialConfigurationSupportedSchema.d.ts.map +1 -0
  68. package/dist/schemas/CredentialConfigurationSupportedSchema.js +60 -0
  69. package/dist/schemas/CredentialOfferSchema.d.ts +40 -0
  70. package/dist/schemas/CredentialOfferSchema.d.ts.map +1 -0
  71. package/dist/schemas/CredentialOfferSchema.js +14 -0
  72. package/dist/schemas/OpenidAuthorizationServerMetadataSchema.d.ts +49 -0
  73. package/dist/schemas/OpenidAuthorizationServerMetadataSchema.d.ts.map +1 -0
  74. package/dist/schemas/OpenidAuthorizationServerMetadataSchema.js +21 -0
  75. package/dist/schemas/OpenidCredentialIssuerMetadataSchema.d.ts +1030 -0
  76. package/dist/schemas/OpenidCredentialIssuerMetadataSchema.d.ts.map +1 -0
  77. package/dist/schemas/OpenidCredentialIssuerMetadataSchema.js +35 -0
  78. package/dist/schemas/SdJwtVcPayloadSchema.d.ts +79 -0
  79. package/dist/schemas/SdJwtVcPayloadSchema.d.ts.map +1 -0
  80. package/dist/schemas/SdJwtVcPayloadSchema.js +27 -0
  81. package/dist/schemas/SdJwtVcTypeMetadataSchema.d.ts +930 -0
  82. package/dist/schemas/SdJwtVcTypeMetadataSchema.d.ts.map +1 -0
  83. package/dist/schemas/SdJwtVcTypeMetadataSchema.js +105 -0
  84. package/dist/schemas/index.d.ts +6 -0
  85. package/dist/schemas/index.d.ts.map +1 -0
  86. package/dist/schemas/index.js +22 -0
  87. package/dist/status/TokenStatusListVerifier.d.ts +41 -0
  88. package/dist/status/TokenStatusListVerifier.d.ts.map +1 -0
  89. package/dist/status/TokenStatusListVerifier.js +410 -0
  90. package/dist/trust/AlgorithmPolicy.d.ts +27 -0
  91. package/dist/trust/AlgorithmPolicy.d.ts.map +1 -0
  92. package/dist/trust/AlgorithmPolicy.js +60 -0
  93. package/dist/trust/TrustRegistry.d.ts +49 -0
  94. package/dist/trust/TrustRegistry.d.ts.map +1 -0
  95. package/dist/trust/TrustRegistry.js +114 -0
  96. package/dist/types.d.ts +76 -0
  97. package/dist/types.d.ts.map +1 -0
  98. package/dist/types.js +10 -0
  99. package/dist/utils/escapeSVG.d.ts +2 -0
  100. package/dist/utils/escapeSVG.d.ts.map +1 -0
  101. package/dist/utils/escapeSVG.js +18 -0
  102. package/dist/utils/getIssuerMetadata.d.ts +8 -0
  103. package/dist/utils/getIssuerMetadata.d.ts.map +1 -0
  104. package/dist/utils/getIssuerMetadata.js +33 -0
  105. package/dist/utils/getSdJwtVcMetadata.d.ts +12 -0
  106. package/dist/utils/getSdJwtVcMetadata.d.ts.map +1 -0
  107. package/dist/utils/getSdJwtVcMetadata.js +274 -0
  108. package/dist/utils/index.d.ts +2 -0
  109. package/dist/utils/index.d.ts.map +1 -0
  110. package/dist/utils/index.js +6 -0
  111. package/dist/utils/matchLocalizedDisplay.d.ts +6 -0
  112. package/dist/utils/matchLocalizedDisplay.d.ts.map +1 -0
  113. package/dist/utils/matchLocalizedDisplay.js +16 -0
  114. package/dist/utils/util.d.ts +6 -0
  115. package/dist/utils/util.d.ts.map +1 -0
  116. package/dist/utils/util.js +53 -0
  117. package/dist/utils/verifyCertificate.d.ts +2 -0
  118. package/dist/utils/verifyCertificate.d.ts.map +1 -0
  119. package/dist/utils/verifyCertificate.js +100 -0
  120. package/dist/utils/verifySRIFromObject.d.ts +10 -0
  121. package/dist/utils/verifySRIFromObject.d.ts.map +1 -0
  122. package/dist/utils/verifySRIFromObject.js +32 -0
  123. package/dist/utils/verifyX5C.d.ts +11 -0
  124. package/dist/utils/verifyX5C.d.ts.map +1 -0
  125. package/dist/utils/verifyX5C.js +19 -0
  126. package/dist/x509/X509ChainVerifier.d.ts +59 -0
  127. package/dist/x509/X509ChainVerifier.d.ts.map +1 -0
  128. package/dist/x509/X509ChainVerifier.js +458 -0
  129. package/package.json +82 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Paradigma
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,20 @@
1
+ # UbID Common
2
+
3
+ [![npm version](https://img.shields.io/npm/v/ubid-common.svg)](https://www.npmjs.com/package/ubid-common)
4
+ [![license](https://img.shields.io/npm/l/ubid-common.svg)](LICENSE)
5
+ [![Node.js](https://img.shields.io/badge/node-%3E%3D20.19-brightgreen.svg)](https://nodejs.org/)
6
+
7
+ **UbID Common** is the shared TypeScript library used across the UbID digital identity ecosystem.
8
+
9
+ It provides reusable components for credential parsing, rendering, verification, public-key resolution, trust evaluation, status validation, X.509 verification, schemas, interfaces, and supporting utilities.
10
+
11
+ The goal of this package is to provide a single, consistent implementation of common credential and trust functionality across UbID applications, reducing duplication and helping maintain interoperability between issuers, holders, authorization components, and verifiers.
12
+
13
+ ---
14
+
15
+ ## Installation
16
+
17
+ Install the public npm package:
18
+
19
+ ```bash
20
+ npm install ubid-common
@@ -0,0 +1,3 @@
1
+ import { ParsingEngineI } from "./interfaces";
2
+ export declare function ParsingEngine(): ParsingEngineI;
3
+ //# sourceMappingURL=ParsingEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ParsingEngine.d.ts","sourceRoot":"","sources":["../src/ParsingEngine.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,cAAc,EAAE,MAAM,cAAc,CAAC;AAGhE,wBAAgB,aAAa,IAAI,cAAc,CAuB9C"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ParsingEngine = ParsingEngine;
4
+ const error_1 = require("./error");
5
+ function ParsingEngine() {
6
+ const parsers = [];
7
+ return {
8
+ register(parser) {
9
+ parsers.push(parser);
10
+ },
11
+ async parse({ rawCredential, credentialIssuer }) {
12
+ for (const p of parsers) {
13
+ const result = await p.parse({ rawCredential, credentialIssuer });
14
+ if (result.success) {
15
+ return result;
16
+ }
17
+ }
18
+ return {
19
+ success: false,
20
+ error: error_1.CredentialParsingError.CouldNotParse
21
+ };
22
+ }
23
+ };
24
+ }
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFyc2luZ0VuZ2luZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9QYXJzaW5nRW5naW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBSUEsc0NBdUJDO0FBM0JELG1DQUFpRDtBQUlqRCxTQUFnQixhQUFhO0lBQzVCLE1BQU0sT0FBTyxHQUF1QixFQUFFLENBQUM7SUFFdkMsT0FBTztRQUNOLFFBQVEsQ0FBQyxNQUF3QjtZQUNoQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RCLENBQUM7UUFFRCxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsYUFBYSxFQUFDLGdCQUFnQixFQUFFO1lBRTdDLEtBQUssTUFBTSxDQUFDLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ3pCLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLGFBQWEsRUFBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7Z0JBQ2pFLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNwQixPQUFPLE1BQU0sQ0FBQztnQkFDZixDQUFDO1lBQ0YsQ0FBQztZQUNELE9BQU87Z0JBQ04sT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsS0FBSyxFQUFFLDhCQUFzQixDQUFDLGFBQWE7YUFDM0MsQ0FBQTtRQUVGLENBQUM7S0FDRCxDQUFBO0FBQ0YsQ0FBQyJ9
@@ -0,0 +1,3 @@
1
+ import { PublicKeyResolverEngineI } from "./interfaces";
2
+ export declare function PublicKeyResolverEngine(): PublicKeyResolverEngineI;
3
+ //# sourceMappingURL=PublicKeyResolverEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PublicKeyResolverEngine.d.ts","sourceRoot":"","sources":["../src/PublicKeyResolverEngine.ts"],"names":[],"mappings":"AACA,OAAO,EAAiD,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAEvG,wBAAgB,uBAAuB,IAAI,wBAAwB,CAmBlE"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PublicKeyResolverEngine = PublicKeyResolverEngine;
4
+ const error_1 = require("./error");
5
+ function PublicKeyResolverEngine() {
6
+ const resolvers = [];
7
+ return {
8
+ register(resolver) {
9
+ resolvers.push(resolver);
10
+ },
11
+ async resolve(request) {
12
+ let lastError = error_1.PublicKeyResolutionError.CannotResolvePublicKey;
13
+ for (const r of resolvers) {
14
+ const result = await r.resolve(request);
15
+ if (result.success) {
16
+ return result;
17
+ }
18
+ lastError = result.error;
19
+ }
20
+ return { success: false, error: lastError };
21
+ },
22
+ };
23
+ }
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHVibGljS2V5UmVzb2x2ZXJFbmdpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvUHVibGljS2V5UmVzb2x2ZXJFbmdpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFHQSwwREFtQkM7QUF0QkQsbUNBQW1EO0FBR25ELFNBQWdCLHVCQUF1QjtJQUN0QyxNQUFNLFNBQVMsR0FBd0IsRUFBRSxDQUFDO0lBRTFDLE9BQU87UUFDTixRQUFRLENBQUMsUUFBMkI7WUFDbkMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMxQixDQUFDO1FBQ0QsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFtQztZQUNoRCxJQUFJLFNBQVMsR0FBRyxnQ0FBd0IsQ0FBQyxzQkFBc0IsQ0FBQztZQUNoRSxLQUFLLE1BQU0sQ0FBQyxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUMzQixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3hDLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNwQixPQUFPLE1BQU0sQ0FBQztnQkFDZixDQUFDO2dCQUNELFNBQVMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO1lBQzFCLENBQUM7WUFDRCxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUM7UUFDN0MsQ0FBQztLQUNELENBQUE7QUFDRixDQUFDIn0=
@@ -0,0 +1,3 @@
1
+ import { VerifyingEngineI } from "./interfaces";
2
+ export declare function VerifyingEngine(): VerifyingEngineI;
3
+ //# sourceMappingURL=VerifyingEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VerifyingEngine.d.ts","sourceRoot":"","sources":["../src/VerifyingEngine.ts"],"names":[],"mappings":"AACA,OAAO,EAAsB,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAKpE,wBAAgB,eAAe,IAAI,gBAAgB,CA8BlD"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VerifyingEngine = VerifyingEngine;
4
+ const error_1 = require("./error");
5
+ function VerifyingEngine() {
6
+ const verifiers = [];
7
+ return {
8
+ register(credentialVerifier) {
9
+ verifiers.push(credentialVerifier);
10
+ },
11
+ async verify({ rawCredential, opts }) {
12
+ let lastError = null;
13
+ for (const v of verifiers) {
14
+ const result = await v.verify({ rawCredential, opts });
15
+ if (result.success) {
16
+ return result;
17
+ }
18
+ lastError = result.error;
19
+ }
20
+ return {
21
+ success: false,
22
+ error: lastError ? lastError : error_1.CredentialVerificationError.UnknownProblem
23
+ };
24
+ }
25
+ };
26
+ }
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmVyaWZ5aW5nRW5naW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1ZlcmlmeWluZ0VuZ2luZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQU1BLDBDQThCQztBQXBDRCxtQ0FBc0Q7QUFNdEQsU0FBZ0IsZUFBZTtJQUM5QixNQUFNLFNBQVMsR0FBeUIsRUFBRSxDQUFDO0lBRTNDLE9BQU87UUFDTixRQUFRLENBQUMsa0JBQXNDO1lBQzlDLFNBQVMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNwQyxDQUFDO1FBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBTWpDO1lBQ0EsSUFBSSxTQUFTLEdBQXVDLElBQUksQ0FBQztZQUN6RCxLQUFLLE1BQU0sQ0FBQyxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUMzQixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDdkQsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQ3BCLE9BQU8sTUFBTSxDQUFDO2dCQUNmLENBQUM7Z0JBQ0QsU0FBUyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFDMUIsQ0FBQztZQUVELE9BQU87Z0JBQ04sT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxtQ0FBMkIsQ0FBQyxjQUFjO2FBQ3pFLENBQUE7UUFDRixDQUFDO0tBQ0QsQ0FBQTtBQUNGLENBQUMifQ==
@@ -0,0 +1,6 @@
1
+ import { Context, CredentialParser, HttpClient } from "../interfaces";
2
+ export declare function MsoMdocParser(args: {
3
+ context: Context;
4
+ httpClient: HttpClient;
5
+ }): CredentialParser;
6
+ //# sourceMappingURL=MsoMdocParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MsoMdocParser.d.ts","sourceRoot":"","sources":["../../src/credential-parsers/MsoMdocParser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAwB,MAAM,eAAe,CAAC;AAe5F,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,UAAU,CAAA;CAAE,GAAG,gBAAgB,CAmMlG"}
@@ -0,0 +1,164 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MsoMdocParser = MsoMdocParser;
4
+ const error_1 = require("../error");
5
+ const mdl_1 = require("@auth0/mdl");
6
+ const util_1 = require("../utils/util");
7
+ const types_1 = require("../types");
8
+ const cbor_1 = require("@auth0/mdl/lib/cbor");
9
+ const openID4VCICredentialRendering_1 = require("../functions/openID4VCICredentialRendering");
10
+ const getIssuerMetadata_1 = require("../utils/getIssuerMetadata");
11
+ const convertOpenid4vciToSdjwtvcClaims_1 = require("../functions/convertOpenid4vciToSdjwtvcClaims");
12
+ const matchLocalizedDisplay_1 = require("../utils/matchLocalizedDisplay");
13
+ function MsoMdocParser(args) {
14
+ function extractValidityInfo(issuerSigned) {
15
+ return issuerSigned.issuerAuth.decodedPayload.validityInfo;
16
+ }
17
+ function collectAllAttrValues(parsedDocument) {
18
+ return parsedDocument.issuerSignedNameSpaces.reduce((acc, ns) => {
19
+ acc[ns] = parsedDocument.getIssuerNameSpace(ns);
20
+ return acc;
21
+ }, {});
22
+ }
23
+ async function fetchIssuerMetadataAndDocs(credentialIssuer) {
24
+ let issuerMetadata = null;
25
+ let TypeMetadata = {};
26
+ try {
27
+ if (credentialIssuer?.credentialIssuerIdentifier) {
28
+ const { metadata } = await (0, getIssuerMetadata_1.getIssuerMetadata)(args.httpClient, credentialIssuer.credentialIssuerIdentifier, []);
29
+ issuerMetadata = metadata ?? null;
30
+ const issuerClaimsArray = credentialIssuer?.credentialConfigurationId
31
+ ? issuerMetadata?.credential_configurations_supported?.[credentialIssuer.credentialConfigurationId]?.claims
32
+ : undefined;
33
+ const convertedClaims = issuerClaimsArray ? (0, convertOpenid4vciToSdjwtvcClaims_1.convertOpenid4vciToSdjwtvcClaims)(issuerClaimsArray) : undefined;
34
+ if (convertedClaims?.length) {
35
+ TypeMetadata = { claims: convertedClaims };
36
+ }
37
+ }
38
+ }
39
+ catch (e) {
40
+ console.warn("Issuer metadata unavailable or invalid:", e);
41
+ }
42
+ return { issuerMetadata, TypeMetadata };
43
+ }
44
+ function makeCredentialFriendlyName(issuerMetadata, credentialIssuer) {
45
+ return async (preferredLangs = ["en-US"]) => {
46
+ const issuerDisplayArray = credentialIssuer?.credentialConfigurationId
47
+ ? issuerMetadata?.credential_configurations_supported?.[credentialIssuer.credentialConfigurationId]?.display
48
+ : undefined;
49
+ const issuerDisplayLocalized = (0, matchLocalizedDisplay_1.matchDisplayByLocale)(issuerDisplayArray, preferredLangs);
50
+ if (issuerDisplayLocalized?.name)
51
+ return issuerDisplayLocalized.name;
52
+ return "mdoc Verifiable Credential";
53
+ };
54
+ }
55
+ function makeDataUri(renderer, signedClaims, issuerMetadata, credentialIssuer) {
56
+ const mdocDisplayConfig = { name: "mdoc Verifiable Credential" };
57
+ return async (filter, preferredLangs = ["en-US"]) => {
58
+ try {
59
+ const issuerDisplayArray = credentialIssuer?.credentialConfigurationId
60
+ ? issuerMetadata?.credential_configurations_supported?.[credentialIssuer.credentialConfigurationId]?.display
61
+ : undefined;
62
+ const issuerDisplayLocalized = (0, matchLocalizedDisplay_1.matchDisplayByLocale)(issuerDisplayArray, preferredLangs);
63
+ return await renderer.renderCustomSvgTemplate({ signedClaims, displayConfig: issuerDisplayLocalized ?? mdocDisplayConfig });
64
+ }
65
+ catch (err) {
66
+ console.error(err);
67
+ return null;
68
+ }
69
+ };
70
+ }
71
+ function toParsedCredential(parsedDocument, signedClaims, TypeMetadata, credentialFriendlyName, dataUri) {
72
+ return {
73
+ metadata: {
74
+ credential: {
75
+ format: types_1.VerifiableCredentialFormat.MSO_MDOC,
76
+ doctype: parsedDocument.docType,
77
+ TypeMetadata,
78
+ image: { dataUri },
79
+ name: credentialFriendlyName
80
+ },
81
+ issuer: {
82
+ id: parsedDocument.issuerSigned.issuerAuth.certificate.issuer,
83
+ name: parsedDocument.issuerSigned.issuerAuth.certificate.issuer
84
+ }
85
+ },
86
+ signedClaims: { ...signedClaims },
87
+ validityInfo: { ...extractValidityInfo(parsedDocument.issuerSigned) }
88
+ };
89
+ }
90
+ async function deviceResponseParser(rawCredential, credentialIssuer) {
91
+ try {
92
+ const decodedCred = (0, util_1.fromBase64Url)(rawCredential);
93
+ const parsedMDOC = (0, mdl_1.parse)(decodedCred);
94
+ const [parsedDocument] = parsedMDOC.documents;
95
+ const signedClaims = collectAllAttrValues(parsedDocument);
96
+ const renderer = (0, openID4VCICredentialRendering_1.OpenID4VCICredentialRendering)({ httpClient: args.httpClient });
97
+ const { issuerMetadata, TypeMetadata } = await fetchIssuerMetadataAndDocs(credentialIssuer);
98
+ const credentialFriendlyName = makeCredentialFriendlyName(issuerMetadata, credentialIssuer);
99
+ const dataUri = makeDataUri(renderer, {}, issuerMetadata, credentialIssuer);
100
+ return toParsedCredential(parsedDocument, signedClaims, TypeMetadata, credentialFriendlyName, dataUri);
101
+ }
102
+ catch {
103
+ return null;
104
+ }
105
+ }
106
+ async function issuerSignedParser(rawCredential, credentialIssuer) {
107
+ try {
108
+ const credentialBytes = (0, util_1.fromBase64Url)(rawCredential);
109
+ const issuerSigned = (0, cbor_1.cborDecode)(credentialBytes);
110
+ const [header, _, payload, sig] = issuerSigned.get('issuerAuth');
111
+ const decodedIssuerAuthPayload = (0, cbor_1.cborDecode)(payload);
112
+ const docType = decodedIssuerAuthPayload.data.get('docType');
113
+ const m = {
114
+ version: '1.0',
115
+ documents: [new Map([
116
+ ['docType', docType],
117
+ ['issuerSigned', issuerSigned]
118
+ ])],
119
+ status: 0
120
+ };
121
+ const encoded = (0, cbor_1.cborEncode)(m);
122
+ const mdoc = (0, mdl_1.parse)(encoded);
123
+ const [parsedDocument] = mdoc.documents;
124
+ const signedClaims = collectAllAttrValues(parsedDocument);
125
+ const renderer = (0, openID4VCICredentialRendering_1.OpenID4VCICredentialRendering)({ httpClient: args.httpClient });
126
+ const { issuerMetadata, TypeMetadata } = await fetchIssuerMetadataAndDocs(credentialIssuer);
127
+ const credentialFriendlyName = makeCredentialFriendlyName(issuerMetadata, credentialIssuer);
128
+ const dataUri = makeDataUri(renderer, {}, issuerMetadata, credentialIssuer);
129
+ return toParsedCredential(parsedDocument, signedClaims, TypeMetadata, credentialFriendlyName, dataUri);
130
+ }
131
+ catch {
132
+ return null;
133
+ }
134
+ }
135
+ return {
136
+ async parse({ rawCredential, credentialIssuer }) {
137
+ if (typeof rawCredential != 'string') {
138
+ return {
139
+ success: false,
140
+ error: error_1.CredentialParsingError.InvalidDatatype,
141
+ };
142
+ }
143
+ const deviceResponseParsingResult = await deviceResponseParser(rawCredential, credentialIssuer ?? null);
144
+ if (deviceResponseParsingResult) {
145
+ return {
146
+ success: true,
147
+ value: deviceResponseParsingResult
148
+ };
149
+ }
150
+ const issuerSignedParsingResult = await issuerSignedParser(rawCredential, credentialIssuer ?? null);
151
+ if (issuerSignedParsingResult) {
152
+ return {
153
+ success: true,
154
+ value: issuerSignedParsingResult,
155
+ };
156
+ }
157
+ return {
158
+ success: false,
159
+ error: error_1.CredentialParsingError.CouldNotParse,
160
+ };
161
+ },
162
+ };
163
+ }
164
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTXNvTWRvY1BhcnNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jcmVkZW50aWFsLXBhcnNlcnMvTXNvTWRvY1BhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWdCQSxzQ0FtTUM7QUFuTkQsb0NBQWtEO0FBRWxELG9DQUFtRTtBQUNuRSx3Q0FBOEM7QUFDOUMsb0NBQWlLO0FBQ2pLLDhDQUE2RDtBQUU3RCw4RkFBMkY7QUFDM0Ysa0VBQStEO0FBQy9ELG9HQUFpRztBQUNqRywwRUFBc0U7QUFNdEUsU0FBZ0IsYUFBYSxDQUFDLElBQWtEO0lBRS9FLFNBQVMsbUJBQW1CLENBQUMsWUFBMEI7UUFDdEQsT0FBTyxZQUFZLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUM7SUFDNUQsQ0FBQztJQUVELFNBQVMsb0JBQW9CLENBQUMsY0FBb0M7UUFDakUsT0FBTyxjQUFjLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUEwQixDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRTtZQUN4RixHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsY0FBYyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2hELE9BQU8sR0FBRyxDQUFDO1FBQ1osQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVELEtBQUssVUFBVSwwQkFBMEIsQ0FDeEMsZ0JBQThDO1FBRTlDLElBQUksY0FBYyxHQUEwQixJQUFJLENBQUM7UUFDakQsSUFBSSxZQUFZLEdBQWlCLEVBQUUsQ0FBQztRQUVwQyxJQUFJLENBQUM7WUFDSixJQUFJLGdCQUFnQixFQUFFLDBCQUEwQixFQUFFLENBQUM7Z0JBQ2xELE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxNQUFNLElBQUEscUNBQWlCLEVBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQywwQkFBMEIsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDL0csY0FBYyxH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
@@ -0,0 +1,6 @@
1
+ import { Context, CredentialParser, HttpClient } from "../interfaces";
2
+ export declare function SDJWTVCParser(args: {
3
+ context: Context;
4
+ httpClient: HttpClient;
5
+ }): CredentialParser;
6
+ //# sourceMappingURL=SDJWTVCParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SDJWTVCParser.d.ts","sourceRoot":"","sources":["../../src/credential-parsers/SDJWTVCParser.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAYtE,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,UAAU,CAAA;CAAE,GAAG,gBAAgB,CA0OlG"}
@@ -0,0 +1,214 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SDJWTVCParser = SDJWTVCParser;
4
+ const core_1 = require("@sd-jwt/core");
5
+ const error_1 = require("../error");
6
+ const types_1 = require("../types");
7
+ const schemas_1 = require("../schemas");
8
+ const rendering_1 = require("../rendering");
9
+ const getSdJwtVcMetadata_1 = require("../utils/getSdJwtVcMetadata");
10
+ const openID4VCICredentialRendering_1 = require("../functions/openID4VCICredentialRendering");
11
+ const zod_1 = require("zod");
12
+ const getIssuerMetadata_1 = require("../utils/getIssuerMetadata");
13
+ const matchLocalizedDisplay_1 = require("../utils/matchLocalizedDisplay");
14
+ const convertOpenid4vciToSdjwtvcClaims_1 = require("../functions/convertOpenid4vciToSdjwtvcClaims");
15
+ function SDJWTVCParser(args) {
16
+ const encoder = new TextEncoder();
17
+ function extractValidityInfo(jwtPayload) {
18
+ let obj = {};
19
+ if (jwtPayload.exp) {
20
+ obj = {
21
+ ...obj,
22
+ validUntil: new Date(jwtPayload.exp * 1000),
23
+ };
24
+ }
25
+ if (jwtPayload.iat) {
26
+ obj = {
27
+ ...obj,
28
+ signed: new Date(jwtPayload.iat * 1000),
29
+ };
30
+ }
31
+ if (jwtPayload.nbf) {
32
+ obj = {
33
+ ...obj,
34
+ validFrom: new Date(jwtPayload.nbf * 1000),
35
+ };
36
+ }
37
+ return obj;
38
+ }
39
+ // Encoding the string into a Uint8Array
40
+ const hasherAndAlgorithm = {
41
+ hasher: (data, alg) => {
42
+ const encoded = typeof data === 'string' ? encoder.encode(data) : new Uint8Array(data);
43
+ return args.context.subtle.digest(alg, encoded).then((v) => new Uint8Array(v));
44
+ },
45
+ alg: 'sha-256',
46
+ };
47
+ const cr = (0, rendering_1.CredentialRenderingService)();
48
+ const renderer = (0, openID4VCICredentialRendering_1.OpenID4VCICredentialRendering)({ httpClient: args.httpClient });
49
+ return {
50
+ async parse({ rawCredential, credentialIssuer }) {
51
+ if (typeof rawCredential !== 'string') {
52
+ return {
53
+ success: false,
54
+ error: error_1.CredentialParsingError.InvalidDatatype
55
+ };
56
+ }
57
+ let credentialFriendlyName = async () => null;
58
+ let dataUri = async () => null;
59
+ const warnings = [];
60
+ const { parsedClaims, parsedHeaders, parsedPayload, err } = await (async () => {
61
+ try {
62
+ const parsedSdJwt = await core_1.SDJwt.fromEncode(rawCredential, hasherAndAlgorithm.hasher);
63
+ const claims = await parsedSdJwt.getClaims(hasherAndAlgorithm.hasher);
64
+ const headers = await parsedSdJwt.jwt?.header;
65
+ const payload = await parsedSdJwt.jwt?.payload;
66
+ return { parsedClaims: claims, parsedHeaders: headers, parsedPayload: payload, err: null };
67
+ }
68
+ catch (err) {
69
+ return { parsedClaims: null, parsedHeaders: null, err: err };
70
+ }
71
+ })();
72
+ if (err || !parsedClaims || !parsedHeaders) {
73
+ return {
74
+ success: false,
75
+ error: error_1.CredentialParsingError.CouldNotParse,
76
+ };
77
+ }
78
+ const schema = zod_1.z.enum([types_1.VerifiableCredentialFormat.VC_SDJWT, types_1.VerifiableCredentialFormat.DC_SDJWT]);
79
+ const typParseResult = await schema.safeParseAsync(parsedHeaders.typ);
80
+ if (typParseResult.error) {
81
+ return {
82
+ success: false,
83
+ error: error_1.CredentialParsingError.NotSupportedCredentialType,
84
+ };
85
+ }
86
+ // sd-jwt vc Payload Schema Validation
87
+ let validatedParsedClaims;
88
+ try {
89
+ validatedParsedClaims = schemas_1.SdJwtVcPayloadSchema.parse(parsedClaims);
90
+ }
91
+ catch (err) {
92
+ return {
93
+ success: false,
94
+ error: error_1.CredentialParsingError.InvalidSdJwtVcPayload,
95
+ };
96
+ }
97
+ const { metadata: issuerMetadata } = await (0, getIssuerMetadata_1.getIssuerMetadata)(args.httpClient, validatedParsedClaims.iss, warnings);
98
+ const getSdJwtMetadataResult = await (0, getSdJwtVcMetadata_1.getSdJwtVcMetadata)(args.context, args.httpClient, rawCredential, validatedParsedClaims, warnings);
99
+ if ('error' in getSdJwtMetadataResult) {
100
+ return {
101
+ success: false,
102
+ error: getSdJwtMetadataResult.error,
103
+ };
104
+ }
105
+ let TypeMetadata = {};
106
+ let credentialMetadata = undefined;
107
+ const credentialIssuerMetadata = credentialIssuer?.credentialConfigurationId
108
+ ? issuerMetadata?.credential_configurations_supported?.[credentialIssuer?.credentialConfigurationId]
109
+ : undefined;
110
+ if (getSdJwtMetadataResult.credentialMetadata) {
111
+ credentialMetadata = getSdJwtMetadataResult.credentialMetadata;
112
+ if (credentialMetadata?.claims) {
113
+ TypeMetadata = { claims: credentialMetadata.claims };
114
+ }
115
+ }
116
+ credentialFriendlyName = async (preferredLangs = ['en-US']) => {
117
+ // 1. Try to match localized credential display
118
+ const credentialDisplayArray = credentialMetadata?.display;
119
+ const credentialDisplayLocalized = (0, matchLocalizedDisplay_1.matchDisplayByLocale)(credentialDisplayArray, preferredLangs);
120
+ if (credentialDisplayLocalized?.name)
121
+ return credentialDisplayLocalized.name;
122
+ // 2. Try to match localized issuer display
123
+ const issuerDisplayArray = credentialIssuerMetadata?.display;
124
+ const issuerDisplayLocalized = (0, matchLocalizedDisplay_1.matchDisplayByLocale)(issuerDisplayArray, preferredLangs);
125
+ if (issuerDisplayLocalized?.name)
126
+ return issuerDisplayLocalized.name;
127
+ return 'SD-JWT Verifiable Credential';
128
+ };
129
+ dataUri = async (filter, preferredLangs = ['en-US']) => {
130
+ // 1. Try to match localized credential display
131
+ const credentialDisplayArray = credentialMetadata?.display;
132
+ const credentialDisplayLocalized = (0, matchLocalizedDisplay_1.matchDisplayByLocale)(credentialDisplayArray, preferredLangs);
133
+ // 2. Try to match localized issuer display
134
+ const issuerDisplayArray = credentialIssuerMetadata?.display;
135
+ const issuerDisplayLocalized = (0, matchLocalizedDisplay_1.matchDisplayByLocale)(issuerDisplayArray, preferredLangs);
136
+ const svgTemplateUri = credentialDisplayLocalized?.rendering?.svg_templates?.[0]?.uri || null;
137
+ const simpleDisplayConfig = credentialDisplayLocalized?.rendering?.simple || null;
138
+ // 1. Try SVG template rendering
139
+ if (svgTemplateUri) {
140
+ const svgResponse = await args.httpClient.get(svgTemplateUri, {}, { useCache: true }).catch(() => null);
141
+ if (svgResponse && svgResponse.status === 200) {
142
+ const svgdata = svgResponse.data;
143
+ const rendered = await cr.renderSvgTemplate({
144
+ json: validatedParsedClaims,
145
+ credentialImageSvgTemplate: svgdata,
146
+ sdJwtVcMetadataClaims: credentialMetadata?.claims,
147
+ filter,
148
+ }).catch(() => null);
149
+ if (rendered)
150
+ return rendered;
151
+ }
152
+ }
153
+ // 2. Fallback: simple rendering from credential display
154
+ if (simpleDisplayConfig && credentialDisplayLocalized) {
155
+ const rendered = await renderer.renderCustomSvgTemplate({
156
+ signedClaims: validatedParsedClaims,
157
+ displayConfig: { ...credentialDisplayLocalized, ...simpleDisplayConfig },
158
+ }).catch(() => null);
159
+ if (rendered)
160
+ return rendered;
161
+ }
162
+ // 3. Fallback: rendering from issuer metadata display
163
+ if (issuerDisplayLocalized) {
164
+ const rendered = await renderer.renderCustomSvgTemplate({
165
+ signedClaims: validatedParsedClaims,
166
+ displayConfig: issuerDisplayLocalized,
167
+ }).catch(() => null);
168
+ if (rendered)
169
+ return rendered;
170
+ }
171
+ const rendered = await renderer.renderCustomSvgTemplate({
172
+ signedClaims: validatedParsedClaims,
173
+ displayConfig: { name: "SD-JWT Verifiable Credential" },
174
+ }).catch(() => null);
175
+ if (rendered)
176
+ return rendered;
177
+ // All attempts failed
178
+ return null;
179
+ };
180
+ if (!TypeMetadata?.claims && credentialIssuerMetadata?.claims) {
181
+ const convertedClaims = (0, convertOpenid4vciToSdjwtvcClaims_1.convertOpenid4vciToSdjwtvcClaims)(credentialIssuerMetadata.claims);
182
+ if (convertedClaims?.length) {
183
+ TypeMetadata = { claims: convertedClaims };
184
+ }
185
+ }
186
+ return {
187
+ success: true,
188
+ value: {
189
+ signedClaims: validatedParsedClaims,
190
+ metadata: {
191
+ credential: {
192
+ format: typParseResult.data,
193
+ vct: validatedParsedClaims?.vct ?? "",
194
+ TypeMetadata,
195
+ image: {
196
+ dataUri: dataUri,
197
+ },
198
+ name: credentialFriendlyName,
199
+ },
200
+ issuer: {
201
+ id: validatedParsedClaims.iss,
202
+ name: validatedParsedClaims.iss,
203
+ }
204
+ },
205
+ validityInfo: {
206
+ ...extractValidityInfo(validatedParsedClaims)
207
+ },
208
+ warnings: getSdJwtMetadataResult.warnings
209
+ }
210
+ };
211
+ },
212
+ };
213
+ }
214
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU0RKV1RWQ1BhcnNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jcmVkZW50aWFsLXBhcnNlcnMvU0RKV1RWQ1BhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWVBLHNDQTBPQztBQXpQRCx1Q0FBcUM7QUFFckMsb0NBQWtEO0FBRWxELG9DQUFnSztBQUNoSyx3Q0FBa0Q7QUFDbEQsNENBQTBEO0FBQzFELG9FQUFpRTtBQUNqRSw4RkFBMkY7QUFDM0YsNkJBQXdCO0FBQ3hCLGtFQUErRDtBQUMvRCwwRUFBc0U7QUFFdEUsb0dBQWlHO0FBRWpHLFNBQWdCLGFBQWEsQ0FBQyxJQUFrRDtJQUMvRSxNQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO0lBRWxDLFNBQVMsbUJBQW1CLENBQUMsVUFBd0Q7UUFDcEYsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDcEIsR0FBRyxHQUFHO2dCQUNMLEdBQUcsR0FBRztnQkFDTixVQUFVLEVBQUUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUM7YUFDM0MsQ0FBQTtRQUNGLENBQUM7UUFDRCxJQUFJLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNwQixHQUFHLEdBQUc7Z0JBQ0wsR0FBRyxHQUFHO2dCQUNOLE1BQU0sRUFBRSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQzthQUN2QyxDQUFBO1FBQ0YsQ0FBQztRQUVELElBQUksVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ3BCLEdBQUcsR0FBRztnQkFDTCxHQUFHLEdBQUc7Z0JBQ04sU0FBUyxFQUFFLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDO2FBQzFDLENBQUE7UUFDRixDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDWixDQUFD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
@@ -0,0 +1,8 @@
1
+ import { Context, CredentialVerifier, PublicKeyResolverEngineI } from "../interfaces";
2
+ import { type X509ChainVerifierI } from "../x509/X509ChainVerifier";
3
+ export declare function MsoMdocVerifier(args: {
4
+ context: Context;
5
+ pkResolverEngine: PublicKeyResolverEngineI;
6
+ x509ChainVerifier?: X509ChainVerifierI;
7
+ }): CredentialVerifier;
8
+ //# sourceMappingURL=MsoMdocVerifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MsoMdocVerifier.d.ts","sourceRoot":"","sources":["../../src/credential-verifiers/MsoMdocVerifier.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAMtF,OAAO,EAEN,KAAK,kBAAkB,EACvB,MAAM,2BAA2B,CAAC;AAEnC,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,EAAE,wBAAwB,CAAC;IAC3C,iBAAiB,CAAC,EAAE,kBAAkB,CAAC;CACvC,GAAG,kBAAkB,CA+QrB"}