@veramo/cli 3.1.1-next.7 → 3.1.2-next.28
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/build/credential.js +91 -5
- package/build/credential.js.map +1 -1
- package/build/explore/credentials.d.ts.map +1 -1
- package/build/explore/credentials.js +3 -2
- package/build/explore/credentials.js.map +1 -1
- package/build/explore/presentations.d.ts.map +1 -1
- package/build/explore/presentations.js +3 -2
- package/build/explore/presentations.js.map +1 -1
- package/build/presentation.js +67 -1
- package/build/presentation.js.map +1 -1
- package/build/sdr.js +8 -5
- package/build/sdr.js.map +1 -1
- package/build/util.d.ts +2 -0
- package/build/util.d.ts.map +1 -0
- package/build/util.js +36 -0
- package/build/util.js.map +1 -0
- package/default/client.yml +3 -1
- package/default/default.yml +17 -1
- package/package.json +24 -23
- package/src/credential.ts +68 -7
- package/src/explore/credentials.ts +3 -2
- package/src/explore/presentations.ts +3 -2
- package/src/presentation.ts +45 -2
- package/src/sdr.ts +9 -5
- package/src/util.ts +23 -0
package/build/credential.js
CHANGED
|
@@ -1,4 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
2
21
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
22
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
23
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -16,11 +35,15 @@ const setup_1 = require("./setup");
|
|
|
16
35
|
const commander_1 = require("commander");
|
|
17
36
|
const inquirer_1 = __importDefault(require("inquirer"));
|
|
18
37
|
const qrcode_terminal_1 = __importDefault(require("qrcode-terminal"));
|
|
38
|
+
const fs = __importStar(require("fs"));
|
|
39
|
+
const json5 = __importStar(require("json5"));
|
|
40
|
+
const util_1 = require("./util");
|
|
19
41
|
const credential = commander_1.program.command('credential').description('W3C Verifiable Credential');
|
|
20
42
|
credential
|
|
21
43
|
.command('create', { isDefault: true })
|
|
22
44
|
.description('Create W3C Verifiable Credential')
|
|
23
45
|
.option('-s, --send', 'Send')
|
|
46
|
+
.option('-j, --json', 'Output in JSON')
|
|
24
47
|
.option('-q, --qrcode', 'Show qrcode')
|
|
25
48
|
.action((cmd) => __awaiter(void 0, void 0, void 0, function* () {
|
|
26
49
|
const agent = (0, setup_1.getAgent)(commander_1.program.opts().config);
|
|
@@ -30,6 +53,12 @@ credential
|
|
|
30
53
|
process.exit();
|
|
31
54
|
}
|
|
32
55
|
const answers = yield inquirer_1.default.prompt([
|
|
56
|
+
{
|
|
57
|
+
type: 'list',
|
|
58
|
+
name: 'proofFormat',
|
|
59
|
+
choices: ['jwt', 'lds'],
|
|
60
|
+
message: 'Credential proofFormat',
|
|
61
|
+
},
|
|
33
62
|
{
|
|
34
63
|
type: 'list',
|
|
35
64
|
name: 'iss',
|
|
@@ -79,7 +108,7 @@ credential
|
|
|
79
108
|
credentialSubject[type] = answers.claimValue;
|
|
80
109
|
const credential = {
|
|
81
110
|
issuer: { id: answers.iss },
|
|
82
|
-
'@context': ['https://www.w3.org/2018/credentials/v1'],
|
|
111
|
+
'@context': ['https://www.w3.org/2018/credentials/v1', 'https://veramo.io/contexts/profile/v1'],
|
|
83
112
|
type: answers.type.split(','),
|
|
84
113
|
issuanceDate: new Date().toISOString(),
|
|
85
114
|
credentialSubject,
|
|
@@ -107,17 +136,27 @@ credential
|
|
|
107
136
|
const verifiableCredential = yield agent.createVerifiableCredential({
|
|
108
137
|
save: true,
|
|
109
138
|
credential,
|
|
110
|
-
proofFormat:
|
|
139
|
+
proofFormat: answers.proofFormat,
|
|
111
140
|
});
|
|
112
141
|
if (cmd.send) {
|
|
142
|
+
let body;
|
|
143
|
+
let type;
|
|
144
|
+
if (answers.proofFormat == 'jwt') {
|
|
145
|
+
body = verifiableCredential.proof.jwt;
|
|
146
|
+
type = 'jwt';
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
body = verifiableCredential;
|
|
150
|
+
type = 'w3c.vc';
|
|
151
|
+
}
|
|
113
152
|
try {
|
|
114
153
|
const message = yield agent.sendMessageDIDCommAlpha1({
|
|
115
154
|
save: true,
|
|
116
155
|
data: {
|
|
117
156
|
from: answers.iss,
|
|
118
157
|
to: answers.sub,
|
|
119
|
-
type
|
|
120
|
-
body
|
|
158
|
+
type,
|
|
159
|
+
body,
|
|
121
160
|
},
|
|
122
161
|
});
|
|
123
162
|
console.dir(message, { depth: 10 });
|
|
@@ -130,7 +169,54 @@ credential
|
|
|
130
169
|
qrcode_terminal_1.default.generate(verifiableCredential.proof.jwt);
|
|
131
170
|
}
|
|
132
171
|
else {
|
|
133
|
-
|
|
172
|
+
if (cmd.json) {
|
|
173
|
+
console.log(JSON.stringify(verifiableCredential, null, 2));
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
console.dir(verifiableCredential, { depth: 10 });
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}));
|
|
180
|
+
credential
|
|
181
|
+
.command('verify')
|
|
182
|
+
.description('Verify a W3C Verifiable Credential provided as raw string, file or stdin')
|
|
183
|
+
.option('-f, --filename <string>', 'Optional. Read the credential from a file instead of stdin')
|
|
184
|
+
.option('-r, --raw <string>', 'Optional. Specify the credential as a parameter instead of file or stdin')
|
|
185
|
+
.action((options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
186
|
+
const agent = (0, setup_1.getAgent)(commander_1.program.opts().config);
|
|
187
|
+
let raw = '';
|
|
188
|
+
if (options.raw) {
|
|
189
|
+
raw = options.raw;
|
|
190
|
+
}
|
|
191
|
+
else if (options.filename) {
|
|
192
|
+
raw = yield fs.promises.readFile(options.filename, 'utf-8');
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
raw = yield (0, util_1.readStdin)();
|
|
196
|
+
}
|
|
197
|
+
let credentialAsJSON;
|
|
198
|
+
try {
|
|
199
|
+
credentialAsJSON = json5.parse(raw);
|
|
200
|
+
}
|
|
201
|
+
catch (e) {
|
|
202
|
+
credentialAsJSON = {
|
|
203
|
+
proof: {
|
|
204
|
+
type: 'JwtProof2020',
|
|
205
|
+
jwt: raw,
|
|
206
|
+
},
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
try {
|
|
210
|
+
const result = yield agent.verifyCredential({ credential: credentialAsJSON });
|
|
211
|
+
if (result === true) {
|
|
212
|
+
console.log('Credential was verified successfully.');
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
console.error('Credential could not be verified.');
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
catch (e) {
|
|
219
|
+
console.error(e.message);
|
|
134
220
|
}
|
|
135
221
|
}));
|
|
136
222
|
//# sourceMappingURL=credential.js.map
|
package/build/credential.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credential.js","sourceRoot":"","sources":["../src/credential.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"credential.js","sourceRoot":"","sources":["../src/credential.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mCAAkC;AAClC,yCAAmC;AACnC,wDAA+B;AAC/B,sEAAoC;AACpC,uCAAwB;AACxB,6CAA8B;AAC9B,iCAAkC;AAGlC,MAAM,UAAU,GAAG,mBAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAAA;AAEzF,UAAU;KACP,OAAO,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;KACtC,WAAW,CAAC,kCAAkC,CAAC;KAC/C,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC;KAC5B,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAC;KACtC,MAAM,CAAC,cAAc,EAAE,aAAa,CAAC;KACrC,MAAM,CAAC,CAAO,GAAG,EAAE,EAAE;IACpB,MAAM,KAAK,GAAG,IAAA,gBAAQ,EAAC,mBAAO,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAA;IAC7C,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,cAAc,EAAE,CAAA;IAChD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;QAC5B,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QACxB,OAAO,CAAC,IAAI,EAAE,CAAA;KACf;IACD,MAAM,OAAO,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;QACpC;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;YACvB,OAAO,EAAE,wBAAwB;SAClC;QACD;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAClC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE;gBACjC,KAAK,EAAE,IAAI,CAAC,GAAG;aAChB,CAAC,CAAC;YACH,OAAO,EAAE,YAAY;SACtB;QACD;YACE,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,aAAa;YACtB,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG;SAC5B;QACD;YACE,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,iBAAiB;YAC1B,OAAO,EAAE,8BAA8B;SACxC;QACD;YACE,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,YAAY;YACrB,OAAO,EAAE,MAAM;SAChB;QACD;YACE,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,aAAa;YACtB,OAAO,EAAE,OAAO;SACjB;QACD;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,8BAA8B;YACvC,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;gBAC5B,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE;aAC7B;SACF;KACF,CAAC,CAAA;IAEF,MAAM,iBAAiB,GAAQ,EAAE,CAAA;IACjC,iBAAiB,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,CAAA;IAClC,MAAM,IAAI,GAAW,OAAO,CAAC,SAAS,CAAA;IACtC,iBAAiB,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,UAAU,CAAA;IAE5C,MAAM,UAAU,GAAsB;QACpC,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,GAAG,EAAE;QAC3B,UAAU,EAAE,CAAC,wCAAwC,EAAE,uCAAuC,CAAC;QAC/F,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QAC7B,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACtC,iBAAiB;KAClB,CAAA;IAED,IAAI,OAAO,CAAC,SAAS,EAAE;QACrB,MAAM,aAAa,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YAC1C;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,wBAAwB;gBACjC,OAAO,EAAE,wBAAwB;aAClC;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,sBAAsB;gBAC/B,OAAO,EAAE,oDAAoD;aAC9D;SACF,CAAC,CAAA;QAEF,UAAU,CAAC,kBAAkB,CAAC,GAAG;YAC/B,IAAI,EAAE,aAAa,CAAC,IAAI;YACxB,EAAE,EAAE,aAAa,CAAC,EAAE;SACrB,CAAA;KACF;IAED,MAAM,oBAAoB,GAAG,MAAM,KAAK,CAAC,0BAA0B,CAAC;QAClE,IAAI,EAAE,IAAI;QACV,UAAU;QACV,WAAW,EAAE,OAAO,CAAC,WAAW;KACjC,CAAC,CAAA;IAEF,IAAI,GAAG,CAAC,IAAI,EAAE;QACZ,IAAI,IAAI,CAAA;QACR,IAAI,IAAI,CAAA;QACR,IAAI,OAAO,CAAC,WAAW,IAAI,KAAK,EAAE;YAChC,IAAI,GAAG,oBAAoB,CAAC,KAAK,CAAC,GAAG,CAAA;YACrC,IAAI,GAAG,KAAK,CAAA;SACb;aAAM;YACL,IAAI,GAAG,oBAAoB,CAAA;YAC3B,IAAI,GAAG,QAAQ,CAAA;SAChB;QACD,IAAI;YACF,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,wBAAwB,CAAC;gBACnD,IAAI,EAAE,IAAI;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,OAAO,CAAC,GAAG;oBACjB,EAAE,EAAE,OAAO,CAAC,GAAG;oBACf,IAAI;oBACJ,IAAI;iBACL;aACF,CAAC,CAAA;YACF,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAA;SACpC;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;SACjB;KACF;IAED,IAAI,GAAG,CAAC,MAAM,EAAE;QACd,yBAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;KAChD;SAAM;QACL,IAAI,GAAG,CAAC,IAAI,EAAE;YACZ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;SAC3D;aAAM;YACL,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAA;SACjD;KACF;AACH,CAAC,CAAA,CAAC,CAAA;AAEJ,UAAU;KACP,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,0EAA0E,CAAC;KACvF,MAAM,CAAC,yBAAyB,EAAE,4DAA4D,CAAC;KAC/F,MAAM,CAAC,oBAAoB,EAAE,0EAA0E,CAAC;KACxG,MAAM,CAAC,CAAO,OAAO,EAAE,EAAE;IACxB,MAAM,KAAK,GAAG,IAAA,gBAAQ,EAAC,mBAAO,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAA;IAC7C,IAAI,GAAG,GAAW,EAAE,CAAA;IACpB,IAAI,OAAO,CAAC,GAAG,EAAE;QACf,GAAG,GAAG,OAAO,CAAC,GAAG,CAAA;KAClB;SAAM,IAAI,OAAO,CAAC,QAAQ,EAAE;QAC3B,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;KAC5D;SAAM;QACL,GAAG,GAAG,MAAM,IAAA,gBAAS,GAAE,CAAA;KACxB;IACD,IAAI,gBAAqB,CAAA;IACzB,IAAI;QACF,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;KACpC;IAAC,OAAO,CAAM,EAAE;QACf,gBAAgB,GAAG;YACjB,KAAK,EAAE;gBACL,IAAI,EAAE,cAAc;gBACpB,GAAG,EAAE,GAAG;aACT;SACK,CAAA;KACT;IACD,IAAI;QACF,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,gBAAgB,CAAC,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC,CAAA;QAC7E,IAAI,MAAM,KAAK,IAAI,EAAE;YACnB,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAA;SACrD;aAAM;YACL,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAA;SACnD;KACF;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;KACzB;AACH,CAAC,CAAA,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/explore/credentials.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAG1C,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/explore/credentials.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAG1C,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAI1C,eAAO,MAAM,mBAAmB,UAAiB,eAAe,UAAU,cAAc,sCAsEvF,CAAA"}
|
|
@@ -16,6 +16,7 @@ exports.getCredentialsTable = void 0;
|
|
|
16
16
|
const blessed_1 = __importDefault(require("blessed"));
|
|
17
17
|
const utils_1 = require("./utils");
|
|
18
18
|
const styles_1 = require("./styles");
|
|
19
|
+
const utils_2 = require("@veramo/utils");
|
|
19
20
|
const getCredentialsTable = (agent, screen) => __awaiter(void 0, void 0, void 0, function* () {
|
|
20
21
|
screen.title = 'Credentials';
|
|
21
22
|
const credentialsTable = blessed_1.default.listtable({
|
|
@@ -33,8 +34,8 @@ const getCredentialsTable = (agent, screen) => __awaiter(void 0, void 0, void 0,
|
|
|
33
34
|
const credentials = yield agent.dataStoreORMGetVerifiableCredentials();
|
|
34
35
|
credentialsTable.setData([['Created', 'Type', 'From', 'To']].concat(credentials.map(({ verifiableCredential: m }) => [
|
|
35
36
|
(0, utils_1.shortDate)(m.issuanceDate),
|
|
36
|
-
m.type.join(','),
|
|
37
|
-
(0, utils_1.shortDid)(
|
|
37
|
+
(0, utils_2.asArray)(m.type || []).join(','),
|
|
38
|
+
(0, utils_1.shortDid)((0, utils_2.extractIssuer)(m)),
|
|
38
39
|
(0, utils_1.shortDid)(m.credentialSubject.id),
|
|
39
40
|
])));
|
|
40
41
|
credentialsTable.on('select', function (data) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/explore/credentials.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,sDAA0C;AAE1C,mCAA6C;AAE7C,qCAAiC;
|
|
1
|
+
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/explore/credentials.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,sDAA0C;AAE1C,mCAA6C;AAE7C,qCAAiC;AACjC,yCAAsD;AAE/C,MAAM,mBAAmB,GAAG,CAAO,KAAsB,EAAE,MAAsB,EAAE,EAAE;IAC1F,MAAM,CAAC,KAAK,GAAG,aAAa,CAAA;IAE5B,MAAM,gBAAgB,GAAG,iBAAO,CAAC,SAAS,CAAC;QACzC,GAAG,EAAE,GAAG;QACR,IAAI,EAAE,GAAG;QACT,MAAM,EAAE,MAAM;QACd,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;QACV,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,MAAM;QACd,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,eAAM,CAAC,SAAS;KACxB,CAAC,CAAA;IAEF,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,oCAAoC,EAAE,CAAA;IACtE,gBAAgB,CAAC,OAAO,CACtB,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CACxC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,oBAAoB,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;QAC/C,IAAA,iBAAS,EAAC,CAAC,CAAC,YAAY,CAAC;QACzB,IAAA,eAAO,EAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAC/B,IAAA,gBAAQ,EAAC,IAAA,qBAAa,EAAC,CAAC,CAAC,CAAC;QAC1B,IAAA,gBAAQ,EAAC,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC;KACjC,CAAC,CACH,CACF,CAAA;IAED,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAgB,IAAI;;YAChD,MAAM,CAAC,GAAG,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC7C,cAAc,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACpC,CAAC;KAAA,CAAC,CAAA;IAEF,SAAS,cAAc,CAAC,UAAsC;QAC5D,MAAM,aAAa,GAAG,iBAAO,CAAC,GAAG,CAAC;YAChC,KAAK,EAAE,YAAY;YACnB,GAAG,EAAE,QAAQ;YACb,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,IAAI;YACV,UAAU,EAAE,IAAI;YAChB,EAAE,EAAE,IAAI;YACR,YAAY,EAAE,IAAI;YAClB,SAAS,EAAE;gBACT,EAAE,EAAE,GAAG;gBACP,KAAK,EAAE;oBACL,EAAE,EAAE,MAAM;iBACX;gBACD,KAAK,EAAE;oBACL,OAAO,EAAE,KAAK;iBACf;aACF;YAED,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;SAC7C,CAAC,CAAA;QACF,aAAa,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,EAAE,GAAG;YAC7C,aAAa,CAAC,OAAO,EAAE,CAAA;YACvB,MAAM,CAAC,MAAM,EAAE,CAAA;QACjB,CAAC,CAAC,CAAA;QAEF,aAAa,CAAC,KAAK,EAAE,CAAA;QACrB,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;QAC5B,MAAM,CAAC,MAAM,EAAE,CAAA;IACjB,CAAC;IAED,OAAO,gBAAgB,CAAA;AACzB,CAAC,CAAA,CAAA;AAtEY,QAAA,mBAAmB,uBAsE/B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presentations.d.ts","sourceRoot":"","sources":["../../src/explore/presentations.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAG1C,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"presentations.d.ts","sourceRoot":"","sources":["../../src/explore/presentations.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAG1C,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAI1C,eAAO,MAAM,qBAAqB,UAAiB,eAAe,UAAU,cAAc,sCAsEzF,CAAA"}
|
|
@@ -16,6 +16,7 @@ exports.getPresentationsTable = void 0;
|
|
|
16
16
|
const blessed_1 = __importDefault(require("blessed"));
|
|
17
17
|
const utils_1 = require("./utils");
|
|
18
18
|
const styles_1 = require("./styles");
|
|
19
|
+
const utils_2 = require("@veramo/utils");
|
|
19
20
|
const getPresentationsTable = (agent, screen) => __awaiter(void 0, void 0, void 0, function* () {
|
|
20
21
|
screen.title = 'Presentations';
|
|
21
22
|
const presentationsTable = blessed_1.default.listtable({
|
|
@@ -33,9 +34,9 @@ const getPresentationsTable = (agent, screen) => __awaiter(void 0, void 0, void
|
|
|
33
34
|
const presentations = yield agent.dataStoreORMGetVerifiablePresentations({});
|
|
34
35
|
presentationsTable.setData([['Created', 'Type', 'Holder', 'Verifier']].concat(presentations.map(({ verifiablePresentation: m }) => [
|
|
35
36
|
(0, utils_1.shortDate)(m.issuanceDate),
|
|
36
|
-
m.type.join(','),
|
|
37
|
+
(0, utils_2.asArray)(m.type || []).join(','),
|
|
37
38
|
(0, utils_1.shortDid)(m.holder),
|
|
38
|
-
(0, utils_1.shortDid)(m.verifier.join(',')),
|
|
39
|
+
(0, utils_1.shortDid)((0, utils_2.asArray)(m.verifier || []).join(',')),
|
|
39
40
|
])));
|
|
40
41
|
presentationsTable.on('select', function (data) {
|
|
41
42
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presentations.js","sourceRoot":"","sources":["../../src/explore/presentations.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,sDAA0C;AAE1C,mCAA6C;AAE7C,qCAAiC;
|
|
1
|
+
{"version":3,"file":"presentations.js","sourceRoot":"","sources":["../../src/explore/presentations.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,sDAA0C;AAE1C,mCAA6C;AAE7C,qCAAiC;AACjC,yCAAuC;AAEhC,MAAM,qBAAqB,GAAG,CAAO,KAAsB,EAAE,MAAsB,EAAE,EAAE;IAC5F,MAAM,CAAC,KAAK,GAAG,eAAe,CAAA;IAE9B,MAAM,kBAAkB,GAAG,iBAAO,CAAC,SAAS,CAAC;QAC3C,GAAG,EAAE,GAAG;QACR,IAAI,EAAE,GAAG;QACT,MAAM,EAAE,MAAM;QACd,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;QACV,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,MAAM;QACd,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,eAAM,CAAC,SAAS;KACxB,CAAC,CAAA;IAEF,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,sCAAsC,CAAC,EAAE,CAAC,CAAA;IAC5E,kBAAkB,CAAC,OAAO,CACxB,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAChD,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,sBAAsB,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;QACnD,IAAA,iBAAS,EAAC,CAAC,CAAC,YAAY,CAAC;QACzB,IAAA,eAAO,EAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAC/B,IAAA,gBAAQ,EAAC,CAAC,CAAC,MAAM,CAAC;QAClB,IAAA,gBAAQ,EAAC,IAAA,eAAO,EAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC9C,CAAC,CACH,CACF,CAAA;IAED,kBAAkB,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAgB,IAAI;;YAClD,MAAM,CAAC,GAAG,kBAAkB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/C,gBAAgB,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACxC,CAAC;KAAA,CAAC,CAAA;IAEF,SAAS,gBAAgB,CAAC,YAA0C;QAClE,MAAM,eAAe,GAAG,iBAAO,CAAC,GAAG,CAAC;YAClC,KAAK,EAAE,cAAc;YACrB,GAAG,EAAE,QAAQ;YACb,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,IAAI;YACV,UAAU,EAAE,IAAI;YAChB,EAAE,EAAE,IAAI;YACR,YAAY,EAAE,IAAI;YAClB,SAAS,EAAE;gBACT,EAAE,EAAE,GAAG;gBACP,KAAK,EAAE;oBACL,EAAE,EAAE,MAAM;iBACX;gBACD,KAAK,EAAE;oBACL,OAAO,EAAE,KAAK;iBACf;aACF;YAED,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;SAC/C,CAAC,CAAA;QACF,eAAe,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,EAAE,GAAG;YAC/C,eAAe,CAAC,OAAO,EAAE,CAAA;YACzB,MAAM,CAAC,MAAM,EAAE,CAAA;QACjB,CAAC,CAAC,CAAA;QAEF,eAAe,CAAC,KAAK,EAAE,CAAA;QACvB,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;QAC9B,MAAM,CAAC,MAAM,EAAE,CAAA;IACjB,CAAC;IAED,OAAO,kBAAkB,CAAA;AAC3B,CAAC,CAAA,CAAA;AAtEY,QAAA,qBAAqB,yBAsEjC"}
|
package/build/presentation.js
CHANGED
|
@@ -1,4 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
2
21
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
22
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
23
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -16,6 +35,10 @@ const setup_1 = require("./setup");
|
|
|
16
35
|
const commander_1 = require("commander");
|
|
17
36
|
const inquirer_1 = __importDefault(require("inquirer"));
|
|
18
37
|
const qrcode_terminal_1 = __importDefault(require("qrcode-terminal"));
|
|
38
|
+
const util_1 = require("./util");
|
|
39
|
+
const fs = __importStar(require("fs"));
|
|
40
|
+
const json5 = __importStar(require("json5"));
|
|
41
|
+
const utils_1 = require("@veramo/utils");
|
|
19
42
|
const presentation = commander_1.program.command('presentation').description('W3C Verifiable Presentation');
|
|
20
43
|
presentation
|
|
21
44
|
.command('create', { isDefault: true })
|
|
@@ -89,7 +112,7 @@ presentation
|
|
|
89
112
|
list.push({
|
|
90
113
|
name: JSON.stringify(credential.verifiableCredential.credentialSubject) +
|
|
91
114
|
' | Issuer: ' +
|
|
92
|
-
credential.verifiableCredential
|
|
115
|
+
(0, utils_1.extractIssuer)(credential.verifiableCredential),
|
|
93
116
|
value: credential.verifiableCredential,
|
|
94
117
|
});
|
|
95
118
|
}
|
|
@@ -154,4 +177,47 @@ presentation
|
|
|
154
177
|
}
|
|
155
178
|
}
|
|
156
179
|
}));
|
|
180
|
+
presentation
|
|
181
|
+
.command('verify')
|
|
182
|
+
.description('Verify a W3C Verifiable Presentation provided as a string param or a file or from stdin')
|
|
183
|
+
.option('-c, --challenge <string>', 'Optional. Specify a challenge that the presentation should match.')
|
|
184
|
+
.option('-d, --domain <string>', 'Optional. Specify a domain that the presentation should match.')
|
|
185
|
+
.option('-f, --filename <string>', 'Optional. Read the presentation from a file instead of stdin')
|
|
186
|
+
.option('-r, --raw <string>', 'Optional. Presentation as a parameter string instead of a file or stdin.')
|
|
187
|
+
.action((options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
188
|
+
const agent = (0, setup_1.getAgent)(commander_1.program.opts().config);
|
|
189
|
+
let raw = '';
|
|
190
|
+
if (options.raw) {
|
|
191
|
+
raw = options.raw;
|
|
192
|
+
}
|
|
193
|
+
else if (options.filename) {
|
|
194
|
+
raw = yield fs.promises.readFile(options.filename, 'utf-8');
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
raw = yield (0, util_1.readStdin)();
|
|
198
|
+
}
|
|
199
|
+
let presentationAsJSON;
|
|
200
|
+
try {
|
|
201
|
+
presentationAsJSON = json5.parse(raw);
|
|
202
|
+
}
|
|
203
|
+
catch (e) {
|
|
204
|
+
presentationAsJSON = {
|
|
205
|
+
proof: {
|
|
206
|
+
type: 'JwtProof2020',
|
|
207
|
+
jwt: raw,
|
|
208
|
+
},
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
const result = yield agent.verifyPresentation({
|
|
212
|
+
presentation: presentationAsJSON,
|
|
213
|
+
challenge: options.challenge,
|
|
214
|
+
domain: options.domain,
|
|
215
|
+
});
|
|
216
|
+
if (result === true) {
|
|
217
|
+
console.log('Presentation was verified successfully.');
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
console.error('Presentation could not be verified.');
|
|
221
|
+
}
|
|
222
|
+
}));
|
|
157
223
|
//# sourceMappingURL=presentation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presentation.js","sourceRoot":"","sources":["../src/presentation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"presentation.js","sourceRoot":"","sources":["../src/presentation.ts"],"names":[],"mappings":"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"}
|
package/build/sdr.js
CHANGED
|
@@ -17,6 +17,7 @@ const commander_1 = require("commander");
|
|
|
17
17
|
const inquirer_1 = __importDefault(require("inquirer"));
|
|
18
18
|
const qrcode_terminal_1 = __importDefault(require("qrcode-terminal"));
|
|
19
19
|
const utils_1 = require("./explore/utils");
|
|
20
|
+
const utils_2 = require("@veramo/utils");
|
|
20
21
|
const fuzzy = require('fuzzy');
|
|
21
22
|
const sdr = commander_1.program.command('sdr').description('Selective Disclosure Request');
|
|
22
23
|
sdr
|
|
@@ -43,14 +44,16 @@ sdr
|
|
|
43
44
|
message: 'Subject DID',
|
|
44
45
|
type: 'autocomplete',
|
|
45
46
|
pageSize: 15,
|
|
46
|
-
suggestOnly: true,
|
|
47
47
|
source: (answers, input) => __awaiter(void 0, void 0, void 0, function* () {
|
|
48
48
|
const res = fuzzy
|
|
49
49
|
.filter(input, subjects)
|
|
50
50
|
.map((el) => (typeof el === 'string' ? el : el.original));
|
|
51
51
|
return res;
|
|
52
52
|
}),
|
|
53
|
-
validate(val) {
|
|
53
|
+
validate: (val) => {
|
|
54
|
+
if (val && typeof val !== 'string') {
|
|
55
|
+
val = val.value;
|
|
56
|
+
}
|
|
54
57
|
if (!val || !val.startsWith('did:')) {
|
|
55
58
|
return "Subject DID does not start with 'did:'...";
|
|
56
59
|
}
|
|
@@ -171,7 +174,7 @@ sdr
|
|
|
171
174
|
list.push({
|
|
172
175
|
name: JSON.stringify(credential.verifiableCredential.credentialSubject) +
|
|
173
176
|
' | Issuer: ' +
|
|
174
|
-
credential.verifiableCredential
|
|
177
|
+
(0, utils_2.extractIssuer)(credential.verifiableCredential),
|
|
175
178
|
value: credential.verifiableCredential.proof.jwt,
|
|
176
179
|
});
|
|
177
180
|
}
|
|
@@ -297,9 +300,9 @@ sdr
|
|
|
297
300
|
choices: item.credentials.map((c) => ({
|
|
298
301
|
name: c.verifiableCredential.credentialSubject[item.claimType] +
|
|
299
302
|
' (' +
|
|
300
|
-
c.verifiableCredential.type.join(',') +
|
|
303
|
+
(0, utils_2.asArray)(c.verifiableCredential.type || []).join(',') +
|
|
301
304
|
') issued by: ' +
|
|
302
|
-
c.verifiableCredential
|
|
305
|
+
(0, utils_2.extractIssuer)(c.verifiableCredential) +
|
|
303
306
|
' ' +
|
|
304
307
|
(0, utils_1.shortDate)(c.verifiableCredential.issuanceDate) +
|
|
305
308
|
' ago',
|
package/build/sdr.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdr.js","sourceRoot":"","sources":["../src/sdr.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AACA,mCAAkC;AAClC,yCAAmC;AACnC,wDAA+B;AAC/B,sEAAoC;AACpC,2CAAqD;AAErD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;AAE9B,MAAM,GAAG,GAAG,mBAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,8BAA8B,CAAC,CAAA;AAE9E,GAAG;KACA,OAAO,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;KACtC,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,CAAO,GAAG,EAAE,EAAE;IACpB,MAAM,KAAK,GAAG,IAAA,gBAAQ,EAAC,mBAAO,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAA;IAC7C,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,cAAc,EAAE,CAAA;IAEhD,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,0BAA0B,EAAE,CAAA;IAE1D,MAAM,QAAQ,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;IAEnD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;QAC5B,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QACxB,OAAO,CAAC,IAAI,EAAE,CAAA;KACf;IACD,MAAM,OAAO,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;QACpC;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;YAC5C,OAAO,EAAE,YAAY;SACtB;QACD;YACE,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,aAAa;YACtB,IAAI,EAAE,cAAc;YACpB,QAAQ,EAAE,EAAE;YACZ,
|
|
1
|
+
{"version":3,"file":"sdr.js","sourceRoot":"","sources":["../src/sdr.ts"],"names":[],"mappings":"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"}
|
package/build/util.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,wBAAsB,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAsBjD"}
|
package/build/util.js
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.readStdin = void 0;
|
|
13
|
+
function readStdin() {
|
|
14
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
15
|
+
return new Promise((resolve, reject) => {
|
|
16
|
+
let data = '';
|
|
17
|
+
process.stdin.setEncoding('utf-8');
|
|
18
|
+
process.stdin.on('readable', () => {
|
|
19
|
+
let chunk;
|
|
20
|
+
while ((chunk = process.stdin.read())) {
|
|
21
|
+
data += chunk;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
process.stdin.on('end', () => {
|
|
25
|
+
// There will be a trailing \n from the user hitting enter. Get rid of it.
|
|
26
|
+
data = data.replace(/\n$/, '');
|
|
27
|
+
resolve(data);
|
|
28
|
+
});
|
|
29
|
+
process.stdin.on('error', (error) => {
|
|
30
|
+
reject(error);
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
exports.readStdin = readStdin;
|
|
36
|
+
//# sourceMappingURL=util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,SAAsB,SAAS;;QAC7B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,IAAI,GAAG,EAAE,CAAA;YACb,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;YAElC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE;gBAChC,IAAI,KAAa,CAAA;gBACjB,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE;oBACrC,IAAI,IAAI,KAAK,CAAA;iBACd;YACH,CAAC,CAAC,CAAA;YAEF,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBAC3B,0EAA0E;gBAC1E,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;gBAC9B,OAAO,CAAC,IAAI,CAAC,CAAA;YACf,CAAC,CAAC,CAAA;YAEF,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBAClC,MAAM,CAAC,KAAK,CAAC,CAAA;YACf,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;CAAA;AAtBD,8BAsBC"}
|
package/default/client.yml
CHANGED
|
@@ -57,8 +57,10 @@ agent:
|
|
|
57
57
|
- unpackDIDCommMessage
|
|
58
58
|
- sendDIDCommMessage
|
|
59
59
|
- sendMessageDIDCommAlpha1
|
|
60
|
-
- createVerifiablePresentation
|
|
61
60
|
- createVerifiableCredential
|
|
61
|
+
- createVerifiablePresentation
|
|
62
|
+
- verifyCredential
|
|
63
|
+
- verifyPresentation
|
|
62
64
|
- createSelectiveDisclosureRequest
|
|
63
65
|
- getVerifiableCredentialsForSdr
|
|
64
66
|
- validatePresentationAgainstSdr
|
package/default/default.yml
CHANGED
|
@@ -54,8 +54,10 @@ constants:
|
|
|
54
54
|
- unpackDIDCommMessage
|
|
55
55
|
- sendDIDCommMessage
|
|
56
56
|
- sendMessageDIDCommAlpha1
|
|
57
|
-
- createVerifiablePresentation
|
|
58
57
|
- createVerifiableCredential
|
|
58
|
+
- createVerifiablePresentation
|
|
59
|
+
- verifyCredential
|
|
60
|
+
- verifyPresentation
|
|
59
61
|
- createSelectiveDisclosureRequest
|
|
60
62
|
- getVerifiableCredentialsForSdr
|
|
61
63
|
- validatePresentationAgainstSdr
|
|
@@ -275,6 +277,19 @@ didDiscovery:
|
|
|
275
277
|
- $require: '@veramo/did-manager#AliasDiscoveryProvider'
|
|
276
278
|
- $require: '@veramo/data-store#ProfileDiscoveryProvider'
|
|
277
279
|
|
|
280
|
+
# W3C credentialPlugin
|
|
281
|
+
credentialIssuerLD:
|
|
282
|
+
$require: '@veramo/credential-ld#CredentialIssuerLD'
|
|
283
|
+
$args:
|
|
284
|
+
- suites:
|
|
285
|
+
- $require: '@veramo/credential-ld#VeramoEd25519Signature2018'
|
|
286
|
+
- $require: '@veramo/credential-ld#VeramoEcdsaSecp256k1RecoverySignature2020'
|
|
287
|
+
contextMaps:
|
|
288
|
+
# The LdDefaultContext is a "catch-all" for now.
|
|
289
|
+
- $require: '@veramo/credential-ld?t=object#LdDefaultContexts'
|
|
290
|
+
- $require: '@transmute/credentials-context?t=object#contexts'
|
|
291
|
+
# others should be included here
|
|
292
|
+
|
|
278
293
|
# Agent
|
|
279
294
|
agent:
|
|
280
295
|
$require: '@veramo/core#Agent'
|
|
@@ -288,6 +303,7 @@ agent:
|
|
|
288
303
|
- $ref: /messageHandler
|
|
289
304
|
- $require: '@veramo/did-comm#DIDComm'
|
|
290
305
|
- $require: '@veramo/credential-w3c#CredentialIssuer'
|
|
306
|
+
- $ref: /credentialIssuerLD
|
|
291
307
|
- $require: '@veramo/selective-disclosure#SelectiveDisclosure'
|
|
292
308
|
- $require: '@veramo/data-store#DataStore'
|
|
293
309
|
$args:
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@veramo/cli",
|
|
3
3
|
"description": "Veramo command line application.",
|
|
4
|
-
"version": "3.1.
|
|
4
|
+
"version": "3.1.2-next.28+8c49e70c",
|
|
5
5
|
"main": "build/cli.js",
|
|
6
6
|
"types": "build/cli.d.ts",
|
|
7
7
|
"bin": {
|
|
@@ -14,28 +14,28 @@
|
|
|
14
14
|
"update-veramo-latest": "yarn add @veramo/core@latest @veramo/discovery@latest @veramo/remote-client@latest @veramo/remote-server@latest @veramo/did-provider-key@latest @veramo/did-resolver@latest @veramo/did-jwt@latest @veramo/credential-w3c@latest @veramo/did-provider-ethr@latest @veramo/did-provider-web@latest @veramo/did-comm@latest @veramo/kms-local@latest @veramo/selective-disclosure@latest @veramo/data-store@latest @veramo/key-manager@latest @veramo/message-handler@latest @veramo/did-manager@latest @veramo/url-handler@latest"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@microsoft/api-extractor": "7.
|
|
18
|
-
"@microsoft/api-extractor-model": "7.
|
|
17
|
+
"@microsoft/api-extractor": "7.19.4",
|
|
18
|
+
"@microsoft/api-extractor-model": "7.15.3",
|
|
19
19
|
"@types/blessed": "^0.1.17",
|
|
20
20
|
"@types/swagger-ui-express": "^4.1.2",
|
|
21
|
-
"@veramo/core": "^3.1.
|
|
22
|
-
"@veramo/credential-w3c": "^3.1.
|
|
23
|
-
"@veramo/data-store": "^3.1.
|
|
24
|
-
"@veramo/did-comm": "^3.1.
|
|
25
|
-
"@veramo/did-discovery": "^3.1.
|
|
26
|
-
"@veramo/did-jwt": "^3.1.
|
|
27
|
-
"@veramo/did-manager": "^3.1.
|
|
28
|
-
"@veramo/did-provider-ethr": "^3.1.
|
|
29
|
-
"@veramo/did-provider-key": "^3.1.
|
|
30
|
-
"@veramo/did-provider-web": "^3.1.
|
|
31
|
-
"@veramo/did-resolver": "^3.1.
|
|
32
|
-
"@veramo/key-manager": "^3.1.
|
|
33
|
-
"@veramo/kms-local": "^3.1.
|
|
34
|
-
"@veramo/message-handler": "^3.1.
|
|
35
|
-
"@veramo/remote-client": "^3.1.
|
|
36
|
-
"@veramo/remote-server": "^3.1.
|
|
37
|
-
"@veramo/selective-disclosure": "^3.1.
|
|
38
|
-
"@veramo/url-handler": "^3.1.
|
|
21
|
+
"@veramo/core": "^3.1.2-next.28+8c49e70c",
|
|
22
|
+
"@veramo/credential-w3c": "^3.1.2-next.28+8c49e70c",
|
|
23
|
+
"@veramo/data-store": "^3.1.2-next.28+8c49e70c",
|
|
24
|
+
"@veramo/did-comm": "^3.1.2-next.28+8c49e70c",
|
|
25
|
+
"@veramo/did-discovery": "^3.1.2-next.28+8c49e70c",
|
|
26
|
+
"@veramo/did-jwt": "^3.1.2-next.28+8c49e70c",
|
|
27
|
+
"@veramo/did-manager": "^3.1.2-next.28+8c49e70c",
|
|
28
|
+
"@veramo/did-provider-ethr": "^3.1.2-next.28+8c49e70c",
|
|
29
|
+
"@veramo/did-provider-key": "^3.1.2-next.28+8c49e70c",
|
|
30
|
+
"@veramo/did-provider-web": "^3.1.2-next.28+8c49e70c",
|
|
31
|
+
"@veramo/did-resolver": "^3.1.2-next.28+8c49e70c",
|
|
32
|
+
"@veramo/key-manager": "^3.1.2-next.28+8c49e70c",
|
|
33
|
+
"@veramo/kms-local": "^3.1.2-next.28+8c49e70c",
|
|
34
|
+
"@veramo/message-handler": "^3.1.2-next.28+8c49e70c",
|
|
35
|
+
"@veramo/remote-client": "^3.1.2-next.28+8c49e70c",
|
|
36
|
+
"@veramo/remote-server": "^3.1.2-next.28+8c49e70c",
|
|
37
|
+
"@veramo/selective-disclosure": "^3.1.2-next.28+8c49e70c",
|
|
38
|
+
"@veramo/url-handler": "^3.1.2-next.28+8c49e70c",
|
|
39
39
|
"blessed": "^0.1.81",
|
|
40
40
|
"commander": "^8.0.0",
|
|
41
41
|
"console-table-printer": "^2.8.2",
|
|
@@ -53,9 +53,10 @@
|
|
|
53
53
|
"inquirer": "^8.0.0",
|
|
54
54
|
"inquirer-autocomplete-prompt": "^1.2.0",
|
|
55
55
|
"json-schema": "^0.4.0",
|
|
56
|
+
"json5": "^2.2.0",
|
|
56
57
|
"jsonpointer": "^5.0.0",
|
|
57
58
|
"oas-resolver": "^2.5.3",
|
|
58
|
-
"openapi-types": "
|
|
59
|
+
"openapi-types": "10.0.0",
|
|
59
60
|
"passport": "^0.5.0",
|
|
60
61
|
"passport-http-bearer": "^1.0.1",
|
|
61
62
|
"pg": "^8.6.0",
|
|
@@ -99,5 +100,5 @@
|
|
|
99
100
|
],
|
|
100
101
|
"license": "Apache-2.0",
|
|
101
102
|
"keywords": [],
|
|
102
|
-
"gitHead": "
|
|
103
|
+
"gitHead": "8c49e70c6f82ffab3ddc7806a96c3895729c8ba0"
|
|
103
104
|
}
|
package/src/credential.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
import { W3CCredential } from '@veramo/core'
|
|
2
1
|
import { getAgent } from './setup'
|
|
3
2
|
import { program } from 'commander'
|
|
4
3
|
import inquirer from 'inquirer'
|
|
5
4
|
import qrcode from 'qrcode-terminal'
|
|
5
|
+
import * as fs from 'fs'
|
|
6
|
+
import * as json5 from 'json5'
|
|
7
|
+
import { readStdin } from './util'
|
|
8
|
+
import { CredentialPayload } from '@veramo/core'
|
|
6
9
|
|
|
7
10
|
const credential = program.command('credential').description('W3C Verifiable Credential')
|
|
8
11
|
|
|
@@ -10,6 +13,7 @@ credential
|
|
|
10
13
|
.command('create', { isDefault: true })
|
|
11
14
|
.description('Create W3C Verifiable Credential')
|
|
12
15
|
.option('-s, --send', 'Send')
|
|
16
|
+
.option('-j, --json', 'Output in JSON')
|
|
13
17
|
.option('-q, --qrcode', 'Show qrcode')
|
|
14
18
|
.action(async (cmd) => {
|
|
15
19
|
const agent = getAgent(program.opts().config)
|
|
@@ -19,6 +23,12 @@ credential
|
|
|
19
23
|
process.exit()
|
|
20
24
|
}
|
|
21
25
|
const answers = await inquirer.prompt([
|
|
26
|
+
{
|
|
27
|
+
type: 'list',
|
|
28
|
+
name: 'proofFormat',
|
|
29
|
+
choices: ['jwt', 'lds'],
|
|
30
|
+
message: 'Credential proofFormat',
|
|
31
|
+
},
|
|
22
32
|
{
|
|
23
33
|
type: 'list',
|
|
24
34
|
name: 'iss',
|
|
@@ -68,9 +78,9 @@ credential
|
|
|
68
78
|
const type: string = answers.claimType
|
|
69
79
|
credentialSubject[type] = answers.claimValue
|
|
70
80
|
|
|
71
|
-
const credential:
|
|
81
|
+
const credential: CredentialPayload = {
|
|
72
82
|
issuer: { id: answers.iss },
|
|
73
|
-
'@context': ['https://www.w3.org/2018/credentials/v1'],
|
|
83
|
+
'@context': ['https://www.w3.org/2018/credentials/v1', 'https://veramo.io/contexts/profile/v1'],
|
|
74
84
|
type: answers.type.split(','),
|
|
75
85
|
issuanceDate: new Date().toISOString(),
|
|
76
86
|
credentialSubject,
|
|
@@ -101,18 +111,27 @@ credential
|
|
|
101
111
|
const verifiableCredential = await agent.createVerifiableCredential({
|
|
102
112
|
save: true,
|
|
103
113
|
credential,
|
|
104
|
-
proofFormat:
|
|
114
|
+
proofFormat: answers.proofFormat,
|
|
105
115
|
})
|
|
106
116
|
|
|
107
117
|
if (cmd.send) {
|
|
118
|
+
let body
|
|
119
|
+
let type
|
|
120
|
+
if (answers.proofFormat == 'jwt') {
|
|
121
|
+
body = verifiableCredential.proof.jwt
|
|
122
|
+
type = 'jwt'
|
|
123
|
+
} else {
|
|
124
|
+
body = verifiableCredential
|
|
125
|
+
type = 'w3c.vc'
|
|
126
|
+
}
|
|
108
127
|
try {
|
|
109
128
|
const message = await agent.sendMessageDIDCommAlpha1({
|
|
110
129
|
save: true,
|
|
111
130
|
data: {
|
|
112
131
|
from: answers.iss,
|
|
113
132
|
to: answers.sub,
|
|
114
|
-
type
|
|
115
|
-
body
|
|
133
|
+
type,
|
|
134
|
+
body,
|
|
116
135
|
},
|
|
117
136
|
})
|
|
118
137
|
console.dir(message, { depth: 10 })
|
|
@@ -124,6 +143,48 @@ credential
|
|
|
124
143
|
if (cmd.qrcode) {
|
|
125
144
|
qrcode.generate(verifiableCredential.proof.jwt)
|
|
126
145
|
} else {
|
|
127
|
-
|
|
146
|
+
if (cmd.json) {
|
|
147
|
+
console.log(JSON.stringify(verifiableCredential, null, 2))
|
|
148
|
+
} else {
|
|
149
|
+
console.dir(verifiableCredential, { depth: 10 })
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
})
|
|
153
|
+
|
|
154
|
+
credential
|
|
155
|
+
.command('verify')
|
|
156
|
+
.description('Verify a W3C Verifiable Credential provided as raw string, file or stdin')
|
|
157
|
+
.option('-f, --filename <string>', 'Optional. Read the credential from a file instead of stdin')
|
|
158
|
+
.option('-r, --raw <string>', 'Optional. Specify the credential as a parameter instead of file or stdin')
|
|
159
|
+
.action(async (options) => {
|
|
160
|
+
const agent = getAgent(program.opts().config)
|
|
161
|
+
let raw: string = ''
|
|
162
|
+
if (options.raw) {
|
|
163
|
+
raw = options.raw
|
|
164
|
+
} else if (options.filename) {
|
|
165
|
+
raw = await fs.promises.readFile(options.filename, 'utf-8')
|
|
166
|
+
} else {
|
|
167
|
+
raw = await readStdin()
|
|
168
|
+
}
|
|
169
|
+
let credentialAsJSON: any
|
|
170
|
+
try {
|
|
171
|
+
credentialAsJSON = json5.parse(raw)
|
|
172
|
+
} catch (e: any) {
|
|
173
|
+
credentialAsJSON = {
|
|
174
|
+
proof: {
|
|
175
|
+
type: 'JwtProof2020',
|
|
176
|
+
jwt: raw,
|
|
177
|
+
},
|
|
178
|
+
} as any
|
|
179
|
+
}
|
|
180
|
+
try {
|
|
181
|
+
const result = await agent.verifyCredential({ credential: credentialAsJSON })
|
|
182
|
+
if (result === true) {
|
|
183
|
+
console.log('Credential was verified successfully.')
|
|
184
|
+
} else {
|
|
185
|
+
console.error('Credential could not be verified.')
|
|
186
|
+
}
|
|
187
|
+
} catch (e) {
|
|
188
|
+
console.error(e.message)
|
|
128
189
|
}
|
|
129
190
|
})
|
|
@@ -3,6 +3,7 @@ import { UniqueVerifiableCredential } from '@veramo/data-store'
|
|
|
3
3
|
import { shortDate, shortDid } from './utils'
|
|
4
4
|
import { ConfiguredAgent } from '../setup'
|
|
5
5
|
import { styles } from './styles'
|
|
6
|
+
import { asArray, extractIssuer } from '@veramo/utils'
|
|
6
7
|
|
|
7
8
|
export const getCredentialsTable = async (agent: ConfiguredAgent, screen: Widgets.Screen) => {
|
|
8
9
|
screen.title = 'Credentials'
|
|
@@ -25,8 +26,8 @@ export const getCredentialsTable = async (agent: ConfiguredAgent, screen: Widget
|
|
|
25
26
|
[['Created', 'Type', 'From', 'To']].concat(
|
|
26
27
|
credentials.map(({ verifiableCredential: m }) => [
|
|
27
28
|
shortDate(m.issuanceDate),
|
|
28
|
-
m.type.join(','),
|
|
29
|
-
shortDid(m
|
|
29
|
+
asArray(m.type || []).join(','),
|
|
30
|
+
shortDid(extractIssuer(m)),
|
|
30
31
|
shortDid(m.credentialSubject.id),
|
|
31
32
|
]),
|
|
32
33
|
),
|
|
@@ -3,6 +3,7 @@ import { UniqueVerifiablePresentation } from '@veramo/data-store'
|
|
|
3
3
|
import { shortDate, shortDid } from './utils'
|
|
4
4
|
import { ConfiguredAgent } from '../setup'
|
|
5
5
|
import { styles } from './styles'
|
|
6
|
+
import { asArray } from '@veramo/utils'
|
|
6
7
|
|
|
7
8
|
export const getPresentationsTable = async (agent: ConfiguredAgent, screen: Widgets.Screen) => {
|
|
8
9
|
screen.title = 'Presentations'
|
|
@@ -25,9 +26,9 @@ export const getPresentationsTable = async (agent: ConfiguredAgent, screen: Widg
|
|
|
25
26
|
[['Created', 'Type', 'Holder', 'Verifier']].concat(
|
|
26
27
|
presentations.map(({ verifiablePresentation: m }) => [
|
|
27
28
|
shortDate(m.issuanceDate),
|
|
28
|
-
m.type.join(','),
|
|
29
|
+
asArray(m.type || []).join(','),
|
|
29
30
|
shortDid(m.holder),
|
|
30
|
-
shortDid(m.verifier.join(',')),
|
|
31
|
+
shortDid(asArray(m.verifier || []).join(',')),
|
|
31
32
|
]),
|
|
32
33
|
),
|
|
33
34
|
)
|
package/src/presentation.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
import { W3CCredential } from '@veramo/core'
|
|
2
1
|
import { getAgent } from './setup'
|
|
3
2
|
import { program } from 'commander'
|
|
4
3
|
import inquirer from 'inquirer'
|
|
5
4
|
import qrcode from 'qrcode-terminal'
|
|
5
|
+
import { readStdin } from './util'
|
|
6
|
+
import * as fs from 'fs'
|
|
7
|
+
import * as json5 from 'json5'
|
|
8
|
+
import { extractIssuer } from '@veramo/utils'
|
|
6
9
|
|
|
7
10
|
const presentation = program.command('presentation').description('W3C Verifiable Presentation')
|
|
8
11
|
|
|
@@ -85,7 +88,7 @@ presentation
|
|
|
85
88
|
name:
|
|
86
89
|
JSON.stringify(credential.verifiableCredential.credentialSubject) +
|
|
87
90
|
' | Issuer: ' +
|
|
88
|
-
credential.verifiableCredential
|
|
91
|
+
extractIssuer(credential.verifiableCredential),
|
|
89
92
|
value: credential.verifiableCredential,
|
|
90
93
|
})
|
|
91
94
|
}
|
|
@@ -153,3 +156,43 @@ presentation
|
|
|
153
156
|
}
|
|
154
157
|
}
|
|
155
158
|
})
|
|
159
|
+
|
|
160
|
+
presentation
|
|
161
|
+
.command('verify')
|
|
162
|
+
.description('Verify a W3C Verifiable Presentation provided as a string param or a file or from stdin')
|
|
163
|
+
.option('-c, --challenge <string>', 'Optional. Specify a challenge that the presentation should match.')
|
|
164
|
+
.option('-d, --domain <string>', 'Optional. Specify a domain that the presentation should match.')
|
|
165
|
+
.option('-f, --filename <string>', 'Optional. Read the presentation from a file instead of stdin')
|
|
166
|
+
.option('-r, --raw <string>', 'Optional. Presentation as a parameter string instead of a file or stdin.')
|
|
167
|
+
.action(async (options) => {
|
|
168
|
+
const agent = getAgent(program.opts().config)
|
|
169
|
+
let raw: string = ''
|
|
170
|
+
if (options.raw) {
|
|
171
|
+
raw = options.raw
|
|
172
|
+
} else if (options.filename) {
|
|
173
|
+
raw = await fs.promises.readFile(options.filename, 'utf-8')
|
|
174
|
+
} else {
|
|
175
|
+
raw = await readStdin()
|
|
176
|
+
}
|
|
177
|
+
let presentationAsJSON: any
|
|
178
|
+
try {
|
|
179
|
+
presentationAsJSON = json5.parse(raw)
|
|
180
|
+
} catch (e: any) {
|
|
181
|
+
presentationAsJSON = {
|
|
182
|
+
proof: {
|
|
183
|
+
type: 'JwtProof2020',
|
|
184
|
+
jwt: raw,
|
|
185
|
+
},
|
|
186
|
+
} as any
|
|
187
|
+
}
|
|
188
|
+
const result = await agent.verifyPresentation({
|
|
189
|
+
presentation: presentationAsJSON,
|
|
190
|
+
challenge: options.challenge,
|
|
191
|
+
domain: options.domain,
|
|
192
|
+
})
|
|
193
|
+
if (result === true) {
|
|
194
|
+
console.log('Presentation was verified successfully.')
|
|
195
|
+
} else {
|
|
196
|
+
console.error('Presentation could not be verified.')
|
|
197
|
+
}
|
|
198
|
+
})
|
package/src/sdr.ts
CHANGED
|
@@ -5,6 +5,8 @@ import inquirer from 'inquirer'
|
|
|
5
5
|
import qrcode from 'qrcode-terminal'
|
|
6
6
|
import { shortDate, shortDid } from './explore/utils'
|
|
7
7
|
import { VerifiableCredential } from '@veramo/core'
|
|
8
|
+
import { asArray, extractIssuer } from '@veramo/utils'
|
|
9
|
+
|
|
8
10
|
const fuzzy = require('fuzzy')
|
|
9
11
|
|
|
10
12
|
const sdr = program.command('sdr').description('Selective Disclosure Request')
|
|
@@ -36,14 +38,16 @@ sdr
|
|
|
36
38
|
message: 'Subject DID',
|
|
37
39
|
type: 'autocomplete',
|
|
38
40
|
pageSize: 15,
|
|
39
|
-
suggestOnly: true,
|
|
40
41
|
source: async (answers: any, input: string) => {
|
|
41
42
|
const res = fuzzy
|
|
42
43
|
.filter(input, subjects)
|
|
43
44
|
.map((el: any) => (typeof el === 'string' ? el : el.original))
|
|
44
45
|
return res
|
|
45
46
|
},
|
|
46
|
-
validate(val) {
|
|
47
|
+
validate: (val) => {
|
|
48
|
+
if (val && typeof val !== 'string') {
|
|
49
|
+
val = val.value
|
|
50
|
+
}
|
|
47
51
|
if (!val || !val.startsWith('did:')) {
|
|
48
52
|
return "Subject DID does not start with 'did:'..."
|
|
49
53
|
}
|
|
@@ -173,7 +177,7 @@ sdr
|
|
|
173
177
|
name:
|
|
174
178
|
JSON.stringify(credential.verifiableCredential.credentialSubject) +
|
|
175
179
|
' | Issuer: ' +
|
|
176
|
-
credential.verifiableCredential
|
|
180
|
+
extractIssuer(credential.verifiableCredential),
|
|
177
181
|
value: credential.verifiableCredential.proof.jwt,
|
|
178
182
|
})
|
|
179
183
|
}
|
|
@@ -305,9 +309,9 @@ sdr
|
|
|
305
309
|
name:
|
|
306
310
|
c.verifiableCredential.credentialSubject[item.claimType] +
|
|
307
311
|
' (' +
|
|
308
|
-
c.verifiableCredential.type.join(',') +
|
|
312
|
+
asArray(c.verifiableCredential.type || []).join(',') +
|
|
309
313
|
') issued by: ' +
|
|
310
|
-
c.verifiableCredential
|
|
314
|
+
extractIssuer(c.verifiableCredential) +
|
|
311
315
|
' ' +
|
|
312
316
|
shortDate(c.verifiableCredential.issuanceDate) +
|
|
313
317
|
' ago',
|
package/src/util.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export async function readStdin(): Promise<string> {
|
|
2
|
+
return new Promise((resolve, reject) => {
|
|
3
|
+
let data = ''
|
|
4
|
+
process.stdin.setEncoding('utf-8')
|
|
5
|
+
|
|
6
|
+
process.stdin.on('readable', () => {
|
|
7
|
+
let chunk: string
|
|
8
|
+
while ((chunk = process.stdin.read())) {
|
|
9
|
+
data += chunk
|
|
10
|
+
}
|
|
11
|
+
})
|
|
12
|
+
|
|
13
|
+
process.stdin.on('end', () => {
|
|
14
|
+
// There will be a trailing \n from the user hitting enter. Get rid of it.
|
|
15
|
+
data = data.replace(/\n$/, '')
|
|
16
|
+
resolve(data)
|
|
17
|
+
})
|
|
18
|
+
|
|
19
|
+
process.stdin.on('error', (error) => {
|
|
20
|
+
reject(error)
|
|
21
|
+
})
|
|
22
|
+
})
|
|
23
|
+
}
|