@cef-ebsi/cli 0.0.0-alpha.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 +190 -0
- package/README.md +32 -0
- package/bin/cli.js +13 -0
- package/dist/abi/pilot/DidRegistry-old.json +2192 -0
- package/dist/abi/pilot/DidRegistry.json +1081 -0
- package/dist/abi/pilot/DidRegistryV3.json +1081 -0
- package/dist/abi/pilot/SchemaSCRegistry.json +972 -0
- package/dist/abi/pilot/SchemaSCRegistryV2.json +473 -0
- package/dist/abi/pilot/Tar.json +1394 -0
- package/dist/abi/pilot/TarV3.json +1107 -0
- package/dist/abi/pilot/Timestamp.json +1091 -0
- package/dist/abi/pilot/TimestampV2.json +1127 -0
- package/dist/abi/pilot/Tir.json +896 -0
- package/dist/abi/pilot/TirV3.json +495 -0
- package/dist/abi/pilot/Tpr.json +1267 -0
- package/dist/abi/pilot/TprV2.json +888 -0
- package/dist/abi/test/DidRegistry-old.json +2192 -0
- package/dist/abi/test/DidRegistry.json +1081 -0
- package/dist/abi/test/DidRegistryV3.json +1088 -0
- package/dist/abi/test/SchemaSCRegistry.json +972 -0
- package/dist/abi/test/SchemaSCRegistryV2.json +473 -0
- package/dist/abi/test/Tar.json +1394 -0
- package/dist/abi/test/TarV3.json +1107 -0
- package/dist/abi/test/Timestamp.json +1091 -0
- package/dist/abi/test/TimestampV2.json +1127 -0
- package/dist/abi/test/Tir.json +896 -0
- package/dist/abi/test/TirV3.json +495 -0
- package/dist/abi/test/Tpr.json +1267 -0
- package/dist/abi/test/TprV2.json +888 -0
- package/dist/app.js +1205 -0
- package/dist/app.js.map +1 -0
- package/dist/buildParam/did.js +355 -0
- package/dist/buildParam/did.js.map +1 -0
- package/dist/buildParam/didOld.js +275 -0
- package/dist/buildParam/didOld.js.map +1 -0
- package/dist/buildParam/didV3.js +353 -0
- package/dist/buildParam/didV3.js.map +1 -0
- package/dist/buildParam/index.js +54 -0
- package/dist/buildParam/index.js.map +1 -0
- package/dist/buildParam/tar.js +240 -0
- package/dist/buildParam/tar.js.map +1 -0
- package/dist/buildParam/tarV3.js +193 -0
- package/dist/buildParam/tarV3.js.map +1 -0
- package/dist/buildParam/timestamp.js +323 -0
- package/dist/buildParam/timestamp.js.map +1 -0
- package/dist/buildParam/timestampV2.js +317 -0
- package/dist/buildParam/timestampV2.js.map +1 -0
- package/dist/buildParam/tir.js +200 -0
- package/dist/buildParam/tir.js.map +1 -0
- package/dist/buildParam/tirV3.js +104 -0
- package/dist/buildParam/tirV3.js.map +1 -0
- package/dist/buildParam/tpr.js +167 -0
- package/dist/buildParam/tpr.js.map +1 -0
- package/dist/buildParam/tprV2.js +82 -0
- package/dist/buildParam/tprV2.js.map +1 -0
- package/dist/buildParam/tsr.js +149 -0
- package/dist/buildParam/tsr.js.map +1 -0
- package/dist/buildParam/tsrV2.js +110 -0
- package/dist/buildParam/tsrV2.js.map +1 -0
- package/dist/cli.js +10 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/authorisation-v3.js +98 -0
- package/dist/commands/authorisation-v3.js.map +1 -0
- package/dist/commands/authorisation-v4.js +221 -0
- package/dist/commands/authorisation-v4.js.map +1 -0
- package/dist/commands/compute.js +374 -0
- package/dist/commands/compute.js.map +1 -0
- package/dist/commands/conformance-v3.js +745 -0
- package/dist/commands/conformance-v3.js.map +1 -0
- package/dist/commands/conformance-v4.js +767 -0
- package/dist/commands/conformance-v4.js.map +1 -0
- package/dist/commands/index.js +9 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/ledger-v3.js +189 -0
- package/dist/commands/ledger-v3.js.map +1 -0
- package/dist/commands/ledger-v4.js +188 -0
- package/dist/commands/ledger-v4.js.map +1 -0
- package/dist/commands/view.js +62 -0
- package/dist/commands/view.js.map +1 -0
- package/dist/config.js +910 -0
- package/dist/config.js.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/authorisation/authorisation.interface.js +2 -0
- package/dist/interfaces/authorisation/authorisation.interface.js.map +1 -0
- package/dist/interfaces/authorisation/index.js +2 -0
- package/dist/interfaces/authorisation/index.js.map +1 -0
- package/dist/interfaces/context.js +2 -0
- package/dist/interfaces/context.js.map +1 -0
- package/dist/interfaces/index.js +10 -0
- package/dist/interfaces/index.js.map +1 -0
- package/dist/interfaces/ledger/besu.interface.js +2 -0
- package/dist/interfaces/ledger/besu.interface.js.map +1 -0
- package/dist/interfaces/ledger/index.js +2 -0
- package/dist/interfaces/ledger/index.js.map +1 -0
- package/dist/interfaces/notifications/index.js +2 -0
- package/dist/interfaces/notifications/index.js.map +1 -0
- package/dist/interfaces/notifications/notifications.interface.js +2 -0
- package/dist/interfaces/notifications/notifications.interface.js.map +1 -0
- package/dist/interfaces/proxy-data-hub/attributes.interface.js +2 -0
- package/dist/interfaces/proxy-data-hub/attributes.interface.js.map +1 -0
- package/dist/interfaces/proxy-data-hub/index.js +2 -0
- package/dist/interfaces/proxy-data-hub/index.js.map +1 -0
- package/dist/interfaces/shared/index.js +5 -0
- package/dist/interfaces/shared/index.js.map +1 -0
- package/dist/interfaces/shared/jsonrpc.interface.js +2 -0
- package/dist/interfaces/shared/jsonrpc.interface.js.map +1 -0
- package/dist/interfaces/shared/paginated-list.interface.js +2 -0
- package/dist/interfaces/shared/paginated-list.interface.js.map +1 -0
- package/dist/interfaces/shared/unsigned-transaction.interface.js +2 -0
- package/dist/interfaces/shared/unsigned-transaction.interface.js.map +1 -0
- package/dist/interfaces/shared/utils.interface.js +2 -0
- package/dist/interfaces/shared/utils.interface.js.map +1 -0
- package/dist/interfaces/timestamp/hash-algorithms.interface.js +2 -0
- package/dist/interfaces/timestamp/hash-algorithms.interface.js.map +1 -0
- package/dist/interfaces/timestamp/index.js +4 -0
- package/dist/interfaces/timestamp/index.js.map +1 -0
- package/dist/interfaces/timestamp/records.interface.js +2 -0
- package/dist/interfaces/timestamp/records.interface.js.map +1 -0
- package/dist/interfaces/timestamp/timestamps.interface.js +2 -0
- package/dist/interfaces/timestamp/timestamps.interface.js.map +1 -0
- package/dist/interfaces/trusted-apps-registry/apps.interface.js +2 -0
- package/dist/interfaces/trusted-apps-registry/apps.interface.js.map +1 -0
- package/dist/interfaces/trusted-apps-registry/index.js +3 -0
- package/dist/interfaces/trusted-apps-registry/index.js.map +1 -0
- package/dist/interfaces/trusted-apps-registry/policies.interface.js +2 -0
- package/dist/interfaces/trusted-apps-registry/policies.interface.js.map +1 -0
- package/dist/interfaces/trusted-issuers-registry/index.js +2 -0
- package/dist/interfaces/trusted-issuers-registry/index.js.map +1 -0
- package/dist/interfaces/trusted-issuers-registry/issuers.interface.js +2 -0
- package/dist/interfaces/trusted-issuers-registry/issuers.interface.js.map +1 -0
- package/dist/interfaces/users-onboarding/authentication.js +2 -0
- package/dist/interfaces/users-onboarding/authentication.js.map +1 -0
- package/dist/interfaces/users-onboarding/index.js +2 -0
- package/dist/interfaces/users-onboarding/index.js.map +1 -0
- package/dist/programs/appRegistration.js +65 -0
- package/dist/programs/appRegistration.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/utils/Client.js +176 -0
- package/dist/utils/Client.js.map +1 -0
- package/dist/utils/authorisation.js +118 -0
- package/dist/utils/authorisation.js.map +1 -0
- package/dist/utils/http.js +128 -0
- package/dist/utils/http.js.map +1 -0
- package/dist/utils/index.js +10 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/jsonrpc.js +33 -0
- package/dist/utils/jsonrpc.js.map +1 -0
- package/dist/utils/notification.js +51 -0
- package/dist/utils/notification.js.map +1 -0
- package/dist/utils/print.js +57 -0
- package/dist/utils/print.js.map +1 -0
- package/dist/utils/storage.js +97 -0
- package/dist/utils/storage.js.map +1 -0
- package/dist/utils/utils.js +161 -0
- package/dist/utils/utils.js.map +1 -0
- package/dist/utils/verifiablePresentation.js +43 -0
- package/dist/utils/verifiablePresentation.js.map +1 -0
- package/package.json +113 -0
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import axios from "axios";
|
|
2
|
+
import https from "https";
|
|
3
|
+
import chalk from "chalk";
|
|
4
|
+
import FormData from "form-data";
|
|
5
|
+
import * as httpsProxyAgent from "https-proxy-agent";
|
|
6
|
+
import * as dotenv from "dotenv";
|
|
7
|
+
import { print } from "./print.js";
|
|
8
|
+
dotenv.config();
|
|
9
|
+
export function isStreaming(opts) {
|
|
10
|
+
return opts && opts.responseType === "stream";
|
|
11
|
+
}
|
|
12
|
+
export function printResponse(response, iniTime, options) {
|
|
13
|
+
const color = response.status < 400 ? chalk.green : chalk.red;
|
|
14
|
+
const colorBold = response.status < 400 ? chalk.green.bold : chalk.red.bold;
|
|
15
|
+
print(color, `\n${Date.now() - iniTime} milliseconds`);
|
|
16
|
+
print(colorBold, `Response HTTP Status ${response.status}`);
|
|
17
|
+
print(chalk.gray, response.headers);
|
|
18
|
+
print(color, "Data:");
|
|
19
|
+
if (!isStreaming(options))
|
|
20
|
+
print(color, response.data);
|
|
21
|
+
}
|
|
22
|
+
function isResolvingToIP(url) {
|
|
23
|
+
return (new URL(url).host === process.env.HTTP_RESOLVE_HOST &&
|
|
24
|
+
process.env.HTTP_RESOLVE_IP);
|
|
25
|
+
}
|
|
26
|
+
function getResolveDetails(url) {
|
|
27
|
+
if (!isResolvingToIP(url))
|
|
28
|
+
return "";
|
|
29
|
+
return `--resolve ${process.env.HTTP_RESOLVE_HOST}:${process.env.HTTP_RESOLVE_IP}`;
|
|
30
|
+
}
|
|
31
|
+
async function useAxios(method, url, data, opts) {
|
|
32
|
+
const iniTime = Date.now();
|
|
33
|
+
let url2 = url;
|
|
34
|
+
let resolvingToIP = false;
|
|
35
|
+
if (isResolvingToIP(url)) {
|
|
36
|
+
url2 = url.replace(process.env.HTTP_RESOLVE_HOST, process.env.HTTP_RESOLVE_IP);
|
|
37
|
+
if (opts && opts.headers) {
|
|
38
|
+
// eslint-disable-next-line no-param-reassign
|
|
39
|
+
opts.headers.Host = process.env.HTTP_RESOLVE_HOST;
|
|
40
|
+
}
|
|
41
|
+
resolvingToIP = true;
|
|
42
|
+
}
|
|
43
|
+
try {
|
|
44
|
+
const response = await axios({
|
|
45
|
+
method,
|
|
46
|
+
url: url2,
|
|
47
|
+
data,
|
|
48
|
+
proxy: false,
|
|
49
|
+
...(resolvingToIP && {
|
|
50
|
+
headers: {
|
|
51
|
+
Host: process.env.HTTP_RESOLVE_HOST,
|
|
52
|
+
},
|
|
53
|
+
}),
|
|
54
|
+
httpsAgent: new https.Agent({
|
|
55
|
+
rejectUnauthorized: false,
|
|
56
|
+
...(resolvingToIP && {
|
|
57
|
+
servername: process.env.HTTP_RESOLVE_HOST,
|
|
58
|
+
}),
|
|
59
|
+
}),
|
|
60
|
+
...(process.env.PROXY && {
|
|
61
|
+
httpsAgent: new httpsProxyAgent.HttpsProxyAgent(process.env.PROXY),
|
|
62
|
+
}),
|
|
63
|
+
validateStatus: (status) => {
|
|
64
|
+
return status >= 200 && status <= 302;
|
|
65
|
+
},
|
|
66
|
+
maxRedirects: 0,
|
|
67
|
+
...opts,
|
|
68
|
+
});
|
|
69
|
+
printResponse(response, iniTime, opts);
|
|
70
|
+
return response;
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
const axiosError = error;
|
|
74
|
+
if (axiosError.isAxiosError && axiosError.response) {
|
|
75
|
+
printResponse(axiosError.response, iniTime, opts);
|
|
76
|
+
if (isStreaming(opts))
|
|
77
|
+
return axiosError.response;
|
|
78
|
+
const { data: dataR, status } = axiosError.response;
|
|
79
|
+
const dataString = typeof dataR === "string" ? dataR : JSON.stringify(dataR);
|
|
80
|
+
const message = `Request failed with status code ${status}: ${dataString}`;
|
|
81
|
+
throw new Error(message);
|
|
82
|
+
}
|
|
83
|
+
print(chalk.red, error.message);
|
|
84
|
+
throw error;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
export const httpCall = {
|
|
88
|
+
get: async (url, options = {}) => {
|
|
89
|
+
print(chalk.blue.bold, `GET ${url} ${getResolveDetails(url)}`);
|
|
90
|
+
print(chalk.gray, options);
|
|
91
|
+
return useAxios("GET", url, null, options);
|
|
92
|
+
},
|
|
93
|
+
post: async (url, data, options = {}) => {
|
|
94
|
+
print(chalk.blue.bold, `POST ${url} ${getResolveDetails(url)}`);
|
|
95
|
+
print(chalk.gray, options);
|
|
96
|
+
print(chalk.blue, "Data:");
|
|
97
|
+
if (data instanceof FormData) {
|
|
98
|
+
print(chalk.blue, `${
|
|
99
|
+
// eslint-disable-next-line no-underscore-dangle
|
|
100
|
+
data._streams[0]}\n... binary data ...`);
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
print(chalk.blue, data);
|
|
104
|
+
}
|
|
105
|
+
return useAxios("POST", url, data, options);
|
|
106
|
+
},
|
|
107
|
+
put: async (url, data, options = {}) => {
|
|
108
|
+
print(chalk.blue.bold, `PUT ${url} ${getResolveDetails(url)}`);
|
|
109
|
+
print(chalk.gray, options);
|
|
110
|
+
print(chalk.blue, "Data:");
|
|
111
|
+
print(chalk.blue, data);
|
|
112
|
+
return useAxios("PUT", url, data, options);
|
|
113
|
+
},
|
|
114
|
+
patch: async (url, data, options = {}) => {
|
|
115
|
+
print(chalk.blue.bold, `PATCH ${url} ${getResolveDetails(url)}`);
|
|
116
|
+
print(chalk.gray, options);
|
|
117
|
+
print(chalk.blue, "Data:");
|
|
118
|
+
print(chalk.blue, data);
|
|
119
|
+
return useAxios("PATCH", url, data, options);
|
|
120
|
+
},
|
|
121
|
+
delete: async (url, options = {}) => {
|
|
122
|
+
print(chalk.blue.bold, `DELETE ${url} ${getResolveDetails(url)}`);
|
|
123
|
+
print(chalk.gray, options);
|
|
124
|
+
return useAxios("DELETE", url, null, options);
|
|
125
|
+
},
|
|
126
|
+
};
|
|
127
|
+
export default httpCall;
|
|
128
|
+
//# sourceMappingURL=http.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/utils/http.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export * from "./notification.js";
|
|
2
|
+
export * from "./http.js";
|
|
3
|
+
export * from "./storage.js";
|
|
4
|
+
export * from "./print.js";
|
|
5
|
+
export * from "./authorisation.js";
|
|
6
|
+
export * from "./jsonrpc.js";
|
|
7
|
+
export * from "./utils.js";
|
|
8
|
+
export * from "./Client.js";
|
|
9
|
+
export * from "./verifiablePresentation.js";
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,6BAA6B,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ethers } from "ethers";
|
|
2
|
+
export function jsonrpcBody(method, params) {
|
|
3
|
+
return {
|
|
4
|
+
jsonrpc: "2.0",
|
|
5
|
+
method,
|
|
6
|
+
params,
|
|
7
|
+
id: Math.ceil(Math.random() * 1000),
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
export function formatEthersUnsignedTransaction(unsignedTransaction) {
|
|
11
|
+
const chainId = Number(unsignedTransaction.chainId);
|
|
12
|
+
return {
|
|
13
|
+
to: unsignedTransaction.to,
|
|
14
|
+
data: unsignedTransaction.data,
|
|
15
|
+
value: unsignedTransaction.value,
|
|
16
|
+
nonce: Number(unsignedTransaction.nonce),
|
|
17
|
+
chainId: Number.isNaN(chainId) ? undefined : chainId,
|
|
18
|
+
gasLimit: unsignedTransaction.gasLimit,
|
|
19
|
+
gasPrice: unsignedTransaction.gasPrice,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export function paramSignedTransaction(tx, sgnTx) {
|
|
23
|
+
const { r, s, v } = ethers.utils.parseTransaction(sgnTx);
|
|
24
|
+
return {
|
|
25
|
+
protocol: "eth",
|
|
26
|
+
unsignedTransaction: tx,
|
|
27
|
+
r,
|
|
28
|
+
s,
|
|
29
|
+
v: `0x${Number(v).toString(16)}`,
|
|
30
|
+
signedRawTransaction: sgnTx,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=jsonrpc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonrpc.js","sourceRoot":"","sources":["../../src/utils/jsonrpc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,MAAM,UAAU,WAAW,CAAC,MAAc,EAAE,MAAiB;IAC3D,OAAO;QACL,OAAO,EAAE,KAAK;QACd,MAAM;QACN,MAAM;QACN,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;KACpC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC7C,mBAA+C;IAE/C,MAAM,OAAO,GAAG,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACpD,OAAO;QACL,EAAE,EAAE,mBAAmB,CAAC,EAAE;QAC1B,IAAI,EAAE,mBAAmB,CAAC,IAAI;QAC9B,KAAK,EAAE,mBAAmB,CAAC,KAAK;QAChC,KAAK,EAAE,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC;QACxC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO;QACpD,QAAQ,EAAE,mBAAmB,CAAC,QAAQ;QACtC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ;KACvC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,EAAsB,EACtB,KAAa;IAEb,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACzD,OAAO;QACL,QAAQ,EAAE,KAAK;QACf,mBAAmB,EAAE,EAAE;QACvB,CAAC;QACD,CAAC;QACD,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;QAChC,oBAAoB,EAAE,KAAK;KAC5B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { importJWK, SignJWT } from "jose";
|
|
2
|
+
import { detachJwt } from "./utils.js";
|
|
3
|
+
export async function createNotification(client, to, payload, type) {
|
|
4
|
+
const ttl = 3600;
|
|
5
|
+
const now = Date.now();
|
|
6
|
+
let alg;
|
|
7
|
+
if (client.keys.ES256K)
|
|
8
|
+
alg = "ES256K";
|
|
9
|
+
else if (client.keys.ES256)
|
|
10
|
+
alg = "ES256";
|
|
11
|
+
else if (client.keys.RS256)
|
|
12
|
+
alg = "RS256";
|
|
13
|
+
else if (client.keys.EdDSA)
|
|
14
|
+
alg = "EdDSA";
|
|
15
|
+
else
|
|
16
|
+
throw new Error("no user defined");
|
|
17
|
+
if (!client.keys[alg])
|
|
18
|
+
throw new Error(`There is no key defined for alg ${alg}`);
|
|
19
|
+
const privateKey = await importJWK(client.keys[alg].privateKeyJwk, alg);
|
|
20
|
+
const jwt = await new SignJWT(payload)
|
|
21
|
+
.setProtectedHeader({
|
|
22
|
+
alg,
|
|
23
|
+
typ: "JWT",
|
|
24
|
+
kid: client.keys[alg].kid,
|
|
25
|
+
})
|
|
26
|
+
.setIssuer(client.did)
|
|
27
|
+
.sign(privateKey);
|
|
28
|
+
return {
|
|
29
|
+
schemaId: "notifications-001",
|
|
30
|
+
type: ["Notification", type],
|
|
31
|
+
"@context": [
|
|
32
|
+
"https://www.w3.org/2018/credentials/v1",
|
|
33
|
+
"https://essif.europa.eu/schemas/vc/2020/v1",
|
|
34
|
+
"https://essif.europa.eu/schemas/notifications/2020/v1",
|
|
35
|
+
],
|
|
36
|
+
from: client.did,
|
|
37
|
+
to,
|
|
38
|
+
issuanceDate: new Date(now).toISOString(),
|
|
39
|
+
expirationDate: new Date(now + ttl * 1000).toISOString(),
|
|
40
|
+
payload,
|
|
41
|
+
proof: {
|
|
42
|
+
type: "EcdsaSecp256k1Signature2019",
|
|
43
|
+
created: new Date(now).toISOString(),
|
|
44
|
+
proofPurpose: "assertionMethod",
|
|
45
|
+
verificationMethod: client.keys[alg].kid,
|
|
46
|
+
jws: detachJwt(jwt),
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
export default createNotification;
|
|
51
|
+
//# sourceMappingURL=notification.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notification.js","sourceRoot":"","sources":["../../src/utils/notification.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAIvC,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAc,EACd,EAAU,EACV,OAAsB,EACtB,IAAY;IAEZ,MAAM,GAAG,GAAG,IAAI,CAAC;IACjB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,IAAI,GAAQ,CAAC;IACb,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM;QAAE,GAAG,GAAG,QAAQ,CAAC;SAClC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK;QAAE,GAAG,GAAG,OAAO,CAAC;SACrC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK;QAAE,GAAG,GAAG,OAAO,CAAC;SACrC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK;QAAE,GAAG,GAAG,OAAO,CAAC;;QACrC,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAExC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,mCAAmC,GAAG,EAAE,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;IACxE,MAAM,GAAG,GAAG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;SACnC,kBAAkB,CAAC;QAClB,GAAG;QACH,GAAG,EAAE,KAAK;QACV,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG;KAC1B,CAAC;SACD,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC;SACrB,IAAI,CAAC,UAAU,CAAC,CAAC;IAEpB,OAAO;QACL,QAAQ,EAAE,mBAAmB;QAC7B,IAAI,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC;QAC5B,UAAU,EAAE;YACV,wCAAwC;YACxC,4CAA4C;YAC5C,uDAAuD;SACxD;QACD,IAAI,EAAE,MAAM,CAAC,GAAG;QAChB,EAAE;QACF,YAAY,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;QACzC,cAAc,EAAE,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE;QACxD,OAAO;QACP,KAAK,EAAE;YACL,IAAI,EAAE,6BAA6B;YACnC,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;YACpC,YAAY,EAAE,iBAAiB;YAC/B,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG;YACxC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC;SACpB;KACF,CAAC;AACJ,CAAC;AAED,eAAe,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import * as dotenv from "dotenv";
|
|
3
|
+
dotenv.config();
|
|
4
|
+
const noChalk = process.env.NO_CHALK === "true";
|
|
5
|
+
export function print(theme, data) {
|
|
6
|
+
if (process.env.NO_HTTP_LOGS === "true")
|
|
7
|
+
return;
|
|
8
|
+
let dataString;
|
|
9
|
+
if (typeof data === "string") {
|
|
10
|
+
dataString = data;
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
try {
|
|
14
|
+
dataString = JSON.stringify(data, null, 2);
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
console.log(data);
|
|
18
|
+
console.log("Error when trying to stringify the previous object");
|
|
19
|
+
throw error;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
if (noChalk)
|
|
23
|
+
console.log(dataString);
|
|
24
|
+
else
|
|
25
|
+
console.log(theme(dataString));
|
|
26
|
+
}
|
|
27
|
+
export function red(data) {
|
|
28
|
+
print(chalk.red, data);
|
|
29
|
+
}
|
|
30
|
+
export function redBold(data) {
|
|
31
|
+
print(chalk.red, data);
|
|
32
|
+
}
|
|
33
|
+
export function green(data) {
|
|
34
|
+
print(chalk.green, data);
|
|
35
|
+
}
|
|
36
|
+
export function greenBold(data) {
|
|
37
|
+
print(chalk.green, data);
|
|
38
|
+
}
|
|
39
|
+
export function blue(data) {
|
|
40
|
+
print(chalk.blue, data);
|
|
41
|
+
}
|
|
42
|
+
export function blueBold(data) {
|
|
43
|
+
print(chalk.blue, data);
|
|
44
|
+
}
|
|
45
|
+
export function yellow(data) {
|
|
46
|
+
print(chalk.yellow, data);
|
|
47
|
+
}
|
|
48
|
+
export function yellowBold(data) {
|
|
49
|
+
print(chalk.yellow, data);
|
|
50
|
+
}
|
|
51
|
+
export function cyan(data) {
|
|
52
|
+
print(chalk.cyan, data);
|
|
53
|
+
}
|
|
54
|
+
export function cyanBold(data) {
|
|
55
|
+
print(chalk.cyan.bold, data);
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=print.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"print.js","sourceRoot":"","sources":["../../src/utils/print.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC,MAAM,CAAC,MAAM,EAAE,CAAC;AAChB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,CAAC;AAEhD,MAAM,UAAU,KAAK,CAAC,KAAkB,EAAE,IAAa;IACrD,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,MAAM;QAAE,OAAO;IAChD,IAAI,UAAkB,CAAC;IACvB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QAC5B,UAAU,GAAG,IAAI,CAAC;KACnB;SAAM;QACL,IAAI;YACF,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;SAC5C;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;YAClE,MAAM,KAAK,CAAC;SACb;KACF;IACD,IAAI,OAAO;QAAE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;;QAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,IAAa;IAC/B,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,IAAa;IACnC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,IAAa;IACjC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAa;IACrC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,IAAa;IAChC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAa;IACpC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,IAAa;IAClC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAa;IACtC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,IAAa;IAChC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAa;IACpC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import crypto from "node:crypto";
|
|
2
|
+
import fs from "fs";
|
|
3
|
+
import Joi from "joi";
|
|
4
|
+
import FormData from "form-data";
|
|
5
|
+
import { httpCall } from "./http.js";
|
|
6
|
+
import { red } from "./print.js";
|
|
7
|
+
export function fileController(httpOpts, url, method, inputs) {
|
|
8
|
+
switch (method) {
|
|
9
|
+
case "insert": {
|
|
10
|
+
const [inputFilename, inputMetadata] = inputs;
|
|
11
|
+
Joi.assert(inputFilename, Joi.string().optional());
|
|
12
|
+
Joi.assert(inputMetadata, Joi.object().optional());
|
|
13
|
+
const filename = inputFilename || `test-${crypto.randomBytes(5).toString("hex")}.bin`;
|
|
14
|
+
const filedata = inputFilename
|
|
15
|
+
? fs.readFileSync(filename)
|
|
16
|
+
: crypto.randomBytes(50);
|
|
17
|
+
const metadata = typeof inputMetadata === "object"
|
|
18
|
+
? inputMetadata
|
|
19
|
+
: { test: crypto.randomBytes(12).toString("hex") };
|
|
20
|
+
const form = new FormData();
|
|
21
|
+
form.append("file", filedata, filename);
|
|
22
|
+
form.append("metadata", JSON.stringify(metadata));
|
|
23
|
+
const options = {
|
|
24
|
+
headers: {
|
|
25
|
+
post: form.getHeaders(),
|
|
26
|
+
...httpOpts.headers,
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
return httpCall.post(`${url}/stores/distributed/files`, form, options);
|
|
30
|
+
}
|
|
31
|
+
case "patch": {
|
|
32
|
+
const [hash, inputPatchOps] = inputs;
|
|
33
|
+
Joi.assert(hash, Joi.string());
|
|
34
|
+
Joi.assert(inputPatchOps, Joi.array().optional());
|
|
35
|
+
const patchOps = Array.isArray(inputPatchOps)
|
|
36
|
+
? inputPatchOps
|
|
37
|
+
: [
|
|
38
|
+
{
|
|
39
|
+
op: "replace",
|
|
40
|
+
path: "/metadata",
|
|
41
|
+
value: {
|
|
42
|
+
test: crypto.randomBytes(12).toString("hex"),
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
];
|
|
46
|
+
return httpCall.patch(`${url}/stores/distributed/files/${hash}`, patchOps, {
|
|
47
|
+
headers: {
|
|
48
|
+
"Content-Type": "application/json-patch+json",
|
|
49
|
+
...httpOpts.headers,
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
case "delete": {
|
|
54
|
+
const [hash] = inputs;
|
|
55
|
+
Joi.assert(hash, Joi.string());
|
|
56
|
+
return httpCall.delete(`${url}/stores/distributed/files/${hash}`, httpOpts);
|
|
57
|
+
}
|
|
58
|
+
default:
|
|
59
|
+
red(`Invalid method '${method}'`);
|
|
60
|
+
return Promise.resolve(0);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
export function keyValueController(httpOpts, url, method, inputs) {
|
|
64
|
+
switch (method) {
|
|
65
|
+
case "insert":
|
|
66
|
+
case "update": {
|
|
67
|
+
const [key, value] = inputs;
|
|
68
|
+
Joi.assert(key, Joi.string().optional());
|
|
69
|
+
Joi.assert(value, Joi.string().optional());
|
|
70
|
+
const options = {
|
|
71
|
+
headers: {
|
|
72
|
+
"Content-Type": "text/plain",
|
|
73
|
+
...httpOpts.headers,
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
return httpCall.put(`${url}/stores/distributed/key-values/${key}`, value, options);
|
|
77
|
+
}
|
|
78
|
+
case "delete": {
|
|
79
|
+
const [hash] = inputs;
|
|
80
|
+
Joi.assert(hash, Joi.string());
|
|
81
|
+
return httpCall.delete(`${url}/stores/distributed/key-values/${hash}`, httpOpts);
|
|
82
|
+
}
|
|
83
|
+
default:
|
|
84
|
+
red(`Invalid method '${method}'`);
|
|
85
|
+
return Promise.resolve(0);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
export function jsonrpcStorage(httpOpts, url, params) {
|
|
89
|
+
const body = {
|
|
90
|
+
jsonrpc: "2.0",
|
|
91
|
+
method: "cassandra_call",
|
|
92
|
+
params,
|
|
93
|
+
id: Math.ceil(Math.random() * 1000),
|
|
94
|
+
};
|
|
95
|
+
return httpCall.post(`${url}/stores/distributed/jsonrpc`, body, httpOpts);
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/utils/storage.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,QAAQ,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAEjC,MAAM,UAAU,cAAc,CAC5B,QAA8C,EAC9C,GAAW,EACX,MAAc,EACd,MAAkC;IAElC,QAAQ,MAAM,EAAE;QACd,KAAK,QAAQ,CAAC,CAAC;YACb,MAAM,CAAC,aAAa,EAAE,aAAa,CAAC,GAAG,MAAiC,CAAC;YACzE,GAAG,CAAC,MAAM,CAAC,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;YACnD,GAAG,CAAC,MAAM,CAAC,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;YACnD,MAAM,QAAQ,GACZ,aAAa,IAAI,QAAQ,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;YACvE,MAAM,QAAQ,GAAG,aAAa;gBAC5B,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC;gBAC3B,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YAC3B,MAAM,QAAQ,GACZ,OAAO,aAAa,KAAK,QAAQ;gBAC/B,CAAC,CAAC,aAAa;gBACf,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAEvD,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACxC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;YAClD,MAAM,OAAO,GAAG;gBACd,OAAO,EAAE;oBACP,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE;oBACvB,GAAG,QAAQ,CAAC,OAAO;iBACpB;aACF,CAAC;YACF,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG,2BAA2B,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;SACxE;QACD,KAAK,OAAO,CAAC,CAAC;YACZ,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,GAAG,MAAmC,CAAC;YAClE,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YAC/B,GAAG,CAAC,MAAM,CAAC,aAAa,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;YAClD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;gBAC3C,CAAC,CAAC,aAAa;gBACf,CAAC,CAAC;oBACE;wBACE,EAAE,EAAE,SAAS;wBACb,IAAI,EAAE,WAAW;wBACjB,KAAK,EAAE;4BACL,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;yBAC7C;qBACF;iBACF,CAAC;YACN,OAAO,QAAQ,CAAC,KAAK,CACnB,GAAG,GAAG,6BAA6B,IAAI,EAAE,EACzC,QAAQ,EACR;gBACE,OAAO,EAAE;oBACP,cAAc,EAAE,6BAA6B;oBAC7C,GAAG,QAAQ,CAAC,OAAO;iBACpB;aACF,CACF,CAAC;SACH;QACD,KAAK,QAAQ,CAAC,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,GAAG,MAAkB,CAAC;YAClC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YAC/B,OAAO,QAAQ,CAAC,MAAM,CACpB,GAAG,GAAG,6BAA6B,IAAI,EAAE,EACzC,QAAQ,CACT,CAAC;SACH;QACD;YACE,GAAG,CAAC,mBAAmB,MAAM,GAAG,CAAC,CAAC;YAClC,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;KAC7B;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,QAA8C,EAC9C,GAAW,EACX,MAAc,EACd,MAAkC;IAElC,QAAQ,MAAM,EAAE;QACd,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ,CAAC,CAAC;YACb,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,MAAkB,CAAC;YACxC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;YACzC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC3C,MAAM,OAAO,GAAG;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,YAAY;oBAC5B,GAAG,QAAQ,CAAC,OAAO;iBACpB;aACF,CAAC;YACF,OAAO,QAAQ,CAAC,GAAG,CACjB,GAAG,GAAG,kCAAkC,GAAG,EAAE,EAC7C,KAAK,EACL,OAAO,CACR,CAAC;SACH;QACD,KAAK,QAAQ,CAAC,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,GAAG,MAAkB,CAAC;YAClC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YAC/B,OAAO,QAAQ,CAAC,MAAM,CACpB,GAAG,GAAG,kCAAkC,IAAI,EAAE,EAC9C,QAAQ,CACT,CAAC;SACH;QACD;YACE,GAAG,CAAC,mBAAmB,MAAM,GAAG,CAAC,CAAC;YAClC,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;KAC7B;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,QAA8C,EAC9C,GAAW,EACX,MAAiB;IAEjB,MAAM,IAAI,GAAG;QACX,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,gBAAgB;QACxB,MAAM;QACN,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;KACpC,CAAC;IACF,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG,6BAA6B,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC5E,CAAC"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import crypto from "node:crypto";
|
|
2
|
+
import Joi from "joi";
|
|
3
|
+
import elliptic from "elliptic";
|
|
4
|
+
import { base64url } from "multiformats/bases/base64";
|
|
5
|
+
import { bases } from "multiformats/basics";
|
|
6
|
+
import $RefParser from "@apidevtools/json-schema-ref-parser";
|
|
7
|
+
import canonicalize from "canonicalize";
|
|
8
|
+
import { base16 } from "multiformats/bases/base16";
|
|
9
|
+
import { base58btc } from "multiformats/bases/base58";
|
|
10
|
+
const EC = elliptic.ec;
|
|
11
|
+
const serialize = canonicalize;
|
|
12
|
+
export function prefixWith0x(key) {
|
|
13
|
+
return key.startsWith("0x") ? key : `0x${key}`;
|
|
14
|
+
}
|
|
15
|
+
export function removePrefix0x(key) {
|
|
16
|
+
return key.startsWith("0x") ? key.slice(2) : key;
|
|
17
|
+
}
|
|
18
|
+
export function fromHexString(hexString) {
|
|
19
|
+
return Buffer.from(removePrefix0x(hexString), "hex");
|
|
20
|
+
}
|
|
21
|
+
export function toHexString(bytes) {
|
|
22
|
+
return bytes.reduce((str, byte) => str + byte.toString(16).padStart(2, "0"), "");
|
|
23
|
+
}
|
|
24
|
+
export function getPublicKeyJwk(hex) {
|
|
25
|
+
const ec = new EC("secp256k1");
|
|
26
|
+
const publicKey = ec
|
|
27
|
+
.keyFromPublic(Buffer.from(hex.replace("0x", ""), "hex"))
|
|
28
|
+
.getPublic();
|
|
29
|
+
return {
|
|
30
|
+
kty: "EC",
|
|
31
|
+
crv: "secp256k1",
|
|
32
|
+
x: base64url.baseEncode(Buffer.from(publicKey.getX().toString("hex", 64), "hex")),
|
|
33
|
+
y: base64url.baseEncode(Buffer.from(publicKey.getY().toString("hex", 64), "hex")),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
export function getPublicKeyHex(jwk) {
|
|
37
|
+
if (jwk.crv === "secp256k1") {
|
|
38
|
+
const ec = new EC("secp256k1");
|
|
39
|
+
const publicKey = ec.keyFromPublic({
|
|
40
|
+
x: Buffer.from(base64url.baseDecode(jwk.x)).toString("hex"),
|
|
41
|
+
y: Buffer.from(base64url.baseDecode(jwk.y)).toString("hex"),
|
|
42
|
+
});
|
|
43
|
+
return `0x${publicKey.getPublic().encode("hex", false)}`;
|
|
44
|
+
}
|
|
45
|
+
return `0x${Buffer.from(JSON.stringify(jwk)).toString("hex")}`;
|
|
46
|
+
}
|
|
47
|
+
function removeAnnotations(obj) {
|
|
48
|
+
/**
|
|
49
|
+
* Lists of annotations keywords:
|
|
50
|
+
* - https://json-schema.org/draft/2020-12/json-schema-validation.html#rfc.section.9
|
|
51
|
+
* - https://json-schema.org/draft/2019-09/json-schema-validation.html#rfc.section.9
|
|
52
|
+
* - https://json-schema.org/draft-07/json-schema-validation.html#rfc.section.10
|
|
53
|
+
*/
|
|
54
|
+
const keysToRemove = [
|
|
55
|
+
"title",
|
|
56
|
+
"description",
|
|
57
|
+
"default",
|
|
58
|
+
"deprecated",
|
|
59
|
+
"readOnly",
|
|
60
|
+
"writeOnly",
|
|
61
|
+
"examples",
|
|
62
|
+
];
|
|
63
|
+
return JSON.parse(JSON.stringify(obj, (key, val) => keysToRemove.includes(key) ? undefined : val));
|
|
64
|
+
}
|
|
65
|
+
export async function computeSchemaId(schema, base = "base58btc") {
|
|
66
|
+
// 1. Bundle schema
|
|
67
|
+
const bundledSchema = await $RefParser.bundle(schema);
|
|
68
|
+
// 2. Remove annotations
|
|
69
|
+
const sanitizedDocument = removeAnnotations(bundledSchema);
|
|
70
|
+
// 3. Canonicalise
|
|
71
|
+
const canonicalizedDocument = serialize(sanitizedDocument);
|
|
72
|
+
// 4. Compute sha256 of the stringified JSON document
|
|
73
|
+
const hash = crypto
|
|
74
|
+
.createHash("sha256")
|
|
75
|
+
.update(JSON.stringify(canonicalizedDocument), "utf-8")
|
|
76
|
+
.digest();
|
|
77
|
+
// 5. encode hash in base16
|
|
78
|
+
if (base === "base16") {
|
|
79
|
+
return `0x${base16.baseEncode(hash)}`;
|
|
80
|
+
}
|
|
81
|
+
return base58btc.encode(hash);
|
|
82
|
+
}
|
|
83
|
+
export function isResponseFile(response) {
|
|
84
|
+
const resp = response;
|
|
85
|
+
if (resp.headers["content-disposition"] &&
|
|
86
|
+
resp.headers["content-disposition"].includes("attachment; filename="))
|
|
87
|
+
return true;
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
export function multibaseEncode(base, input) {
|
|
91
|
+
const buffer = typeof input === "string" ? fromHexString(input) : input;
|
|
92
|
+
return bases[base].encode(buffer).toString();
|
|
93
|
+
}
|
|
94
|
+
export function detachJwt(jwt) {
|
|
95
|
+
const parts = jwt.split(".");
|
|
96
|
+
return `${parts[0]}..${parts[2]}`;
|
|
97
|
+
}
|
|
98
|
+
export const JoiHash = Joi.string().pattern(/^(0x)?[0-9a-fA-F]{64,64}$/);
|
|
99
|
+
export const JoiHexadecimal = Joi.string().pattern(/^(0x)?[0-9a-fA-F]+$/);
|
|
100
|
+
export function extractJSONChars(str, chars) {
|
|
101
|
+
const [charIni, charEnd] = chars;
|
|
102
|
+
const start = str.indexOf(` ${charIni}`);
|
|
103
|
+
let end = str.lastIndexOf(charEnd) + 1;
|
|
104
|
+
if (start < 0 || end === 0)
|
|
105
|
+
return null;
|
|
106
|
+
while (end > start + 1) {
|
|
107
|
+
const candidate = str.substring(start, end);
|
|
108
|
+
try {
|
|
109
|
+
return {
|
|
110
|
+
json: JSON.parse(candidate),
|
|
111
|
+
start,
|
|
112
|
+
end,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
catch (e) {
|
|
116
|
+
// empty
|
|
117
|
+
}
|
|
118
|
+
end = str.substr(0, end - 1).lastIndexOf(charEnd) + 1;
|
|
119
|
+
}
|
|
120
|
+
throw new Error("JSON can not be parsed");
|
|
121
|
+
}
|
|
122
|
+
export function extractJSON(str) {
|
|
123
|
+
const ini1 = str.indexOf("{");
|
|
124
|
+
const ini2 = str.indexOf("[");
|
|
125
|
+
if (ini1 < 0)
|
|
126
|
+
return extractJSONChars(str, "[]");
|
|
127
|
+
if (ini2 < 0)
|
|
128
|
+
return extractJSONChars(str, "{}");
|
|
129
|
+
if (ini1 < ini2)
|
|
130
|
+
return extractJSONChars(str, "{}");
|
|
131
|
+
return extractJSONChars(str, "[]");
|
|
132
|
+
}
|
|
133
|
+
export function getWords(str) {
|
|
134
|
+
const preWords = str.split(" ").filter((word) => word !== "");
|
|
135
|
+
let hasComments = false;
|
|
136
|
+
const words = [];
|
|
137
|
+
preWords.forEach((word) => {
|
|
138
|
+
if (word.startsWith("#"))
|
|
139
|
+
hasComments = true;
|
|
140
|
+
if (!hasComments)
|
|
141
|
+
words.push(word);
|
|
142
|
+
});
|
|
143
|
+
return { words, hasComments };
|
|
144
|
+
}
|
|
145
|
+
export function parseLine(s) {
|
|
146
|
+
const parts = [];
|
|
147
|
+
let str = s;
|
|
148
|
+
// eslint-disable-next-line no-constant-condition
|
|
149
|
+
while (true) {
|
|
150
|
+
const resJson = extractJSON(str);
|
|
151
|
+
const strAux = resJson ? str.substring(0, resJson.start) : str;
|
|
152
|
+
const resWords = getWords(strAux);
|
|
153
|
+
parts.push(...resWords.words);
|
|
154
|
+
if (!resJson || resWords.hasComments)
|
|
155
|
+
break;
|
|
156
|
+
parts.push(resJson.json);
|
|
157
|
+
str = str.substring(resJson.end);
|
|
158
|
+
}
|
|
159
|
+
return parts;
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { createVerifiablePresentationJwt, } from "@cef-ebsi/verifiable-presentation";
|
|
3
|
+
export async function createVPJwt(client, alg, vc, audience, config) {
|
|
4
|
+
const keys = client.keys[alg];
|
|
5
|
+
if (!keys)
|
|
6
|
+
throw new Error(`No keys defined for alg ${alg}`);
|
|
7
|
+
const issuer = {
|
|
8
|
+
did: client.did,
|
|
9
|
+
kid: keys.kid,
|
|
10
|
+
privateKeyJwk: keys.privateKeyJwk,
|
|
11
|
+
publicKeyJwk: keys.publicKeyJwk,
|
|
12
|
+
alg: alg,
|
|
13
|
+
};
|
|
14
|
+
let verifiableCredential;
|
|
15
|
+
if (vc === "empty") {
|
|
16
|
+
verifiableCredential = [];
|
|
17
|
+
}
|
|
18
|
+
else if (Array.isArray(vc)) {
|
|
19
|
+
verifiableCredential = vc;
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
verifiableCredential = [vc];
|
|
23
|
+
}
|
|
24
|
+
const payload = {
|
|
25
|
+
id: `urn:did:${randomUUID()}`,
|
|
26
|
+
"@context": ["https://www.w3.org/2018/credentials/v1"],
|
|
27
|
+
type: ["VerifiablePresentation"],
|
|
28
|
+
holder: client.did,
|
|
29
|
+
verifiableCredential,
|
|
30
|
+
};
|
|
31
|
+
const jwtVp = await createVerifiablePresentationJwt(payload, issuer, audience, {
|
|
32
|
+
skipValidation: true,
|
|
33
|
+
ebsiAuthority: config.domain
|
|
34
|
+
.replace("http://", "")
|
|
35
|
+
.replace("https://", ""),
|
|
36
|
+
nonce: randomUUID(),
|
|
37
|
+
exp: Math.floor(Date.now() / 1000) + 900,
|
|
38
|
+
nbf: Math.floor(Date.now() / 1000) - 100,
|
|
39
|
+
});
|
|
40
|
+
return { jwtVp, payload };
|
|
41
|
+
}
|
|
42
|
+
export default createVPJwt;
|
|
43
|
+
//# sourceMappingURL=verifiablePresentation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verifiablePresentation.js","sourceRoot":"","sources":["../../src/utils/verifiablePresentation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAGL,+BAA+B,GAChC,MAAM,mCAAmC,CAAC;AAK3C,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAAc,EACd,GAAQ,EACR,EAAqB,EACrB,QAAgB,EAChB,MAAc;IAEd,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,EAAE,CAAC,CAAC;IAE7D,MAAM,MAAM,GAAe;QACzB,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,GAAG,EAAE,GAAe;KACrB,CAAC;IAEF,IAAI,oBAA8B,CAAC;IACnC,IAAI,EAAE,KAAK,OAAO,EAAE;QAClB,oBAAoB,GAAG,EAAE,CAAC;KAC3B;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;QAC5B,oBAAoB,GAAG,EAAE,CAAC;KAC3B;SAAM;QACL,oBAAoB,GAAG,CAAC,EAAE,CAAC,CAAC;KAC7B;IAED,MAAM,OAAO,GAAG;QACd,EAAE,EAAE,WAAW,UAAU,EAAE,EAAE;QAC7B,UAAU,EAAE,CAAC,wCAAwC,CAAC;QACtD,IAAI,EAAE,CAAC,wBAAwB,CAAC;QAChC,MAAM,EAAE,MAAM,CAAC,GAAG;QAClB,oBAAoB;KACS,CAAC;IAEhC,MAAM,KAAK,GAAG,MAAM,+BAA+B,CACjD,OAAO,EACP,MAAM,EACN,QAAQ,EACR;QACE,cAAc,EAAE,IAAI;QACpB,aAAa,EAAE,MAAM,CAAC,MAAM;aACzB,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;aACtB,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;QAC1B,KAAK,EAAE,UAAU,EAAE;QACnB,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG;QACxC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG;KACzC,CACF,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC5B,CAAC;AAED,eAAe,WAAW,CAAC"}
|