@cef-ebsi/cli 1.3.2 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (202) hide show
  1. package/bin/cli.js +1 -1
  2. package/dist/abi/pilot/DidRegistry.js +568 -0
  3. package/dist/abi/pilot/DidRegistry.js.map +1 -0
  4. package/dist/abi/{test/TirV4.js → pilot/Ptr.js} +255 -299
  5. package/dist/abi/pilot/Ptr.js.map +1 -0
  6. package/dist/abi/pilot/SchemaSCRegistry.js +264 -0
  7. package/dist/abi/pilot/SchemaSCRegistry.js.map +1 -0
  8. package/dist/abi/{test/TprV3.js → pilot/Tcr.js} +269 -261
  9. package/dist/abi/pilot/Tcr.js.map +1 -0
  10. package/dist/abi/pilot/Timestamp.js +658 -0
  11. package/dist/abi/pilot/Timestamp.js.map +1 -0
  12. package/dist/abi/pilot/Tir.js +428 -0
  13. package/dist/abi/pilot/Tir.js.map +1 -0
  14. package/dist/abi/pilot/TnT.js +842 -0
  15. package/dist/abi/pilot/TnT.js.map +1 -0
  16. package/dist/abi/pilot/Tpr.js +492 -0
  17. package/dist/abi/pilot/Tpr.js.map +1 -0
  18. package/dist/abi/test/DidRegistry.js +144 -658
  19. package/dist/abi/test/DidRegistry.js.map +1 -1
  20. package/dist/abi/{pilot/TirV4.js → test/Ptr.js} +255 -299
  21. package/dist/abi/test/Ptr.js.map +1 -0
  22. package/dist/abi/test/SchemaSCRegistry.js +122 -795
  23. package/dist/abi/test/SchemaSCRegistry.js.map +1 -1
  24. package/dist/abi/{pilot/TprV3.js → test/Tcr.js} +269 -261
  25. package/dist/abi/test/Tcr.js.map +1 -0
  26. package/dist/abi/test/Timestamp.js +239 -673
  27. package/dist/abi/test/Timestamp.js.map +1 -1
  28. package/dist/abi/test/Tir.js +167 -636
  29. package/dist/abi/test/Tir.js.map +1 -1
  30. package/dist/abi/test/TnT.js +842 -0
  31. package/dist/abi/test/TnT.js.map +1 -0
  32. package/dist/abi/test/Tpr.js +166 -942
  33. package/dist/abi/test/Tpr.js.map +1 -1
  34. package/dist/app.js +447 -443
  35. package/dist/app.js.map +1 -1
  36. package/dist/buildParam/{didV3.js → didr.js} +210 -204
  37. package/dist/buildParam/didr.js.map +1 -0
  38. package/dist/buildParam/index.js +42 -48
  39. package/dist/buildParam/index.js.map +1 -1
  40. package/dist/buildParam/ptr.js +80 -0
  41. package/dist/buildParam/ptr.js.map +1 -0
  42. package/dist/buildParam/tcr.js +36 -0
  43. package/dist/buildParam/tcr.js.map +1 -0
  44. package/dist/buildParam/{timestampV3.js → timestamp.js} +179 -136
  45. package/dist/buildParam/timestamp.js.map +1 -0
  46. package/dist/buildParam/{tirV3.js → tir.js} +67 -59
  47. package/dist/buildParam/tir.js.map +1 -0
  48. package/dist/buildParam/{tntV1.js → tnt.js} +90 -61
  49. package/dist/buildParam/tnt.js.map +1 -0
  50. package/dist/buildParam/{tprV2.js → tpr.js} +44 -33
  51. package/dist/buildParam/tpr.js.map +1 -0
  52. package/dist/buildParam/{tsrV2.js → tsr.js} +45 -40
  53. package/dist/buildParam/tsr.js.map +1 -0
  54. package/dist/cli.js +1 -0
  55. package/dist/cli.js.map +1 -1
  56. package/dist/commands/{authorisation-v5.js → authorisation.js} +95 -72
  57. package/dist/commands/authorisation.js.map +1 -0
  58. package/dist/commands/compute.js +429 -389
  59. package/dist/commands/compute.js.map +1 -1
  60. package/dist/commands/{conformance-v3.js → conformance.js} +236 -248
  61. package/dist/commands/conformance.js.map +1 -0
  62. package/dist/commands/hardwarewallet.js +5 -5
  63. package/dist/commands/hardwarewallet.js.map +1 -1
  64. package/dist/commands/index.js +4 -4
  65. package/dist/commands/index.js.map +1 -1
  66. package/dist/commands/{ledger-v4.js → ledger.js} +203 -127
  67. package/dist/commands/ledger.js.map +1 -0
  68. package/dist/commands/ptr.js +56 -0
  69. package/dist/commands/ptr.js.map +1 -0
  70. package/dist/commands/tcr.js +51 -0
  71. package/dist/commands/tcr.js.map +1 -0
  72. package/dist/commands/tnl.js +10 -9
  73. package/dist/commands/tnl.js.map +1 -1
  74. package/dist/commands/tsr.js +46 -0
  75. package/dist/commands/tsr.js.map +1 -0
  76. package/dist/commands/view.js +8 -8
  77. package/dist/commands/view.js.map +1 -1
  78. package/dist/config.js +311 -279
  79. package/dist/config.js.map +1 -1
  80. package/dist/index.js +3 -3
  81. package/dist/index.js.map +1 -1
  82. package/dist/interfaces/index.js +1 -1
  83. package/dist/interfaces/index.js.map +1 -1
  84. package/dist/programs/migrateDid.js +33 -33
  85. package/dist/programs/migrateDid.js.map +1 -1
  86. package/dist/programs/migrateDids.js +39 -42
  87. package/dist/programs/migrateDids.js.map +1 -1
  88. package/dist/programs/migrateTsr.js +153 -113
  89. package/dist/programs/migrateTsr.js.map +1 -1
  90. package/dist/scripts/accreditAndAuthorize/conformance/step1 +1 -1
  91. package/dist/scripts/accreditAndAuthorize/test/step1 +1 -1
  92. package/dist/scripts/accreditTI +1 -1
  93. package/dist/scripts/assets/CTRevocableCredential.json +1 -1
  94. package/dist/scripts/assets/CredentialToAttestVerifiableAuthorisationForTrustChain.json +2 -2
  95. package/dist/scripts/assets/TrustedNodesList.json +1 -1
  96. package/dist/scripts/assets/VerifiableAccreditationToAccredit.json +2 -2
  97. package/dist/scripts/assets/VerifiableAccreditationToAttest.json +2 -2
  98. package/dist/scripts/assets/VerifiableAuthorisationForTrustChain.json +1 -1
  99. package/dist/scripts/assets/VerifiableAuthorisationToInvoke.json +24 -0
  100. package/dist/scripts/assets/VerifiableAuthorisationToOnboard.json +1 -1
  101. package/dist/scripts/bootstrap/1-populateTPR +18 -15
  102. package/dist/scripts/bootstrap/6-setupConformanceIssuer +1 -1
  103. package/dist/scripts/issueVcInvoke +10 -0
  104. package/dist/scripts/issueVcOnboard +1 -1
  105. package/dist/scripts/issueVcRootTAO +1 -1
  106. package/dist/scripts/issueVcTAO +2 -2
  107. package/dist/scripts/issueVcTI +2 -2
  108. package/dist/scripts/issueVcTnl +1 -1
  109. package/dist/scripts/issue_CTRevocableCredential +1 -1
  110. package/dist/scripts/issue_SelfAttestationSupportOffice +2 -2
  111. package/dist/scripts/issue_VerifiableAccreditationToAccredit +2 -2
  112. package/dist/scripts/issue_VerifiableAccreditationToAttest +2 -2
  113. package/dist/scripts/issue_VerifiableAuthorisationForTrustChain +1 -1
  114. package/dist/scripts/issue_VerifiableAuthorisationToOnboard +1 -1
  115. package/dist/scripts/updateVcRootTAO +1 -1
  116. package/dist/scripts/updateVcTAO +2 -2
  117. package/dist/scripts/updateVcTI +2 -2
  118. package/dist/scripts/{wctv3 → wct}/accreditAndAuthorize +1 -1
  119. package/dist/tsconfig.build.tsbuildinfo +1 -0
  120. package/dist/utils/Client.js +81 -68
  121. package/dist/utils/Client.js.map +1 -1
  122. package/dist/utils/HardwareWallet.js +169 -165
  123. package/dist/utils/HardwareWallet.js.map +1 -1
  124. package/dist/utils/http.js +24 -27
  125. package/dist/utils/http.js.map +1 -1
  126. package/dist/utils/index.js +3 -3
  127. package/dist/utils/index.js.map +1 -1
  128. package/dist/utils/jsonrpc.js +14 -14
  129. package/dist/utils/jsonrpc.js.map +1 -1
  130. package/dist/utils/print.js +19 -19
  131. package/dist/utils/print.js.map +1 -1
  132. package/dist/utils/utils.js +180 -173
  133. package/dist/utils/utils.js.map +1 -1
  134. package/package.json +70 -46
  135. package/dist/abi/pilot/DidRegistryV3.js +0 -1082
  136. package/dist/abi/pilot/DidRegistryV3.js.map +0 -1
  137. package/dist/abi/pilot/DidRegistryV4.js +0 -942
  138. package/dist/abi/pilot/DidRegistryV4.js.map +0 -1
  139. package/dist/abi/pilot/SchemaSCRegistryV2.js +0 -474
  140. package/dist/abi/pilot/SchemaSCRegistryV2.js.map +0 -1
  141. package/dist/abi/pilot/TimestampV2.js +0 -1128
  142. package/dist/abi/pilot/TimestampV2.js.map +0 -1
  143. package/dist/abi/pilot/TimestampV3.js +0 -995
  144. package/dist/abi/pilot/TimestampV3.js.map +0 -1
  145. package/dist/abi/pilot/TirV3.js +0 -496
  146. package/dist/abi/pilot/TirV3.js.map +0 -1
  147. package/dist/abi/pilot/TirV4.js.map +0 -1
  148. package/dist/abi/pilot/TnTV1.js +0 -1375
  149. package/dist/abi/pilot/TnTV1.js.map +0 -1
  150. package/dist/abi/pilot/TprV2.js +0 -889
  151. package/dist/abi/pilot/TprV2.js.map +0 -1
  152. package/dist/abi/pilot/TprV3.js.map +0 -1
  153. package/dist/abi/pilot/TsrV3.js +0 -571
  154. package/dist/abi/pilot/TsrV3.js.map +0 -1
  155. package/dist/abi/test/DidRegistryV3.js +0 -1089
  156. package/dist/abi/test/DidRegistryV3.js.map +0 -1
  157. package/dist/abi/test/DidRegistryV4.js +0 -960
  158. package/dist/abi/test/DidRegistryV4.js.map +0 -1
  159. package/dist/abi/test/SchemaSCRegistryV2.js +0 -474
  160. package/dist/abi/test/SchemaSCRegistryV2.js.map +0 -1
  161. package/dist/abi/test/TimestampV2.js +0 -1128
  162. package/dist/abi/test/TimestampV2.js.map +0 -1
  163. package/dist/abi/test/TimestampV3.js +0 -995
  164. package/dist/abi/test/TimestampV3.js.map +0 -1
  165. package/dist/abi/test/TirV3.js +0 -496
  166. package/dist/abi/test/TirV3.js.map +0 -1
  167. package/dist/abi/test/TirV4.js.map +0 -1
  168. package/dist/abi/test/TnTV1.js +0 -1375
  169. package/dist/abi/test/TnTV1.js.map +0 -1
  170. package/dist/abi/test/TprV2.js +0 -889
  171. package/dist/abi/test/TprV2.js.map +0 -1
  172. package/dist/abi/test/TprV3.js.map +0 -1
  173. package/dist/abi/test/TsrV3.js +0 -571
  174. package/dist/abi/test/TsrV3.js.map +0 -1
  175. package/dist/buildParam/didV3.js.map +0 -1
  176. package/dist/buildParam/didV4.js +0 -326
  177. package/dist/buildParam/didV4.js.map +0 -1
  178. package/dist/buildParam/timestampV2.js +0 -317
  179. package/dist/buildParam/timestampV2.js.map +0 -1
  180. package/dist/buildParam/timestampV3.js.map +0 -1
  181. package/dist/buildParam/tirV3.js.map +0 -1
  182. package/dist/buildParam/tirV4.js +0 -119
  183. package/dist/buildParam/tirV4.js.map +0 -1
  184. package/dist/buildParam/tntV1.js.map +0 -1
  185. package/dist/buildParam/tntV2.js +0 -185
  186. package/dist/buildParam/tntV2.js.map +0 -1
  187. package/dist/buildParam/tprV2.js.map +0 -1
  188. package/dist/buildParam/tprV3.js +0 -82
  189. package/dist/buildParam/tprV3.js.map +0 -1
  190. package/dist/buildParam/tsrV2.js.map +0 -1
  191. package/dist/buildParam/tsrV3.js +0 -110
  192. package/dist/buildParam/tsrV3.js.map +0 -1
  193. package/dist/commands/authorisation-v4.js +0 -119
  194. package/dist/commands/authorisation-v4.js.map +0 -1
  195. package/dist/commands/authorisation-v5.js.map +0 -1
  196. package/dist/commands/conformance-v3.js.map +0 -1
  197. package/dist/commands/ledger-v4.js.map +0 -1
  198. package/dist/tsconfig.tsbuildinfo +0 -1
  199. /package/dist/scripts/{wctv3 → wct}/holderWallet +0 -0
  200. /package/dist/scripts/{wctv3 → wct}/issueToHolder +0 -0
  201. /package/dist/scripts/{wctv3 → wct}/pda1 +0 -0
  202. /package/dist/scripts/{wctv3 → wct}/verifier +0 -0
