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.
- package/LICENSE +21 -0
- package/README.md +20 -0
- package/dist/ParsingEngine.d.ts +3 -0
- package/dist/ParsingEngine.d.ts.map +1 -0
- package/dist/ParsingEngine.js +25 -0
- package/dist/PublicKeyResolverEngine.d.ts +3 -0
- package/dist/PublicKeyResolverEngine.d.ts.map +1 -0
- package/dist/PublicKeyResolverEngine.js +24 -0
- package/dist/VerifyingEngine.d.ts +3 -0
- package/dist/VerifyingEngine.d.ts.map +1 -0
- package/dist/VerifyingEngine.js +27 -0
- package/dist/credential-parsers/MsoMdocParser.d.ts +6 -0
- package/dist/credential-parsers/MsoMdocParser.d.ts.map +1 -0
- package/dist/credential-parsers/MsoMdocParser.js +164 -0
- package/dist/credential-parsers/SDJWTVCParser.d.ts +6 -0
- package/dist/credential-parsers/SDJWTVCParser.d.ts.map +1 -0
- package/dist/credential-parsers/SDJWTVCParser.js +214 -0
- package/dist/credential-verifiers/MsoMdocVerifier.d.ts +8 -0
- package/dist/credential-verifiers/MsoMdocVerifier.d.ts.map +1 -0
- package/dist/credential-verifiers/MsoMdocVerifier.js +213 -0
- package/dist/credential-verifiers/SDJWTVCValidation.d.ts +52 -0
- package/dist/credential-verifiers/SDJWTVCValidation.d.ts.map +1 -0
- package/dist/credential-verifiers/SDJWTVCValidation.js +248 -0
- package/dist/credential-verifiers/SDJWTVCVerifier.d.ts +15 -0
- package/dist/credential-verifiers/SDJWTVCVerifier.d.ts.map +1 -0
- package/dist/credential-verifiers/SDJWTVCVerifier.js +394 -0
- package/dist/defaultHttpClient.d.ts +3 -0
- package/dist/defaultHttpClient.d.ts.map +1 -0
- package/dist/defaultHttpClient.js +18 -0
- package/dist/error.d.ts +134 -0
- package/dist/error.d.ts.map +1 -0
- package/dist/error.js +160 -0
- package/dist/functions/convertDataUriToImage.d.ts +2 -0
- package/dist/functions/convertDataUriToImage.d.ts.map +1 -0
- package/dist/functions/convertDataUriToImage.js +38 -0
- package/dist/functions/convertOpenid4vciToSdjwtvcClaims.d.ts +5 -0
- package/dist/functions/convertOpenid4vciToSdjwtvcClaims.d.ts.map +1 -0
- package/dist/functions/convertOpenid4vciToSdjwtvcClaims.js +31 -0
- package/dist/functions/convertSdjwtvcToOpenid4vciClaims.d.ts +11 -0
- package/dist/functions/convertSdjwtvcToOpenid4vciClaims.d.ts.map +1 -0
- package/dist/functions/convertSdjwtvcToOpenid4vciClaims.js +35 -0
- package/dist/functions/convertSdjwtvcToOpenid4vciDisplay.d.ts +19 -0
- package/dist/functions/convertSdjwtvcToOpenid4vciDisplay.d.ts.map +1 -0
- package/dist/functions/convertSdjwtvcToOpenid4vciDisplay.js +56 -0
- package/dist/functions/formatDate.d.ts +2 -0
- package/dist/functions/formatDate.d.ts.map +1 -0
- package/dist/functions/formatDate.js +50 -0
- package/dist/functions/index.d.ts +3 -0
- package/dist/functions/index.d.ts.map +1 -0
- package/dist/functions/index.js +19 -0
- package/dist/functions/openID4VCICredentialRendering.d.ts +5 -0
- package/dist/functions/openID4VCICredentialRendering.d.ts.map +1 -0
- package/dist/functions/openID4VCICredentialRendering.js +93 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +35 -0
- package/dist/interfaces.d.ts +112 -0
- package/dist/interfaces.d.ts.map +1 -0
- package/dist/interfaces.js +3 -0
- package/dist/rendering.d.ts +3 -0
- package/dist/rendering.d.ts.map +1 -0
- package/dist/rendering.js +56 -0
- package/dist/resolvers/RemoteJwksResolver.d.ts +17 -0
- package/dist/resolvers/RemoteJwksResolver.d.ts.map +1 -0
- package/dist/resolvers/RemoteJwksResolver.js +138 -0
- package/dist/schemas/CredentialConfigurationSupportedSchema.d.ts +710 -0
- package/dist/schemas/CredentialConfigurationSupportedSchema.d.ts.map +1 -0
- package/dist/schemas/CredentialConfigurationSupportedSchema.js +60 -0
- package/dist/schemas/CredentialOfferSchema.d.ts +40 -0
- package/dist/schemas/CredentialOfferSchema.d.ts.map +1 -0
- package/dist/schemas/CredentialOfferSchema.js +14 -0
- package/dist/schemas/OpenidAuthorizationServerMetadataSchema.d.ts +49 -0
- package/dist/schemas/OpenidAuthorizationServerMetadataSchema.d.ts.map +1 -0
- package/dist/schemas/OpenidAuthorizationServerMetadataSchema.js +21 -0
- package/dist/schemas/OpenidCredentialIssuerMetadataSchema.d.ts +1030 -0
- package/dist/schemas/OpenidCredentialIssuerMetadataSchema.d.ts.map +1 -0
- package/dist/schemas/OpenidCredentialIssuerMetadataSchema.js +35 -0
- package/dist/schemas/SdJwtVcPayloadSchema.d.ts +79 -0
- package/dist/schemas/SdJwtVcPayloadSchema.d.ts.map +1 -0
- package/dist/schemas/SdJwtVcPayloadSchema.js +27 -0
- package/dist/schemas/SdJwtVcTypeMetadataSchema.d.ts +930 -0
- package/dist/schemas/SdJwtVcTypeMetadataSchema.d.ts.map +1 -0
- package/dist/schemas/SdJwtVcTypeMetadataSchema.js +105 -0
- package/dist/schemas/index.d.ts +6 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +22 -0
- package/dist/status/TokenStatusListVerifier.d.ts +41 -0
- package/dist/status/TokenStatusListVerifier.d.ts.map +1 -0
- package/dist/status/TokenStatusListVerifier.js +410 -0
- package/dist/trust/AlgorithmPolicy.d.ts +27 -0
- package/dist/trust/AlgorithmPolicy.d.ts.map +1 -0
- package/dist/trust/AlgorithmPolicy.js +60 -0
- package/dist/trust/TrustRegistry.d.ts +49 -0
- package/dist/trust/TrustRegistry.d.ts.map +1 -0
- package/dist/trust/TrustRegistry.js +114 -0
- package/dist/types.d.ts +76 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +10 -0
- package/dist/utils/escapeSVG.d.ts +2 -0
- package/dist/utils/escapeSVG.d.ts.map +1 -0
- package/dist/utils/escapeSVG.js +18 -0
- package/dist/utils/getIssuerMetadata.d.ts +8 -0
- package/dist/utils/getIssuerMetadata.d.ts.map +1 -0
- package/dist/utils/getIssuerMetadata.js +33 -0
- package/dist/utils/getSdJwtVcMetadata.d.ts +12 -0
- package/dist/utils/getSdJwtVcMetadata.d.ts.map +1 -0
- package/dist/utils/getSdJwtVcMetadata.js +274 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +6 -0
- package/dist/utils/matchLocalizedDisplay.d.ts +6 -0
- package/dist/utils/matchLocalizedDisplay.d.ts.map +1 -0
- package/dist/utils/matchLocalizedDisplay.js +16 -0
- package/dist/utils/util.d.ts +6 -0
- package/dist/utils/util.d.ts.map +1 -0
- package/dist/utils/util.js +53 -0
- package/dist/utils/verifyCertificate.d.ts +2 -0
- package/dist/utils/verifyCertificate.d.ts.map +1 -0
- package/dist/utils/verifyCertificate.js +100 -0
- package/dist/utils/verifySRIFromObject.d.ts +10 -0
- package/dist/utils/verifySRIFromObject.d.ts.map +1 -0
- package/dist/utils/verifySRIFromObject.js +32 -0
- package/dist/utils/verifyX5C.d.ts +11 -0
- package/dist/utils/verifyX5C.d.ts.map +1 -0
- package/dist/utils/verifyX5C.js +19 -0
- package/dist/x509/X509ChainVerifier.d.ts +59 -0
- package/dist/x509/X509ChainVerifier.d.ts.map +1 -0
- package/dist/x509/X509ChainVerifier.js +458 -0
- 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
|
+
[](https://www.npmjs.com/package/ubid-common)
|
|
4
|
+
[](LICENSE)
|
|
5
|
+
[](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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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"}
|