@cef-ebsi/cli 1.0.0-alpha.6 → 1.0.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/README.md +96 -95
- package/dist/abi/pilot/DidRegistryV4.js +942 -0
- package/dist/abi/pilot/DidRegistryV4.js.map +1 -0
- package/dist/abi/pilot/TimestampV3.js +995 -0
- package/dist/abi/pilot/TimestampV3.js.map +1 -0
- package/dist/abi/pilot/TirV4.js +710 -0
- package/dist/abi/pilot/TirV4.js.map +1 -0
- package/dist/abi/pilot/TprV3.js +707 -0
- package/dist/abi/pilot/TprV3.js.map +1 -0
- package/dist/abi/pilot/TsrV3.js +571 -0
- package/dist/abi/pilot/TsrV3.js.map +1 -0
- package/dist/abi/test/DidRegistry.js +1082 -0
- package/dist/abi/test/DidRegistry.js.map +1 -0
- package/dist/abi/test/DidRegistryV4.js +960 -0
- package/dist/abi/test/DidRegistryV4.js.map +1 -0
- package/dist/abi/test/{TarV3.js → SchemaSCRegistry.js} +319 -454
- package/dist/abi/test/SchemaSCRegistry.js.map +1 -0
- package/dist/abi/{pilot/TarV3.js → test/Timestamp.js} +450 -466
- package/dist/abi/test/Timestamp.js.map +1 -0
- package/dist/abi/test/TimestampV3.js +995 -0
- package/dist/abi/test/TimestampV3.js.map +1 -0
- package/dist/abi/test/Tir.js +897 -0
- package/dist/abi/test/Tir.js.map +1 -0
- package/dist/abi/test/TirV4.js +710 -0
- package/dist/abi/test/TirV4.js.map +1 -0
- package/dist/abi/test/Tpr.js +1268 -0
- package/dist/abi/test/Tpr.js.map +1 -0
- package/dist/abi/test/TprV3.js +707 -0
- package/dist/abi/test/TprV3.js.map +1 -0
- package/dist/abi/test/TsrV3.js +571 -0
- package/dist/abi/test/TsrV3.js.map +1 -0
- package/dist/app.js +70 -57
- package/dist/app.js.map +1 -1
- package/dist/buildParam/didV4.js +390 -0
- package/dist/buildParam/didV4.js.map +1 -0
- package/dist/buildParam/index.js +43 -20
- package/dist/buildParam/index.js.map +1 -1
- package/dist/buildParam/timestampV3.js +317 -0
- package/dist/buildParam/timestampV3.js.map +1 -0
- package/dist/buildParam/tirV4.js +119 -0
- package/dist/buildParam/tirV4.js.map +1 -0
- package/dist/buildParam/tntV2.js +181 -0
- package/dist/buildParam/tntV2.js.map +1 -0
- package/dist/buildParam/tprV3.js +82 -0
- package/dist/buildParam/tprV3.js.map +1 -0
- package/dist/buildParam/tsrV3.js +110 -0
- package/dist/buildParam/tsrV3.js.map +1 -0
- package/dist/commands/authorisation-v4.js +6 -128
- package/dist/commands/authorisation-v4.js.map +1 -1
- package/dist/commands/authorisation-v5.js +116 -0
- package/dist/commands/authorisation-v5.js.map +1 -0
- package/dist/commands/compute.js +122 -53
- package/dist/commands/compute.js.map +1 -1
- package/dist/commands/conformance-v3.js +1 -2
- package/dist/commands/conformance-v3.js.map +1 -1
- package/dist/commands/ledger-v4.js +16 -4
- package/dist/commands/ledger-v4.js.map +1 -1
- package/dist/commands/view.js +0 -8
- package/dist/commands/view.js.map +1 -1
- package/dist/config.js +93 -96
- package/dist/config.js.map +1 -1
- package/dist/programs/migrateDid.js +158 -0
- package/dist/programs/migrateDid.js.map +1 -0
- package/dist/programs/migrateTsr.js +158 -0
- package/dist/programs/migrateTsr.js.map +1 -0
- package/dist/scripts/accreditAndAuthorize/conformance/step1 +2 -3
- package/dist/scripts/accreditAndAuthorize/conformance/step4 +1 -1
- package/dist/scripts/accreditAndAuthorize/test/step1 +2 -3
- package/dist/scripts/accreditAndAuthorize/test/step4 +1 -1
- package/dist/scripts/bootstrap/0b-loadAdmin +0 -1
- package/dist/scripts/bootstrap/1-populateTPR +0 -23
- package/dist/scripts/bootstrap/2-populateDID +1 -1
- package/dist/scripts/bootstrap/{5-populateTIR → 4-populateTIR} +0 -1
- package/dist/scripts/bootstrap/{7-setupConformanceIssuer → 6-setupConformanceIssuer} +3 -3
- package/dist/scripts/issueVcOnboard +1 -1
- package/dist/scripts/issueVcRootTAO +1 -1
- package/dist/scripts/issueVcTAO +2 -2
- package/dist/scripts/issueVcTI +2 -2
- package/dist/scripts/issue_CTRevocableCredential +3 -4
- package/dist/scripts/issue_SelfAttestationSupportOffice +2 -3
- package/dist/scripts/issue_VerifiableAccreditationToAccredit +2 -3
- package/dist/scripts/issue_VerifiableAccreditationToAttest +2 -3
- package/dist/scripts/issue_VerifiableAuthorisationForTrustChain +1 -2
- package/dist/scripts/issue_VerifiableAuthorisationToOnboard +1 -2
- package/dist/scripts/updateVcRootTAO +10 -0
- package/dist/scripts/updateVcTAO +11 -0
- package/dist/scripts/updateVcTI +11 -0
- package/dist/scripts/wctv3/accreditAndAuthorize +4 -3
- package/dist/scripts/wctv3/pda1 +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utils/print.js +1 -5
- package/dist/utils/print.js.map +1 -1
- package/dist/utils/verifiablePresentation.js +2 -2
- package/dist/utils/verifiablePresentation.js.map +1 -1
- package/package.json +32 -32
- package/dist/abi/pilot/TarV3.js.map +0 -1
- package/dist/abi/test/TarV3.js.map +0 -1
- package/dist/buildParam/tarV3.js +0 -193
- package/dist/buildParam/tarV3.js.map +0 -1
- package/dist/programs/appRegistration.js +0 -68
- package/dist/programs/appRegistration.js.map +0 -1
- package/dist/scripts/bootstrap/3-populateTAR +0 -28
- package/dist/scripts/initializeContracts +0 -5
- /package/dist/scripts/bootstrap/{4-populateTimestamp → 3-populateTimestamp} +0 -0
- /package/dist/scripts/bootstrap/{6-populateTSR → 5-populateTSR} +0 -0
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import Joi from "joi";
|
|
2
|
+
export function buildParamTprV3(method, client, inputs) {
|
|
3
|
+
switch (method) {
|
|
4
|
+
case "insertUserAttributes": {
|
|
5
|
+
const [user, attributes] = inputs;
|
|
6
|
+
Joi.assert(user, Joi.string());
|
|
7
|
+
Joi.assert(attributes, Joi.array().items(Joi.string()));
|
|
8
|
+
return {
|
|
9
|
+
info: {
|
|
10
|
+
title: `Insert User Attribute`,
|
|
11
|
+
data: { user, attributes },
|
|
12
|
+
},
|
|
13
|
+
param: { user, attributes },
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
case "deleteUserAttribute": {
|
|
17
|
+
const [user, attribute] = inputs;
|
|
18
|
+
Joi.assert(user, Joi.string());
|
|
19
|
+
Joi.assert(attribute, Joi.string());
|
|
20
|
+
return {
|
|
21
|
+
info: {
|
|
22
|
+
title: `Delete User Attribute`,
|
|
23
|
+
data: { user, attribute },
|
|
24
|
+
},
|
|
25
|
+
param: { user, attribute },
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
case "insertPolicy": {
|
|
29
|
+
const [policyName, descriptionInput] = inputs;
|
|
30
|
+
Joi.assert(policyName, Joi.string());
|
|
31
|
+
const description = Array.isArray(descriptionInput)
|
|
32
|
+
? descriptionInput[0]
|
|
33
|
+
: descriptionInput;
|
|
34
|
+
return {
|
|
35
|
+
info: {
|
|
36
|
+
title: "Insert Policy",
|
|
37
|
+
data: { policyName, description },
|
|
38
|
+
},
|
|
39
|
+
param: { policyName, description },
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
case "updatePolicy": {
|
|
43
|
+
const [policyIdorName, descriptionInput] = inputs;
|
|
44
|
+
Joi.assert(policyIdorName, Joi.string());
|
|
45
|
+
const description = Array.isArray(descriptionInput)
|
|
46
|
+
? descriptionInput[0]
|
|
47
|
+
: descriptionInput;
|
|
48
|
+
const isId = !Number.isNaN(Number(policyIdorName));
|
|
49
|
+
const param = {
|
|
50
|
+
...(isId && { policyId: policyIdorName }),
|
|
51
|
+
...(!isId && { policyName: policyIdorName }),
|
|
52
|
+
description,
|
|
53
|
+
};
|
|
54
|
+
return {
|
|
55
|
+
info: {
|
|
56
|
+
title: "Insert Policy",
|
|
57
|
+
data: param,
|
|
58
|
+
},
|
|
59
|
+
param,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
case "deactivatePolicy":
|
|
63
|
+
case "activatePolicy": {
|
|
64
|
+
const [policyIdorName] = inputs;
|
|
65
|
+
Joi.assert(policyIdorName, Joi.string());
|
|
66
|
+
const isId = !Number.isNaN(Number(policyIdorName));
|
|
67
|
+
const policyRef = {
|
|
68
|
+
...(isId && { policyId: policyIdorName }),
|
|
69
|
+
...(!isId && { policyName: policyIdorName }),
|
|
70
|
+
};
|
|
71
|
+
return {
|
|
72
|
+
info: { title: "Deactivate Policy", data: policyRef },
|
|
73
|
+
param: policyRef,
|
|
74
|
+
method: isId ? `${method}(uint256)` : `${method}(string)`,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
default:
|
|
78
|
+
throw new Error(`Invalid method '${method}'`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
export default buildParamTprV3;
|
|
82
|
+
//# sourceMappingURL=tprV3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tprV3.js","sourceRoot":"","sources":["../../src/buildParam/tprV3.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import crypto from "node:crypto";
|
|
2
|
+
import Joi from "joi";
|
|
3
|
+
import { JoiHexadecimal, computeSchemaId } from "../utils/index.js";
|
|
4
|
+
export async function buildParamTsrV3(method, client, inputs) {
|
|
5
|
+
switch (method) {
|
|
6
|
+
case "insertSchema": {
|
|
7
|
+
const [inputSchema, inputMetadata] = inputs;
|
|
8
|
+
Joi.assert(inputSchema, Joi.object().optional());
|
|
9
|
+
Joi.assert(inputMetadata, Joi.object().optional());
|
|
10
|
+
const schema = typeof inputSchema === "object"
|
|
11
|
+
? inputSchema
|
|
12
|
+
: {
|
|
13
|
+
"@context": "https://ebsi.eu",
|
|
14
|
+
type: "Schema",
|
|
15
|
+
name: "example",
|
|
16
|
+
data: crypto.randomBytes(16).toString("hex"),
|
|
17
|
+
};
|
|
18
|
+
const serializedSchema = JSON.stringify(schema);
|
|
19
|
+
const serializedSchemaBuffer = Buffer.from(serializedSchema);
|
|
20
|
+
const metadata = typeof inputMetadata === "object"
|
|
21
|
+
? inputMetadata
|
|
22
|
+
: {
|
|
23
|
+
meta: "value",
|
|
24
|
+
data: crypto.randomBytes(16).toString("hex"),
|
|
25
|
+
validFrom: new Date(Date.now() - 60 * 1000).toISOString(), // -1 minute
|
|
26
|
+
validTo: new Date(Date.now() + 5 * 60 * 1000).toISOString(), // +5 minutes
|
|
27
|
+
};
|
|
28
|
+
const serializedMetadata = JSON.stringify(metadata);
|
|
29
|
+
const serializedMetadataBuffer = Buffer.from(serializedMetadata);
|
|
30
|
+
const schemaId = await computeSchemaId(schema, "base16");
|
|
31
|
+
return {
|
|
32
|
+
info: {
|
|
33
|
+
title: `Schema Id ${schemaId}`,
|
|
34
|
+
data: { schema, metadata },
|
|
35
|
+
},
|
|
36
|
+
param: {
|
|
37
|
+
schemaId,
|
|
38
|
+
schema: `0x${serializedSchemaBuffer.toString("hex")}`,
|
|
39
|
+
metadata: `0x${serializedMetadataBuffer.toString("hex")}`,
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
case "updateSchema": {
|
|
44
|
+
const [schemaId, inputSchema, inputMetadata] = inputs;
|
|
45
|
+
Joi.assert(schemaId, JoiHexadecimal);
|
|
46
|
+
Joi.assert(inputSchema, Joi.object().optional());
|
|
47
|
+
Joi.assert(inputMetadata, Joi.object().optional());
|
|
48
|
+
const schema = typeof inputSchema === "object"
|
|
49
|
+
? inputSchema
|
|
50
|
+
: {
|
|
51
|
+
"@context": "https://ebsi.eu",
|
|
52
|
+
type: "Schema",
|
|
53
|
+
name: "example",
|
|
54
|
+
data: crypto.randomBytes(16).toString("hex"),
|
|
55
|
+
};
|
|
56
|
+
const serializedSchema = JSON.stringify(schema);
|
|
57
|
+
const serializedSchemaBuffer = Buffer.from(serializedSchema);
|
|
58
|
+
const metadata = typeof inputMetadata === "object"
|
|
59
|
+
? inputMetadata
|
|
60
|
+
: {
|
|
61
|
+
meta: "value",
|
|
62
|
+
data: crypto.randomBytes(16).toString("hex"),
|
|
63
|
+
validFrom: new Date(Date.now() - 60 * 1000).toISOString(), // -1 minute
|
|
64
|
+
validTo: new Date(Date.now() + 5 * 60 * 1000).toISOString(), // +5 minutes
|
|
65
|
+
};
|
|
66
|
+
const serializedMetadata = JSON.stringify(metadata);
|
|
67
|
+
const serializedMetadataBuffer = Buffer.from(serializedMetadata);
|
|
68
|
+
return {
|
|
69
|
+
info: {
|
|
70
|
+
title: `Schema Id ${schemaId}`,
|
|
71
|
+
data: { schema, metadata },
|
|
72
|
+
},
|
|
73
|
+
param: {
|
|
74
|
+
schemaId,
|
|
75
|
+
schema: `0x${serializedSchemaBuffer.toString("hex")}`,
|
|
76
|
+
metadata: `0x${serializedMetadataBuffer.toString("hex")}`,
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
case "updateMetadata": {
|
|
81
|
+
const [schemaRevisionId, inputMetadata] = inputs;
|
|
82
|
+
Joi.assert(schemaRevisionId, Joi.string());
|
|
83
|
+
Joi.assert(inputMetadata, Joi.object().optional());
|
|
84
|
+
const metadata = typeof inputMetadata === "object"
|
|
85
|
+
? inputMetadata
|
|
86
|
+
: {
|
|
87
|
+
meta: "value",
|
|
88
|
+
data: crypto.randomBytes(16).toString("hex"),
|
|
89
|
+
validFrom: new Date(Date.now() - 60 * 1000).toISOString(), // -1 minute
|
|
90
|
+
validTo: new Date(Date.now() + 5 * 60 * 1000).toISOString(), // +5 minutes
|
|
91
|
+
};
|
|
92
|
+
const serializedMetadata = JSON.stringify(metadata);
|
|
93
|
+
const serializedMetadataBuffer = Buffer.from(serializedMetadata);
|
|
94
|
+
return {
|
|
95
|
+
info: {
|
|
96
|
+
title: `Update metadata ${schemaRevisionId}`,
|
|
97
|
+
data: metadata,
|
|
98
|
+
},
|
|
99
|
+
param: {
|
|
100
|
+
schemaRevisionId,
|
|
101
|
+
metadata: `0x${serializedMetadataBuffer.toString("hex")}`,
|
|
102
|
+
},
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
default:
|
|
106
|
+
throw new Error(`Invalid method '${method}'`);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
export default buildParamTsrV3;
|
|
110
|
+
//# sourceMappingURL=tsrV3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tsrV3.js","sourceRoot":"","sources":["../../src/buildParam/tsrV3.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
import { randomUUID } from "node:crypto";
|
|
2
2
|
import { URLSearchParams } from "node:url";
|
|
3
3
|
import Joi from "joi";
|
|
4
|
-
import
|
|
5
|
-
import { importJWK } from "jose";
|
|
6
|
-
import { Agent as SiopAgent, verifyJwtTar, } from "@cef-ebsi/siop-auth";
|
|
7
|
-
import { Agent as Oauth2Agent } from "@cef-ebsi/oauth2-auth";
|
|
8
|
-
import { httpCall, red, yellow } from "../utils/index.js";
|
|
4
|
+
import { httpCall } from "../utils/index.js";
|
|
9
5
|
import { compute } from "./compute.js";
|
|
10
6
|
export async function authorisationGet(inputs, context) {
|
|
11
7
|
const apiUrl = context.config.api.authorisation.url;
|
|
@@ -15,7 +11,7 @@ export async function authorisationGet(inputs, context) {
|
|
|
15
11
|
export async function authorisationToken(inputs, context) {
|
|
16
12
|
const apiUrl = context.config.api.authorisation.url;
|
|
17
13
|
const [definitionId, vpJwt] = inputs;
|
|
18
|
-
Joi.assert(definitionId, Joi.string().valid("didr_invite_presentation", "didr_write_presentation", "tir_invite_presentation", "tir_write_presentation", "timestamp_write_presentation", "tnt_authorise_presentation", "tnt_create_presentation", "tnt_write_presentation"));
|
|
14
|
+
Joi.assert(definitionId, Joi.string().valid("didr_invite_presentation", "didr_write_presentation", "tir_invite_presentation", "tir_write_presentation", "timestamp_write_presentation", "tnt_authorise_presentation", "tnt_create_presentation", "tnt_write_presentation", "tpr_write_presentation", "tsr_write_presentation"));
|
|
19
15
|
const scopeByDefinition = {
|
|
20
16
|
didr_invite_presentation: "openid didr_invite",
|
|
21
17
|
didr_write_presentation: "openid didr_write",
|
|
@@ -25,6 +21,8 @@ export async function authorisationToken(inputs, context) {
|
|
|
25
21
|
tnt_authorise_presentation: "openid tnt_authorise",
|
|
26
22
|
tnt_create_presentation: "openid tnt_create",
|
|
27
23
|
tnt_write_presentation: "openid tnt_write",
|
|
24
|
+
tpr_write_presentation: "openid tpr_write",
|
|
25
|
+
tsr_write_presentation: "openid tsr_write",
|
|
28
26
|
};
|
|
29
27
|
let descriptorMap = [];
|
|
30
28
|
if (definitionId === "didr_invite_presentation") {
|
|
@@ -90,7 +88,7 @@ export async function authorisationToken(inputs, context) {
|
|
|
90
88
|
}
|
|
91
89
|
export async function authorisationAuth(inputs, context) {
|
|
92
90
|
const [definitionId, inputAlg, vc] = inputs;
|
|
93
|
-
const alg = inputAlg || "
|
|
91
|
+
const alg = inputAlg || "ES256";
|
|
94
92
|
Joi.assert(alg, Joi.string().valid("ES256K", "ES256", "EdDSA", "RS256"));
|
|
95
93
|
console.log("==> authorisation get /.well-known/openid-configuration");
|
|
96
94
|
const openIdConfig = (await authorisationGet(["/.well-known/openid-configuration"], context));
|
|
@@ -99,112 +97,6 @@ export async function authorisationAuth(inputs, context) {
|
|
|
99
97
|
console.log(`==> authorisation token ${definitionId} ${vpJwt}`);
|
|
100
98
|
return authorisationToken([definitionId, vpJwt], context);
|
|
101
99
|
}
|
|
102
|
-
export async function siopRequest(inputs, context) {
|
|
103
|
-
const apiUrl = context.config.api.authorisation.url;
|
|
104
|
-
const response = await httpCall.post(`${apiUrl}/authentication-requests`, {
|
|
105
|
-
scope: "openid did_authn",
|
|
106
|
-
}, context.httpOpts);
|
|
107
|
-
const uri = response.data;
|
|
108
|
-
const uriDecoded = qs.parse(uri.replace("openid://?", ""));
|
|
109
|
-
return {
|
|
110
|
-
client_id: decodeURIComponent(uriDecoded.client_id),
|
|
111
|
-
request: uriDecoded.request,
|
|
112
|
-
};
|
|
113
|
-
}
|
|
114
|
-
export async function siopSession(inputs, context) {
|
|
115
|
-
const [callbackUrl, inputAlg, verifiedClaims] = inputs;
|
|
116
|
-
const alg = inputAlg || "ES256K";
|
|
117
|
-
const nonce = randomUUID();
|
|
118
|
-
const key = context.client.keys[alg];
|
|
119
|
-
if (!key)
|
|
120
|
-
throw new Error(`There is no key defined for alg ${alg}`);
|
|
121
|
-
const agent = new SiopAgent({
|
|
122
|
-
privateKey: await importJWK(key.privateKeyJwk, alg),
|
|
123
|
-
alg,
|
|
124
|
-
kid: key.kid,
|
|
125
|
-
siopV2: true,
|
|
126
|
-
});
|
|
127
|
-
const { idToken } = await agent.createResponse({
|
|
128
|
-
nonce,
|
|
129
|
-
redirectUri: callbackUrl,
|
|
130
|
-
claims: {
|
|
131
|
-
encryption_key: key.publicKeyEncryptionJwk,
|
|
132
|
-
},
|
|
133
|
-
responseMode: "form_post",
|
|
134
|
-
...(verifiedClaims && {
|
|
135
|
-
_vp_token: {
|
|
136
|
-
presentation_submission: {
|
|
137
|
-
id: randomUUID(),
|
|
138
|
-
definition_id: randomUUID(),
|
|
139
|
-
descriptor_map: [
|
|
140
|
-
{
|
|
141
|
-
id: randomUUID(),
|
|
142
|
-
format: "jwt_vp",
|
|
143
|
-
path: "$",
|
|
144
|
-
path_nested: {
|
|
145
|
-
id: "onboarding-input-id",
|
|
146
|
-
format: "jwt_vc",
|
|
147
|
-
path: "$.vp.verifiableCredential[0]",
|
|
148
|
-
},
|
|
149
|
-
},
|
|
150
|
-
],
|
|
151
|
-
},
|
|
152
|
-
},
|
|
153
|
-
}),
|
|
154
|
-
});
|
|
155
|
-
const body = {
|
|
156
|
-
id_token: idToken,
|
|
157
|
-
...(verifiedClaims && { vp_token: verifiedClaims }),
|
|
158
|
-
};
|
|
159
|
-
const responseSession = await httpCall.post(callbackUrl, body, context.httpOpts);
|
|
160
|
-
return {
|
|
161
|
-
alg,
|
|
162
|
-
nonce,
|
|
163
|
-
response: responseSession.data,
|
|
164
|
-
};
|
|
165
|
-
}
|
|
166
|
-
export async function siop(inputs, context) {
|
|
167
|
-
const [inputAlg] = inputs;
|
|
168
|
-
const alg = inputAlg || "ES256K";
|
|
169
|
-
console.log("==> authorisation siopRequest");
|
|
170
|
-
const request = await siopRequest([], context);
|
|
171
|
-
console.log(`==> compute verifyAuthenticationRequest ${JSON.stringify(request)}`);
|
|
172
|
-
await verifyJwtTar(request.request, {
|
|
173
|
-
trustedAppsRegistry: `${context.config.api.tar.url}/apps`,
|
|
174
|
-
});
|
|
175
|
-
yellow("Authentication request OK");
|
|
176
|
-
const callbackUrl = request.client_id;
|
|
177
|
-
console.log(`==> authorisation siopSession ${callbackUrl} ${alg}`);
|
|
178
|
-
const sessionResponse = await siopSession([callbackUrl, alg], context);
|
|
179
|
-
console.log(`==> compute verifySessionResponse ${JSON.stringify(sessionResponse)}`);
|
|
180
|
-
const key = context.client.keys[alg];
|
|
181
|
-
if (!key)
|
|
182
|
-
throw new Error(`There is no key defined for alg ${sessionResponse.alg}`);
|
|
183
|
-
const accessToken = await SiopAgent.verifyAkeResponse(sessionResponse.response, {
|
|
184
|
-
nonce: sessionResponse.nonce,
|
|
185
|
-
privateEncryptionKeyJwk: key.privateKeyEncryptionJwk,
|
|
186
|
-
trustedAppsRegistry: `${context.config.api.tar.url}/apps`,
|
|
187
|
-
alg: sessionResponse.alg,
|
|
188
|
-
});
|
|
189
|
-
yellow(`Session Response OK. Access token: ${accessToken}`);
|
|
190
|
-
return accessToken;
|
|
191
|
-
}
|
|
192
|
-
export async function oauth2Session(inputs, context) {
|
|
193
|
-
const [audience] = inputs;
|
|
194
|
-
const agent = new Oauth2Agent({
|
|
195
|
-
privateKey: context.trustedApp.privateKey,
|
|
196
|
-
name: context.trustedApp.name,
|
|
197
|
-
trustedAppsRegistry: `${context.config.api.tar.url}/apps`,
|
|
198
|
-
});
|
|
199
|
-
const nonce = randomUUID();
|
|
200
|
-
const requestComponent = await agent.createRequest(audience, {
|
|
201
|
-
nonce,
|
|
202
|
-
});
|
|
203
|
-
const apiUrl = context.config.api.authorisation.url;
|
|
204
|
-
const response = await httpCall.post(`${apiUrl}/oauth2-sessions`, requestComponent);
|
|
205
|
-
const accessToken = await agent.verifyAkeResponse(response.data, { nonce });
|
|
206
|
-
return accessToken;
|
|
207
|
-
}
|
|
208
100
|
export async function authorisationV4(method, inputs, context) {
|
|
209
101
|
switch (method) {
|
|
210
102
|
case "get": {
|
|
@@ -216,22 +108,8 @@ export async function authorisationV4(method, inputs, context) {
|
|
|
216
108
|
case "auth": {
|
|
217
109
|
return authorisationAuth(inputs, context);
|
|
218
110
|
}
|
|
219
|
-
// legacy endpoints
|
|
220
|
-
case "siopRequest": {
|
|
221
|
-
return siopRequest(inputs, context);
|
|
222
|
-
}
|
|
223
|
-
case "siopSession": {
|
|
224
|
-
return siopSession(inputs, context);
|
|
225
|
-
}
|
|
226
|
-
case "siop": {
|
|
227
|
-
return siop(inputs, context);
|
|
228
|
-
}
|
|
229
|
-
case "oauth2": {
|
|
230
|
-
return oauth2Session(inputs, context);
|
|
231
|
-
}
|
|
232
111
|
default:
|
|
233
|
-
|
|
234
|
-
return 0;
|
|
112
|
+
throw new Error(`Invalid method '${method}'`);
|
|
235
113
|
}
|
|
236
114
|
}
|
|
237
115
|
export default authorisationV4;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authorisation-v4.js","sourceRoot":"","sources":["../../src/commands/authorisation-v4.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"authorisation-v4.js","sourceRoot":"","sources":["../../src/commands/authorisation-v4.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { URLSearchParams } from "node:url";
|
|
3
|
+
import Joi from "joi";
|
|
4
|
+
import { httpCall } from "../utils/index.js";
|
|
5
|
+
import { compute } from "./compute.js";
|
|
6
|
+
export async function authorisationGet(inputs, context) {
|
|
7
|
+
const apiUrl = context.config.api.authorisation.url;
|
|
8
|
+
const response = await httpCall.get(`${apiUrl}${inputs.join("")}`, context.httpOpts);
|
|
9
|
+
return response.data;
|
|
10
|
+
}
|
|
11
|
+
export async function authorisationToken(inputs, context) {
|
|
12
|
+
const apiUrl = context.config.api.authorisation.url;
|
|
13
|
+
const [definitionId, vpJwt] = inputs;
|
|
14
|
+
Joi.assert(definitionId, Joi.string().valid("didr_invite_presentation", "didr_write_presentation", "tir_invite_presentation", "tir_write_presentation", "timestamp_write_presentation", "tnt_authorise_presentation", "tnt_create_presentation", "tnt_write_presentation", "tpr_write_presentation", "tsr_write_presentation"));
|
|
15
|
+
const scopeByDefinition = {
|
|
16
|
+
didr_invite_presentation: "openid didr_invite",
|
|
17
|
+
didr_write_presentation: "openid didr_write",
|
|
18
|
+
tir_invite_presentation: "openid tir_invite",
|
|
19
|
+
tir_write_presentation: "openid tir_write",
|
|
20
|
+
timestamp_write_presentation: "openid timestamp_write",
|
|
21
|
+
tnt_authorise_presentation: "openid tnt_authorise",
|
|
22
|
+
tnt_create_presentation: "openid tnt_create",
|
|
23
|
+
tnt_write_presentation: "openid tnt_write",
|
|
24
|
+
tpr_write_presentation: "openid tpr_write",
|
|
25
|
+
tsr_write_presentation: "openid tsr_write",
|
|
26
|
+
};
|
|
27
|
+
let descriptorMap = [];
|
|
28
|
+
if (definitionId === "didr_invite_presentation") {
|
|
29
|
+
descriptorMap = [
|
|
30
|
+
{
|
|
31
|
+
id: "didr_invite_credential",
|
|
32
|
+
format: "jwt_vp",
|
|
33
|
+
path: "$",
|
|
34
|
+
path_nested: {
|
|
35
|
+
id: "didr_invite_credential",
|
|
36
|
+
format: "jwt_vc",
|
|
37
|
+
path: "$.vp.verifiableCredential[0]",
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
];
|
|
41
|
+
}
|
|
42
|
+
else if (definitionId === "tir_invite_presentation") {
|
|
43
|
+
descriptorMap = [
|
|
44
|
+
{
|
|
45
|
+
id: "tir_invite_credential",
|
|
46
|
+
format: "jwt_vp",
|
|
47
|
+
path: "$",
|
|
48
|
+
path_nested: {
|
|
49
|
+
id: "tir_invite_credential",
|
|
50
|
+
format: "jwt_vc",
|
|
51
|
+
path: "$.vp.verifiableCredential[0]",
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
];
|
|
55
|
+
}
|
|
56
|
+
else if (definitionId === "tnt_authorise_presentation") {
|
|
57
|
+
descriptorMap = [
|
|
58
|
+
{
|
|
59
|
+
id: "tnt_authorise_credential",
|
|
60
|
+
format: "jwt_vp",
|
|
61
|
+
path: "$",
|
|
62
|
+
path_nested: {
|
|
63
|
+
id: "tnt_authorise_credential",
|
|
64
|
+
format: "jwt_vc",
|
|
65
|
+
path: "$.vp.verifiableCredential[0]",
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
];
|
|
69
|
+
}
|
|
70
|
+
const presentationSubmission = {
|
|
71
|
+
id: randomUUID(),
|
|
72
|
+
definition_id: definitionId,
|
|
73
|
+
descriptor_map: descriptorMap,
|
|
74
|
+
};
|
|
75
|
+
const httpOpts = {
|
|
76
|
+
headers: {
|
|
77
|
+
"Content-Type": "application/x-www-form-urlencoded",
|
|
78
|
+
...(context.httpOpts && context.httpOpts.headers),
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
const response = await httpCall.post(`${apiUrl}/token`, new URLSearchParams({
|
|
82
|
+
grant_type: "vp_token",
|
|
83
|
+
scope: scopeByDefinition[definitionId],
|
|
84
|
+
vp_token: vpJwt,
|
|
85
|
+
presentation_submission: JSON.stringify(presentationSubmission),
|
|
86
|
+
}).toString(), httpOpts);
|
|
87
|
+
return response.data;
|
|
88
|
+
}
|
|
89
|
+
export async function authorisationAuth(inputs, context) {
|
|
90
|
+
const [definitionId, inputAlg, vc] = inputs;
|
|
91
|
+
const alg = inputAlg || "ES256";
|
|
92
|
+
Joi.assert(alg, Joi.string().valid("ES256K", "ES256", "EdDSA", "RS256"));
|
|
93
|
+
console.log("==> authorisation get /.well-known/openid-configuration");
|
|
94
|
+
const openIdConfig = (await authorisationGet(["/.well-known/openid-configuration"], context));
|
|
95
|
+
console.log(`==> compute createPresentationJwt ${vc || "empty"} ${alg} ${openIdConfig.issuer}`);
|
|
96
|
+
const vpJwt = (await compute("createPresentationJwt", [vc || "empty", alg, openIdConfig.issuer], context));
|
|
97
|
+
console.log(`==> authorisation token ${definitionId} ${vpJwt}`);
|
|
98
|
+
return authorisationToken([definitionId, vpJwt], context);
|
|
99
|
+
}
|
|
100
|
+
export async function authorisationV5(method, inputs, context) {
|
|
101
|
+
switch (method) {
|
|
102
|
+
case "get": {
|
|
103
|
+
return authorisationGet(inputs, context);
|
|
104
|
+
}
|
|
105
|
+
case "token": {
|
|
106
|
+
return authorisationToken(inputs, context);
|
|
107
|
+
}
|
|
108
|
+
case "auth": {
|
|
109
|
+
return authorisationAuth(inputs, context);
|
|
110
|
+
}
|
|
111
|
+
default:
|
|
112
|
+
throw new Error(`Invalid method '${method}'`);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
export default authorisationV5;
|
|
116
|
+
//# sourceMappingURL=authorisation-v5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authorisation-v5.js","sourceRoot":"","sources":["../../src/commands/authorisation-v5.ts"],"names":[],"mappings":"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"}
|