@@ -1,152 +1,37 @@
1
- import { calculateJwkThumbprint } from "jose";
2
1
  import Joi from "joi";
2
+ import { calculateJwkThumbprint } from "jose";
3
3
  import { encodePublicKey } from "../utils/utils.js";
4
- export async function processInputPublicKey(client, inputPublicKey, inputVMethodId) {
5
- let publicKey;
6
- let publicKeyJwk;
7
- let vMethodId;
8
- if (inputPublicKey) {
9
- if (typeof inputPublicKey === "string") {
10
- publicKey = inputPublicKey;
11
- publicKeyJwk = encodePublicKey({
12
- key: publicKey,
13
- format: "jwk",
14
- alg: "ES256K",
15
- });
16
- }
17
- else {
18
- publicKeyJwk = inputPublicKey;
19
- if (publicKeyJwk.crv === "secp256k1") {
20
- publicKey = encodePublicKey({
21
- key: publicKeyJwk,
22
- format: "hex",
23
- });
24
- }
25
- else {
26
- // for ES256, RS256, and EdDSA the public
27
- // key hex is stored as a JSON stringified
28
- publicKey = `0x${Buffer.from(JSON.stringify(publicKeyJwk)).toString("hex")}`;
29
- }
30
- }
31
- vMethodId =
32
- inputVMethodId || (await calculateJwkThumbprint(publicKeyJwk, "sha256"));
33
- }
34
- else {
35
- publicKey = client.ethWallet.publicKey;
36
- publicKeyJwk = encodePublicKey({
37
- key: publicKey,
38
- format: "jwk",
39
- alg: "ES256K",
40
- });
41
- vMethodId = client.keys.ES256K.id;
42
- }
43
- const isSecp256k1 = publicKeyJwk.crv === "secp256k1";
44
- return { publicKey, publicKeyJwk, vMethodId, isSecp256k1 };
45
- }
46
- export async function buildParamDidV3(method, client, inputs) {
4
+ export async function buildParamDidr(method, client, inputs) {
47
5
  switch (method) {
48
- case "insertDidDocument": {
49
- const [inputDid, inputBaseDocument, inputPublicKey, inputNotBefore, inputNotAfter, inputVMethodId,] = inputs;
50
- Joi.assert(inputDid, Joi.string().optional());
51
- Joi.assert(inputNotBefore, Joi.string().optional());
52
- Joi.assert(inputNotAfter, Joi.string().optional());
53
- Joi.assert(inputVMethodId, Joi.string().optional());
54
- const did = inputDid || client.did;
55
- let baseDocument;
56
- let notBefore;
57
- let notAfter;
58
- if (inputBaseDocument) {
59
- baseDocument = JSON.stringify(inputBaseDocument);
60
- }
61
- else {
62
- const didDocument = client.generateDidDocument();
63
- baseDocument = JSON.stringify({ "@context": didDocument["@context"] });
64
- }
65
- const { publicKey, vMethodId, isSecp256k1 } = await processInputPublicKey(client, inputPublicKey, inputVMethodId);
66
- if (!isSecp256k1) {
67
- throw new Error("the public key must be for secp256k1");
68
- }
69
- if (inputNotBefore) {
70
- notBefore = Math.floor(new Date(inputNotBefore).getTime() / 1000);
71
- }
72
- else {
73
- notBefore = Math.floor(Date.now() / 1000);
74
- }
75
- if (inputNotAfter) {
76
- notAfter = Math.floor(new Date(inputNotAfter).getTime() / 1000);
77
- }
78
- else {
79
- notAfter = notBefore + 84600 * 365 * 5;
80
- }
81
- return {
82
- info: {
83
- title: "Did document",
84
- data: did,
85
- },
86
- param: {
87
- did,
88
- baseDocument,
89
- vMethodId,
90
- publicKey,
91
- isSecp256k1,
92
- notBefore,
93
- notAfter,
94
- },
95
- };
96
- }
97
- case "updateBaseDocument": {
98
- const [did, inputBaseDocument] = inputs;
99
- Joi.assert(did, Joi.string());
100
- let baseDocument;
101
- if (inputBaseDocument) {
102
- baseDocument = JSON.stringify(inputBaseDocument);
103
- }
104
- else {
105
- const didDocument = client.generateDidDocument();
106
- baseDocument = JSON.stringify({ "@context": didDocument["@context"] });
107
- }
108
- return {
109
- info: {
110
- title: "Update base document",
111
- data: {
112
- did,
113
- baseDocument,
114
- },
115
- },
116
- param: {
117
- did,
118
- baseDocument,
119
- },
120
- };
121
- }
122
6
  case "addController": {
123
7
  const [did, controller] = inputs;
124
8
  Joi.assert(did, Joi.string());
125
9
  Joi.assert(controller, Joi.string());
126
10
  return {
127
11
  info: {
12
+ data: { controller, did },
128
13
  title: "Add controller",
129
- data: { did, controller },
130
14
  },
131
15
  param: {
132
- did,
133
16
  controller,
17
+ did,
134
18
  },
19
+ paramOrder: ["did", "controller"],
135
20
  };
136
21
  }
137
- case "revokeController": {
138
- const [did, controller] = inputs;
22
+ case "addService": {
23
+ const [did, service] = inputs;
139
24
  Joi.assert(did, Joi.string());
140
- Joi.assert(controller, Joi.string());
141
25
  return {
142
26
  info: {
143
- title: "Revoke controller",
144
- data: { did, controller },
27
+ data: { did, service },
28
+ title: "Add service",
145
29
  },
146
30
  param: {
147
31
  did,
148
- controller,
32
+ service,
149
33
  },
34
+ paramOrder: ["did", "service"],
150
35
  };
151
36
  }
152
37
  case "addVerificationMethod": {
@@ -155,27 +40,28 @@ export async function buildParamDidV3(method, client, inputs) {
155
40
  Joi.assert(inputVMethodId, Joi.string().optional());
156
41
  let inputPublicKey = inputPublicKeyOrAlg;
157
42
  if (typeof inputPublicKeyOrAlg === "string" &&
158
- ["ES256K", "ES256", "RS256", "EdDSA"].includes(inputPublicKeyOrAlg)) {
43
+ ["EdDSA", "ES256", "ES256K", "RS256"].includes(inputPublicKeyOrAlg)) {
159
44
  const alg = inputPublicKeyOrAlg;
160
45
  inputPublicKey = client.keys[alg].publicKeyJwk;
161
46
  }
162
- const { publicKey, vMethodId, isSecp256k1 } = await processInputPublicKey(client, inputPublicKey, inputVMethodId);
47
+ const { isSecp256k1, publicKey, vMethodId } = await processInputPublicKey(client, inputPublicKey, inputVMethodId);
163
48
  return {
164
49
  info: {
165
- title: "Add verification method",
166
50
  data: {
167
51
  did,
168
- vMethodId,
169
- publicKey,
170
52
  isSecp256k1,
53
+ publicKey,
54
+ vMethodId,
171
55
  },
56
+ title: "Add verification method",
172
57
  },
173
58
  param: {
174
59
  did,
175
- vMethodId,
176
- publicKey,
177
60
  isSecp256k1,
61
+ publicKey,
62
+ vMethodId,
178
63
  },
64
+ paramOrder: ["did", "vMethodId", "publicKey", "isSecp256k1"],
179
65
  };
180
66
  }
181
67
  case "addVerificationRelationship": {
@@ -185,103 +71,176 @@ export async function buildParamDidV3(method, client, inputs) {
185
71
  Joi.assert(vMethodIdOrAlg, Joi.string());
186
72
  Joi.assert(inputNotBefore, Joi.string().optional());
187
73
  Joi.assert(inputNotAfter, Joi.string().optional());
188
- let notBefore;
189
- let notAfter;
190
74
  let vMethodId = vMethodIdOrAlg;
191
- if (["ES256K", "ES256", "RS256", "EdDSA"].includes(vMethodIdOrAlg)) {
75
+ if (["EdDSA", "ES256", "ES256K", "RS256"].includes(vMethodIdOrAlg)) {
192
76
  const alg = vMethodIdOrAlg;
193
77
  vMethodId = client.keys[alg].id;
194
78
  }
195
- if (inputNotBefore) {
196
- notBefore = Math.floor(new Date(inputNotBefore).getTime() / 1000);
197
- }
198
- else {
199
- notBefore = Math.floor(Date.now() / 1000);
200
- }
201
- if (inputNotAfter) {
202
- notAfter = Math.floor(new Date(inputNotAfter).getTime() / 1000);
203
- }
204
- else {
205
- notAfter = notBefore + 84600 * 365 * 5;
206
- }
79
+ const notBefore = inputNotBefore
80
+ ? Math.floor(new Date(inputNotBefore).getTime() / 1000)
81
+ : Math.floor(Date.now() / 1000);
82
+ const notAfter = inputNotAfter
83
+ ? Math.floor(new Date(inputNotAfter).getTime() / 1000)
84
+ : notBefore + 84_600 * 365 * 5;
207
85
  return {
208
86
  info: {
209
- title: "Add verification relationship",
210
87
  data: {
211
88
  did,
212
89
  name,
213
- vMethodId,
214
- notBefore,
215
90
  notAfter,
91
+ notBefore,
92
+ vMethodId,
216
93
  },
94
+ title: "Add verification relationship",
217
95
  },
218
96
  param: {
219
97
  did,
220
98
  name,
221
- vMethodId,
222
- notBefore,
223
99
  notAfter,
100
+ notBefore,
101
+ vMethodId,
224
102
  },
103
+ paramOrder: ["did", "name", "vMethodId", "notBefore", "notAfter"],
225
104
  };
226
105
  }
227
- case "revokeVerificationMethod": {
106
+ case "expireVerificationMethod": {
228
107
  const [did, vMethodIdOrAlg, inputNotAfter] = inputs;
229
108
  Joi.assert(did, Joi.string());
230
109
  Joi.assert(vMethodIdOrAlg, Joi.string());
231
110
  Joi.assert(inputNotAfter, Joi.string());
232
- let notAfter;
111
+ const notAfter = Math.floor(new Date(inputNotAfter).getTime() / 1000);
233
112
  let vMethodId = vMethodIdOrAlg;
234
- if (["ES256K", "ES256", "RS256", "EdDSA"].includes(vMethodIdOrAlg)) {
113
+ if (["EdDSA", "ES256", "ES256K", "RS256"].includes(vMethodIdOrAlg)) {
235
114
  const alg = vMethodIdOrAlg;
236
115
  vMethodId = client.keys[alg].id;
237
116
  }
238
- if (inputNotAfter) {
239
- notAfter = Math.floor(new Date(inputNotAfter).getTime() / 1000);
240
- }
241
- else {
242
- notAfter = Math.floor(Date.now() / 1000);
243
- }
244
117
  return {
245
118
  info: {
246
- title: "Revoke verification method",
247
119
  data: {
248
120
  did,
249
- vMethodId,
250
121
  notAfter,
122
+ vMethodId,
251
123
  },
124
+ title: "Expire verification method",
252
125
  },
253
126
  param: {
254
127
  did,
128
+ notAfter,
255
129
  vMethodId,
130
+ },
131
+ paramOrder: ["did", "vMethodId", "notAfter"],
132
+ };
133
+ }
134
+ case "insertDidDocument": {
135
+ const [inputDid, inputBaseDocument, inputPublicKey, inputNotBefore, inputNotAfter, inputVMethodId,] = inputs;
136
+ Joi.assert(inputDid, Joi.string().optional());
137
+ Joi.assert(inputNotBefore, Joi.string().optional());
138
+ Joi.assert(inputNotAfter, Joi.string().optional());
139
+ Joi.assert(inputVMethodId, Joi.string().optional());
140
+ const did = inputDid || client.did;
141
+ let baseDocument;
142
+ if (inputBaseDocument) {
143
+ baseDocument = JSON.stringify(inputBaseDocument);
144
+ }
145
+ else {
146
+ const didDocument = client.generateDidDocument();
147
+ baseDocument = JSON.stringify({ "@context": didDocument["@context"] });
148
+ }
149
+ const { isSecp256k1, publicKey, vMethodId } = await processInputPublicKey(client, inputPublicKey, inputVMethodId);
150
+ if (!isSecp256k1) {
151
+ throw new Error("the public key must be for secp256k1");
152
+ }
153
+ const notBefore = inputNotBefore
154
+ ? Math.floor(new Date(inputNotBefore).getTime() / 1000)
155
+ : Math.floor(Date.now() / 1000);
156
+ const notAfter = inputNotAfter
157
+ ? Math.floor(new Date(inputNotAfter).getTime() / 1000)
158
+ : notBefore + 84_600 * 365 * 5;
159
+ return {
160
+ info: {
161
+ data: did,
162
+ title: "Did document",
163
+ },
164
+ param: {
165
+ baseDocument,
166
+ did,
167
+ isSecp256k1,
256
168
  notAfter,
169
+ notBefore,
170
+ publicKey,
171
+ vMethodId,
257
172
  },
173
+ paramOrder: [
174
+ "did",
175
+ "baseDocument",
176
+ "vMethodId",
177
+ "publicKey",
178
+ "isSecp256k1",
179
+ "notBefore",
180
+ "notAfter",
181
+ ],
258
182
  };
259
183
  }
260
- case "expireVerificationMethod": {
184
+ case "revokeController": {
185
+ const [did, controller] = inputs;
186
+ Joi.assert(did, Joi.string());
187
+ Joi.assert(controller, Joi.string());
188
+ return {
189
+ info: {
190
+ data: { controller, did },
191
+ title: "Revoke controller",
192
+ },
193
+ param: {
194
+ controller,
195
+ did,
196
+ },
197
+ paramOrder: ["did", "controller"],
198
+ };
199
+ }
200
+ case "revokeService": {
201
+ const [did, serviceId] = inputs;
202
+ Joi.assert(did, Joi.string());
203
+ Joi.assert(serviceId, Joi.string());
204
+ return {
205
+ info: {
206
+ data: { did, serviceId },
207
+ title: "Revoke service",
208
+ },
209
+ param: {
210
+ did,
211
+ serviceId,
212
+ },
213
+ paramOrder: ["did", "serviceId"],
214
+ };
215
+ }
216
+ case "revokeVerificationMethod": {
261
217
  const [did, vMethodIdOrAlg, inputNotAfter] = inputs;
262
218
  Joi.assert(did, Joi.string());
263
219
  Joi.assert(vMethodIdOrAlg, Joi.string());
264
220
  Joi.assert(inputNotAfter, Joi.string());
265
- const notAfter = Math.floor(new Date(inputNotAfter).getTime() / 1000);
266
221
  let vMethodId = vMethodIdOrAlg;
267
- if (["ES256K", "ES256", "RS256", "EdDSA"].includes(vMethodIdOrAlg)) {
222
+ if (["EdDSA", "ES256", "ES256K", "RS256"].includes(vMethodIdOrAlg)) {
268
223
  const alg = vMethodIdOrAlg;
269
224
  vMethodId = client.keys[alg].id;
270
225
  }
226
+ const notAfter = inputNotAfter
227
+ ? Math.floor(new Date(inputNotAfter).getTime() / 1000)
228
+ : Math.floor(Date.now() / 1000);
271
229
  return {
272
230
  info: {
273
- title: "Expire verification method",
274
231
  data: {
275
232
  did,
276
- vMethodId,
277
233
  notAfter,
234
+ vMethodId,
278
235
  },
236
+ title: "Revoke verification method",
279
237
  },
280
238
  param: {
281
239
  did,
282
- vMethodId,
283
240
  notAfter,
241
+ vMethodId,
284
242
  },
243
+ paramOrder: ["did", "vMethodId", "notAfter"],
285
244
  };
286
245
  }
287
246
  case "rollVerificationMethod": {
@@ -294,76 +253,123 @@ export async function buildParamDidV3(method, client, inputs) {
294
253
  Joi.assert(inputVMethodId, Joi.string().optional());
295
254
  let inputPublicKey = inputPublicKeyOrAlg;
296
255
  if (typeof inputPublicKeyOrAlg === "string" &&
297
- ["ES256K", "ES256", "RS256", "EdDSA"].includes(inputPublicKeyOrAlg)) {
256
+ ["EdDSA", "ES256", "ES256K", "RS256"].includes(inputPublicKeyOrAlg)) {
298
257
  const alg = inputPublicKeyOrAlg;
299
258
  inputPublicKey = client.keys[alg].publicKeyJwk;
300
259
  }
301
260
  const notBefore = Math.floor(new Date(inputNotBefore).getTime() / 1000);
302
261
  const notAfter = Math.floor(new Date(inputNotAfter).getTime() / 1000);
303
262
  const duration = Number(inputDuration);
304
- const { publicKey, vMethodId, isSecp256k1 } = await processInputPublicKey(client, inputPublicKey, inputVMethodId);
263
+ const { isSecp256k1, publicKey, vMethodId } = await processInputPublicKey(client, inputPublicKey, inputVMethodId);
305
264
  return {
306
265
  info: {
307
- title: "Add verification method",
308
266
  data: {
309
267
  args: {
310
268
  did,
311
- vMethodId,
312
- publicKey,
269
+ duration,
313
270
  isSecp256k1,
314
- notBefore,
315
271
  notAfter,
272
+ notBefore,
316
273
  oldVMethodId,
317
- duration,
274
+ publicKey,
275
+ vMethodId,
318
276
  },
319
277
  },
278
+ title: "Add verification method",
320
279
  },
321
280
  param: {
322
281
  args: {
323
282
  did,
324
- vMethodId,
325
- publicKey,
283
+ duration,
326
284
  isSecp256k1,
327
- notBefore,
328
285
  notAfter,
286
+ notBefore,
329
287
  oldVMethodId,
330
- duration,
288
+ publicKey,
289
+ vMethodId,
331
290
  },
332
291
  },
292
+ paramOrder: [
293
+ "did",
294
+ "vMethodId",
295
+ "publicKey",
296
+ "isSecp256k1",
297
+ "notBefore",
298
+ "notAfter",
299
+ "oldVMethodId",
300
+ "duration",
301
+ ],
333
302
  };
334
303
  }
335
- case "addService": {
336
- const [did, service] = inputs;
337
- Joi.assert(did, Joi.string());
338
- return {
339
- info: {
340
- title: "Add service",
341
- data: { did, service },
342
- },
343
- param: {
344
- did,
345
- service,
346
- },
347
- };
348
- }
349
- case "revokeService": {
350
- const [did, serviceId] = inputs;
304
+ case "updateBaseDocument": {
305
+ const [did, inputBaseDocument] = inputs;
351
306
  Joi.assert(did, Joi.string());
352
- Joi.assert(serviceId, Joi.string());
307
+ let baseDocument;
308
+ if (inputBaseDocument) {
309
+ baseDocument = JSON.stringify(inputBaseDocument);
310
+ }
311
+ else {
312
+ const didDocument = client.generateDidDocument();
313
+ baseDocument = JSON.stringify({ "@context": didDocument["@context"] });
314
+ }
353
315
  return {
354
316
  info: {
355
- title: "Revoke service",
356
- data: { did, serviceId },
317
+ data: {
318
+ baseDocument,
319
+ did,
320
+ },
321
+ title: "Update base document",
357
322
  },
358
323
  param: {
324
+ baseDocument,
359
325
  did,
360
- serviceId,
361
326
  },
327
+ paramOrder: ["did", "baseDocument"],
362
328
  };
363
329
  }
364
- default:
330
+ default: {
365
331
  throw new Error(`Invalid method '${method}'`);
332
+ }
333
+ }
334
+ }
335
+ export async function processInputPublicKey(client, inputPublicKey, inputVMethodId) {
336
+ let publicKey;
337
+ let publicKeyJwk;
338
+ let vMethodId;
339
+ if (inputPublicKey) {
340
+ if (typeof inputPublicKey === "string") {
341
+ publicKey = inputPublicKey;
342
+ publicKeyJwk = encodePublicKey({
343
+ alg: "ES256K",
344
+ format: "jwk",
345
+ key: publicKey,
346
+ });
347
+ }
348
+ else {
349
+ publicKeyJwk = inputPublicKey;
350
+ publicKey =
351
+ publicKeyJwk.crv === "secp256k1"
352
+ ? encodePublicKey({
353
+ format: "hex",
354
+ key: publicKeyJwk,
355
+ })
356
+ : // for ES256, RS256, and EdDSA the public key hex is stored as a JSON stringified
357
+ `0x${Buffer.from(JSON.stringify(publicKeyJwk)).toString("hex")}`;
358
+ }
359
+ vMethodId =
360
+ inputVMethodId || (await calculateJwkThumbprint(publicKeyJwk, "sha256"));
366
361
  }
362
+ else {
363
+ publicKey = client.ethWallet.publicKey;
364
+ publicKeyJwk = encodePublicKey({
365
+ alg: "ES256K",
366
+ format: "jwk",
367
+ key: publicKey,
368
+ });
369
+ vMethodId = client.keys.ES256K.id;
370
+ }
371
+ const isSecp256k1 = publicKeyJwk.crv === "secp256k1";
372
+ return { isSecp256k1, publicKey, publicKeyJwk, vMethodId };
367
373
  }
368
- export default buildParamDidV3;
369
- //# sourceMappingURL=didV3.js.map
374
+ export default buildParamDidr;
375
+ //# sourceMappingURL=didr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"didr.js","sourceRoot":"","sources":["../../src/buildParam/didr.ts"],"names":[],"mappings":"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"}