solid-ui 2.4.28-a414b470 → 2.4.28-df3d9431
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/dist/solid-ui.js +248 -318
- package/dist/solid-ui.js.map +1 -1
- package/dist/solid-ui.min.js +1 -1
- package/dist/solid-ui.min.js.map +1 -1
- package/lib/chat/keys.d.ts +3 -0
- package/lib/chat/keys.d.ts.map +1 -1
- package/lib/chat/keys.js +124 -80
- package/lib/chat/keys.js.map +1 -1
- package/lib/chat/message.js +35 -35
- package/lib/chat/message.js.map +1 -1
- package/lib/chat/signature.d.ts +0 -2
- package/lib/chat/signature.d.ts.map +1 -1
- package/lib/chat/signature.js +1 -70
- package/lib/chat/signature.js.map +1 -1
- package/lib/style.js +2 -0
- package/lib/style.js.map +1 -1
- package/lib/utils/keyHelpers/accessData.d.ts +2 -2
- package/lib/utils/keyHelpers/accessData.d.ts.map +1 -1
- package/lib/utils/keyHelpers/accessData.js +51 -131
- package/lib/utils/keyHelpers/accessData.js.map +1 -1
- package/lib/utils/keyHelpers/otherHelpers.d.ts +3 -0
- package/lib/utils/keyHelpers/otherHelpers.d.ts.map +1 -0
- package/lib/utils/keyHelpers/otherHelpers.js +23 -0
- package/lib/utils/keyHelpers/otherHelpers.js.map +1 -0
- package/lib/versionInfo.js +2 -2
- package/lib/versionInfo.js.map +1 -1
- package/package.json +3 -1
package/lib/chat/keys.d.ts
CHANGED
|
@@ -9,5 +9,8 @@ export declare function generatePublicKey(privateKey: string): string;
|
|
|
9
9
|
* @returns string | undefined
|
|
10
10
|
*/
|
|
11
11
|
export declare function getPublicKey(webId: NamedNode): Promise<string | undefined>;
|
|
12
|
+
export declare function validPublicKey(webId: NamedNode, publicKey: string | undefined, privateKey: string): boolean;
|
|
13
|
+
export declare function generateAndStoreNewPublicKey(webId: NamedNode, privateKey: string, publicKey: string | undefined, publicKeyDoc: string): Promise<void>;
|
|
14
|
+
export declare function createAndSaveKeyPairs(webId: NamedNode, publicKey: string | undefined, privateKeyDoc: string, publicKeyDoc: string): Promise<string>;
|
|
12
15
|
export declare function getPrivateKey(webId: NamedNode): Promise<string>;
|
|
13
16
|
//# sourceMappingURL=keys.d.ts.map
|
package/lib/chat/keys.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/chat/keys.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAKlC,wBAAgB,kBAAkB,IAAK,MAAM,CAE5C;AAED,wBAAgB,iBAAiB,CAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAE,KAAK,EAAE,SAAS,+
|
|
1
|
+
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/chat/keys.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAKlC,wBAAgB,kBAAkB,IAAK,MAAM,CAE5C;AAED,wBAAgB,iBAAiB,CAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAE,KAAK,EAAE,SAAS,+BAgBnD;AAED,wBAAgB,cAAc,CAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAM5G;AAED,wBAAsB,4BAA4B,CAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,YAAY,EAAE,MAAM,iBAK5I;AAED,wBAAsB,qBAAqB,CAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,mBAQxI;AAED,wBAAsB,aAAa,CAAE,KAAK,EAAE,SAAS,mBAoBpD"}
|
package/lib/chat/keys.js
CHANGED
|
@@ -5,10 +5,13 @@ var _typeof = require("@babel/runtime/helpers/typeof");
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
+
exports.createAndSaveKeyPairs = createAndSaveKeyPairs;
|
|
9
|
+
exports.generateAndStoreNewPublicKey = generateAndStoreNewPublicKey;
|
|
8
10
|
exports.generatePrivateKey = generatePrivateKey;
|
|
9
11
|
exports.generatePublicKey = generatePublicKey;
|
|
10
12
|
exports.getPrivateKey = getPrivateKey;
|
|
11
13
|
exports.getPublicKey = getPublicKey;
|
|
14
|
+
exports.validPublicKey = validPublicKey;
|
|
12
15
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
13
16
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
14
17
|
var debug = _interopRequireWildcard(require("../debug"));
|
|
@@ -44,109 +47,150 @@ function _getPublicKey() {
|
|
|
44
47
|
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
45
48
|
while (1) switch (_context2.prev = _context2.next) {
|
|
46
49
|
case 0:
|
|
47
|
-
_context2.
|
|
50
|
+
_context2.prev = 0;
|
|
51
|
+
_context2.next = 3;
|
|
48
52
|
return _solidLogic.store.fetcher.load(webId);
|
|
49
|
-
case
|
|
50
|
-
_context2.next =
|
|
53
|
+
case 3:
|
|
54
|
+
_context2.next = 5;
|
|
51
55
|
return (0, _accessData.pubKeyUrl)(webId);
|
|
52
|
-
case
|
|
56
|
+
case 5:
|
|
53
57
|
publicKeyDoc = _context2.sent;
|
|
54
|
-
_context2.prev =
|
|
55
|
-
_context2.next =
|
|
58
|
+
_context2.prev = 6;
|
|
59
|
+
_context2.next = 9;
|
|
56
60
|
return _solidLogic.store.fetcher.load(publicKeyDoc);
|
|
57
|
-
case
|
|
61
|
+
case 9:
|
|
58
62
|
// url.href)
|
|
59
63
|
key = _solidLogic.store.any(webId, ns.solid('publicKey'));
|
|
60
64
|
return _context2.abrupt("return", key === null || key === void 0 ? void 0 : key.value);
|
|
61
|
-
case
|
|
62
|
-
_context2.prev =
|
|
63
|
-
_context2.t0 = _context2["catch"](
|
|
65
|
+
case 13:
|
|
66
|
+
_context2.prev = 13;
|
|
67
|
+
_context2.t0 = _context2["catch"](6);
|
|
68
|
+
debug.error(_context2.t0);
|
|
64
69
|
return _context2.abrupt("return", undefined);
|
|
65
|
-
case
|
|
70
|
+
case 17:
|
|
71
|
+
_context2.next = 23;
|
|
72
|
+
break;
|
|
73
|
+
case 19:
|
|
74
|
+
_context2.prev = 19;
|
|
75
|
+
_context2.t1 = _context2["catch"](0);
|
|
76
|
+
debug.error(_context2.t1);
|
|
77
|
+
return _context2.abrupt("return", undefined);
|
|
78
|
+
case 23:
|
|
66
79
|
case "end":
|
|
67
80
|
return _context2.stop();
|
|
68
81
|
}
|
|
69
|
-
}, _callee2, null, [[
|
|
82
|
+
}, _callee2, null, [[0, 19], [6, 13]]);
|
|
70
83
|
}));
|
|
71
84
|
return _getPublicKey.apply(this, arguments);
|
|
72
85
|
}
|
|
73
|
-
function
|
|
74
|
-
|
|
86
|
+
function validPublicKey(webId, publicKey, privateKey) {
|
|
87
|
+
if (privateKey && publicKey !== generatePublicKey(privateKey)) {
|
|
88
|
+
if (confirm('This is strange the publicKey is not valid for\n' + (webId === null || webId === void 0 ? void 0 : webId.uri) + '\'shall we repair keeping the private key ?')) return false;
|
|
89
|
+
}
|
|
90
|
+
return true;
|
|
75
91
|
}
|
|
76
|
-
function
|
|
77
|
-
|
|
78
|
-
|
|
92
|
+
function generateAndStoreNewPublicKey(_x2, _x3, _x4, _x5) {
|
|
93
|
+
return _generateAndStoreNewPublicKey.apply(this, arguments);
|
|
94
|
+
}
|
|
95
|
+
function _generateAndStoreNewPublicKey() {
|
|
96
|
+
_generateAndStoreNewPublicKey = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(webId, privateKey, publicKey, publicKeyDoc) {
|
|
97
|
+
var del, newPublicKey, add;
|
|
79
98
|
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
80
99
|
while (1) switch (_context3.prev = _context3.next) {
|
|
81
100
|
case 0:
|
|
82
|
-
|
|
101
|
+
del = [$rdf.st(webId, ns.solid('publicKey'), $rdf.lit(publicKey || ''), _solidLogic.store.sym(publicKeyDoc))];
|
|
102
|
+
newPublicKey = generatePublicKey(privateKey);
|
|
103
|
+
add = [$rdf.st(webId, ns.solid('publicKey'), $rdf.literal(newPublicKey), _solidLogic.store.sym(publicKeyDoc))];
|
|
104
|
+
_context3.next = 5;
|
|
105
|
+
return saveKeyAndHandleAcl(publicKeyDoc, del, add);
|
|
106
|
+
case 5:
|
|
107
|
+
case "end":
|
|
108
|
+
return _context3.stop();
|
|
109
|
+
}
|
|
110
|
+
}, _callee3);
|
|
111
|
+
}));
|
|
112
|
+
return _generateAndStoreNewPublicKey.apply(this, arguments);
|
|
113
|
+
}
|
|
114
|
+
function createAndSaveKeyPairs(_x6, _x7, _x8, _x9) {
|
|
115
|
+
return _createAndSaveKeyPairs.apply(this, arguments);
|
|
116
|
+
}
|
|
117
|
+
function _createAndSaveKeyPairs() {
|
|
118
|
+
_createAndSaveKeyPairs = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(webId, publicKey, privateKeyDoc, publicKeyDoc) {
|
|
119
|
+
var privateKey, add;
|
|
120
|
+
return _regenerator["default"].wrap(function _callee4$(_context4) {
|
|
121
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
122
|
+
case 0:
|
|
123
|
+
privateKey = generatePrivateKey();
|
|
124
|
+
add = [$rdf.st(webId, ns.solid('privateKey'), $rdf.literal(privateKey), _solidLogic.store.sym(privateKeyDoc))];
|
|
125
|
+
_context4.next = 4;
|
|
126
|
+
return saveKeyAndHandleAcl(privateKeyDoc, [], add, webId.uri);
|
|
127
|
+
case 4:
|
|
128
|
+
_context4.next = 6;
|
|
129
|
+
return generateAndStoreNewPublicKey(webId, privateKey, publicKey, publicKeyDoc);
|
|
130
|
+
case 6:
|
|
131
|
+
return _context4.abrupt("return", privateKey);
|
|
132
|
+
case 7:
|
|
133
|
+
case "end":
|
|
134
|
+
return _context4.stop();
|
|
135
|
+
}
|
|
136
|
+
}, _callee4);
|
|
137
|
+
}));
|
|
138
|
+
return _createAndSaveKeyPairs.apply(this, arguments);
|
|
139
|
+
}
|
|
140
|
+
function getPrivateKey(_x10) {
|
|
141
|
+
return _getPrivateKey.apply(this, arguments);
|
|
142
|
+
}
|
|
143
|
+
function _getPrivateKey() {
|
|
144
|
+
_getPrivateKey = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(webId) {
|
|
145
|
+
var publicKeyDoc, privateKeyDoc, publicKey, privateKey, keyContainer;
|
|
146
|
+
return _regenerator["default"].wrap(function _callee5$(_context5) {
|
|
147
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
148
|
+
case 0:
|
|
149
|
+
_context5.next = 2;
|
|
83
150
|
return _solidLogic.store.fetcher.load(webId);
|
|
84
151
|
case 2:
|
|
85
|
-
|
|
152
|
+
_context5.next = 4;
|
|
86
153
|
return (0, _accessData.pubKeyUrl)(webId);
|
|
87
154
|
case 4:
|
|
88
|
-
publicKeyDoc =
|
|
89
|
-
|
|
155
|
+
publicKeyDoc = _context5.sent;
|
|
156
|
+
_context5.next = 7;
|
|
90
157
|
return (0, _accessData.privKeyUrl)(webId);
|
|
91
158
|
case 7:
|
|
92
|
-
privateKeyDoc =
|
|
93
|
-
|
|
159
|
+
privateKeyDoc = _context5.sent;
|
|
160
|
+
_context5.next = 10;
|
|
94
161
|
return (0, _accessData.getExistingPublicKey)(webId, publicKeyDoc);
|
|
95
162
|
case 10:
|
|
96
|
-
publicKey =
|
|
97
|
-
|
|
163
|
+
publicKey = _context5.sent;
|
|
164
|
+
_context5.next = 13;
|
|
98
165
|
return (0, _accessData.getExistingPrivateKey)(webId, privateKeyDoc);
|
|
99
166
|
case 13:
|
|
100
|
-
privateKey =
|
|
101
|
-
// is publicKey valid ?
|
|
102
|
-
validPublicKey = true;
|
|
103
|
-
if (privateKey && publicKey !== generatePublicKey(privateKey)) {
|
|
104
|
-
if (confirm('This is strange the publicKey is not valid for\n' + (webId === null || webId === void 0 ? void 0 : webId.uri) + '\'shall we repair keeping the private key ?')) validPublicKey = false;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
// create key pair or repair publicKey
|
|
108
|
-
if (!(!privateKey || !publicKey || !validPublicKey)) {
|
|
109
|
-
_context3.next = 34;
|
|
110
|
-
break;
|
|
111
|
-
}
|
|
112
|
-
del = [];
|
|
113
|
-
add = [];
|
|
167
|
+
privateKey = _context5.sent;
|
|
114
168
|
if (privateKey) {
|
|
115
|
-
|
|
169
|
+
_context5.next = 18;
|
|
116
170
|
break;
|
|
117
171
|
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
_context3.next = 31;
|
|
172
|
+
_context5.next = 17;
|
|
173
|
+
return createAndSaveKeyPairs(webId, publicKey, privateKeyDoc, publicKeyDoc);
|
|
174
|
+
case 17:
|
|
175
|
+
privateKey = _context5.sent;
|
|
176
|
+
case 18:
|
|
177
|
+
if (validPublicKey(webId, publicKey, privateKey)) {
|
|
178
|
+
_context5.next = 21;
|
|
126
179
|
break;
|
|
127
180
|
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
del = [$rdf.st(webId, ns.solid('publicKey'), $rdf.lit(publicKey), _solidLogic.store.sym(publicKeyDoc))];
|
|
132
|
-
debug.log(del);
|
|
133
|
-
}
|
|
134
|
-
// update new valid key
|
|
135
|
-
newPublicKey = generatePublicKey(privateKey);
|
|
136
|
-
add = [$rdf.st(webId, ns.solid('publicKey'), $rdf.literal(newPublicKey), _solidLogic.store.sym(publicKeyDoc))];
|
|
137
|
-
_context3.next = 31;
|
|
138
|
-
return saveKey(publicKeyDoc, del, add);
|
|
139
|
-
case 31:
|
|
181
|
+
_context5.next = 21;
|
|
182
|
+
return generateAndStoreNewPublicKey(webId, privateKey, publicKey, publicKeyDoc);
|
|
183
|
+
case 21:
|
|
140
184
|
keyContainer = privateKeyDoc.substring(0, privateKeyDoc.lastIndexOf('/') + 1);
|
|
141
|
-
|
|
185
|
+
_context5.next = 24;
|
|
142
186
|
return (0, _acl.setAcl)(keyContainer, (0, _acl.keyContainerAclBody)(webId.uri));
|
|
143
|
-
case
|
|
144
|
-
return
|
|
145
|
-
case
|
|
187
|
+
case 24:
|
|
188
|
+
return _context5.abrupt("return", privateKey);
|
|
189
|
+
case 25:
|
|
146
190
|
case "end":
|
|
147
|
-
return
|
|
191
|
+
return _context5.stop();
|
|
148
192
|
}
|
|
149
|
-
},
|
|
193
|
+
}, _callee5);
|
|
150
194
|
}));
|
|
151
195
|
return _getPrivateKey.apply(this, arguments);
|
|
152
196
|
}
|
|
@@ -189,7 +233,7 @@ var deleteKeyAcl = /*#__PURE__*/function () {
|
|
|
189
233
|
}
|
|
190
234
|
}, _callee, null, [[4, 11]]);
|
|
191
235
|
}));
|
|
192
|
-
return function deleteKeyAcl(
|
|
236
|
+
return function deleteKeyAcl(_x11) {
|
|
193
237
|
return _ref.apply(this, arguments);
|
|
194
238
|
};
|
|
195
239
|
}();
|
|
@@ -199,35 +243,35 @@ var deleteKeyAcl = /*#__PURE__*/function () {
|
|
|
199
243
|
* create/edit keyDoc
|
|
200
244
|
* set keyDoc acl
|
|
201
245
|
*/
|
|
202
|
-
function
|
|
203
|
-
return
|
|
246
|
+
function saveKeyAndHandleAcl(_x12, _x13, _x14) {
|
|
247
|
+
return _saveKeyAndHandleAcl.apply(this, arguments);
|
|
204
248
|
}
|
|
205
|
-
function
|
|
206
|
-
|
|
249
|
+
function _saveKeyAndHandleAcl() {
|
|
250
|
+
_saveKeyAndHandleAcl = (0, _asyncToGenerator2["default"])(function (keyDoc, del, add) {
|
|
207
251
|
var me = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '';
|
|
208
|
-
return /*#__PURE__*/_regenerator["default"].mark(function
|
|
252
|
+
return /*#__PURE__*/_regenerator["default"].mark(function _callee6() {
|
|
209
253
|
var aclBody;
|
|
210
|
-
return _regenerator["default"].wrap(function
|
|
211
|
-
while (1) switch (
|
|
254
|
+
return _regenerator["default"].wrap(function _callee6$(_context6) {
|
|
255
|
+
while (1) switch (_context6.prev = _context6.next) {
|
|
212
256
|
case 0:
|
|
213
|
-
|
|
257
|
+
_context6.next = 2;
|
|
214
258
|
return deleteKeyAcl(keyDoc);
|
|
215
259
|
case 2:
|
|
216
|
-
|
|
260
|
+
_context6.next = 4;
|
|
217
261
|
return _solidLogic.store.updater.updateMany(del, add);
|
|
218
262
|
case 4:
|
|
219
263
|
// or a promise store.updater.update ?
|
|
220
264
|
// create READ only ACL
|
|
221
265
|
aclBody = (0, _acl.keyAclBody)(keyDoc, me);
|
|
222
|
-
|
|
266
|
+
_context6.next = 7;
|
|
223
267
|
return (0, _acl.setAcl)(keyDoc, aclBody);
|
|
224
268
|
case 7:
|
|
225
269
|
case "end":
|
|
226
|
-
return
|
|
270
|
+
return _context6.stop();
|
|
227
271
|
}
|
|
228
|
-
},
|
|
272
|
+
}, _callee6);
|
|
229
273
|
})();
|
|
230
274
|
});
|
|
231
|
-
return
|
|
275
|
+
return _saveKeyAndHandleAcl.apply(this, arguments);
|
|
232
276
|
}
|
|
233
277
|
//# sourceMappingURL=keys.js.map
|
package/lib/chat/keys.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.js","names":["debug","_interopRequireWildcard","require","_secp256k","_utils","ns","_solidLogic","$rdf","_accessData","_acl","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","generatePrivateKey","bytesToHex","schnorr","utils","randomPrivateKey","generatePublicKey","privateKey","getPublicKey","_x","_getPublicKey","apply","arguments","_asyncToGenerator2","_regenerator","mark","_callee2","webId","publicKeyDoc","wrap","_callee2$","_context2","prev","next","store","fetcher","load","pubKeyUrl","sent","any","solid","abrupt","value","t0","undefined","stop","getPrivateKey","_x2","_getPrivateKey","_callee3","privateKeyDoc","publicKey","validPublicKey","del","add","newPublicKey","keyContainer","_callee3$","_context3","privKeyUrl","getExistingPublicKey","getExistingPrivateKey","confirm","uri","st","literal","sym","saveKey","lit","log","substring","lastIndexOf","setAcl","keyContainerAclBody","deleteKeyAcl","_ref","_callee","keyDoc","keyAclDoc","response","_callee$","_context","webOperation","status","Error","_x3","_x4","_x5","_x6","_saveKey","me","length","_callee4","aclBody","_callee4$","_context4","updater","updateMany","keyAclBody"],"sources":["../../src/chat/keys.ts"],"sourcesContent":["import * as debug from '../debug'\r\nimport { schnorr } from '@noble/curves/secp256k1'\r\nimport { bytesToHex } from '@noble/hashes/utils'\r\nimport * as ns from '../ns'\r\nimport { store } from 'solid-logic'\r\nimport { NamedNode } from 'rdflib'\r\nimport * as $rdf from 'rdflib'\r\nimport { getExistingPublicKey, pubKeyUrl, privKeyUrl, getExistingPrivateKey } from '../utils/keyHelpers/accessData'\r\nimport { setAcl, keyContainerAclBody, keyAclBody } from '../utils/keyHelpers/acl'\r\n\r\nexport function generatePrivateKey (): string {\r\n return bytesToHex(schnorr.utils.randomPrivateKey())\r\n}\r\n\r\nexport function generatePublicKey (privateKey: string): string {\r\n return bytesToHex(schnorr.getPublicKey(privateKey))\r\n}\r\n\r\n/**\r\n * getPublicKey\r\n * used for displaying messages in chat, therefore does not\r\n * create a new key if not found\r\n * @param webId\r\n * @returns string | undefined\r\n */\r\nexport async function getPublicKey (webId: NamedNode) {\r\n await store.fetcher.load(webId)\r\n const publicKeyDoc = await pubKeyUrl(webId)\r\n try {\r\n await store.fetcher.load(publicKeyDoc) // url.href)\r\n const key = store.any(webId, ns.solid('publicKey'))\r\n return key?.value // as NamedNode\r\n } catch (err) {\r\n return undefined\r\n }\r\n}\r\n\r\nexport async function getPrivateKey (webId: NamedNode) {\r\n await store.fetcher.load(webId)\r\n // find keys url's\r\n const publicKeyDoc = await pubKeyUrl(webId)\r\n const privateKeyDoc = await privKeyUrl(webId)\r\n\r\n // find key pair\r\n const publicKey = await getExistingPublicKey(webId, publicKeyDoc)\r\n let privateKey = await getExistingPrivateKey(webId, privateKeyDoc)\r\n\r\n // is publicKey valid ?\r\n let validPublicKey = true\r\n if (privateKey && (publicKey !== generatePublicKey(privateKey as string))) {\r\n if (confirm('This is strange the publicKey is not valid for\\n' + webId?.uri +\r\n '\\'shall we repair keeping the private key ?')) validPublicKey = false\r\n }\r\n\r\n // create key pair or repair publicKey\r\n if (!privateKey || !publicKey || !validPublicKey) {\r\n let del: any[] = []\r\n let add: any[] = []\r\n\r\n if (!privateKey) {\r\n // add = []\r\n privateKey = generatePrivateKey()\r\n add = [$rdf.st(webId, ns.solid('privateKey'), $rdf.literal(privateKey), store.sym(privateKeyDoc))]\r\n await saveKey(privateKeyDoc, [], add, webId.uri)\r\n }\r\n if (!publicKey || !validPublicKey) {\r\n del = []\r\n // delete invalid public key\r\n if (publicKey) {\r\n del = [$rdf.st(webId, ns.solid('publicKey'), $rdf.lit(publicKey), store.sym(publicKeyDoc))]\r\n debug.log(del)\r\n }\r\n // update new valid key\r\n const newPublicKey = generatePublicKey(privateKey)\r\n add = [$rdf.st(webId, ns.solid('publicKey'), $rdf.literal(newPublicKey), store.sym(publicKeyDoc))]\r\n await saveKey(publicKeyDoc, del, add)\r\n }\r\n const keyContainer = privateKeyDoc.substring(0, privateKeyDoc.lastIndexOf('/') + 1)\r\n await setAcl(keyContainer, keyContainerAclBody(webId.uri)) // includes DELETE and PUT\r\n }\r\n return privateKey as string\r\n}\r\n\r\nconst deleteKeyAcl = async (keyDoc: string) => {\r\n await store.fetcher.load(keyDoc)\r\n\r\n const keyAclDoc = store.any(store.sym(keyDoc), store.sym('http://www.iana.org/assignments/link-relations/acl'))\r\n if (keyAclDoc) {\r\n // delete READ only keyAclDoc. This is possible if the webId is an owner\r\n try {\r\n const response = await store.fetcher.webOperation('DELETE', keyAclDoc.value) // this may fail if webId is not an owner\r\n debug.log('delete ' + keyAclDoc.value + ' ' + response.status) // should test 404 and 2xx\r\n } catch (err) {\r\n if (err.response.status !== 404) { throw new Error(err) }\r\n debug.log('delete ' + keyAclDoc.value + ' ' + err.response.status) // should test 404 and 2xx\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * delete acl if keydoc exists\r\n * create/edit keyDoc\r\n * set keyDoc acl\r\n */\r\nasync function saveKey (keyDoc: string, del, add, me: string = '') {\r\n await deleteKeyAcl(keyDoc)\r\n // save key\r\n await store.updater.updateMany(del, add) // or a promise store.updater.update ?\r\n\r\n // create READ only ACL\r\n const aclBody = keyAclBody(keyDoc, me)\r\n await setAcl(keyDoc, aclBody)\r\n}\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"keys.js","names":["debug","_interopRequireWildcard","require","_secp256k","_utils","ns","_solidLogic","$rdf","_accessData","_acl","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","generatePrivateKey","bytesToHex","schnorr","utils","randomPrivateKey","generatePublicKey","privateKey","getPublicKey","_x","_getPublicKey","apply","arguments","_asyncToGenerator2","_regenerator","mark","_callee2","webId","publicKeyDoc","wrap","_callee2$","_context2","prev","next","store","fetcher","load","pubKeyUrl","sent","any","solid","abrupt","value","t0","error","undefined","t1","stop","validPublicKey","publicKey","confirm","uri","generateAndStoreNewPublicKey","_x2","_x3","_x4","_x5","_generateAndStoreNewPublicKey","_callee3","del","newPublicKey","add","_callee3$","_context3","st","lit","sym","literal","saveKeyAndHandleAcl","createAndSaveKeyPairs","_x6","_x7","_x8","_x9","_createAndSaveKeyPairs","_callee4","privateKeyDoc","_callee4$","_context4","getPrivateKey","_x10","_getPrivateKey","_callee5","keyContainer","_callee5$","_context5","privKeyUrl","getExistingPublicKey","getExistingPrivateKey","substring","lastIndexOf","setAcl","keyContainerAclBody","deleteKeyAcl","_ref","_callee","keyDoc","keyAclDoc","response","_callee$","_context","webOperation","log","status","Error","_x11","_x12","_x13","_x14","_saveKeyAndHandleAcl","me","length","_callee6","aclBody","_callee6$","_context6","updater","updateMany","keyAclBody"],"sources":["../../src/chat/keys.ts"],"sourcesContent":["import * as debug from '../debug'\r\nimport { schnorr } from '@noble/curves/secp256k1'\r\nimport { bytesToHex } from '@noble/hashes/utils'\r\nimport * as ns from '../ns'\r\nimport { store } from 'solid-logic'\r\nimport { NamedNode } from 'rdflib'\r\nimport * as $rdf from 'rdflib'\r\nimport { getExistingPublicKey, pubKeyUrl, privKeyUrl, getExistingPrivateKey } from '../utils/keyHelpers/accessData'\r\nimport { setAcl, keyContainerAclBody, keyAclBody } from '../utils/keyHelpers/acl'\r\n\r\nexport function generatePrivateKey (): string {\r\n return bytesToHex(schnorr.utils.randomPrivateKey())\r\n}\r\n\r\nexport function generatePublicKey (privateKey: string): string {\r\n return bytesToHex(schnorr.getPublicKey(privateKey))\r\n}\r\n\r\n/**\r\n * getPublicKey\r\n * used for displaying messages in chat, therefore does not\r\n * create a new key if not found\r\n * @param webId\r\n * @returns string | undefined\r\n */\r\nexport async function getPublicKey (webId: NamedNode) {\r\n try {\r\n await store.fetcher.load(webId)\r\n const publicKeyDoc = await pubKeyUrl(webId)\r\n try {\r\n await store.fetcher.load(publicKeyDoc) // url.href)\r\n const key = store.any(webId, ns.solid('publicKey'))\r\n return key?.value // as NamedNode\r\n } catch (err) {\r\n debug.error(err)\r\n return undefined\r\n }\r\n } catch (err) {\r\n debug.error(err)\r\n return undefined\r\n }\r\n}\r\n\r\nexport function validPublicKey (webId: NamedNode, publicKey: string | undefined, privateKey: string): boolean {\r\n if (privateKey && (publicKey !== generatePublicKey(privateKey as string))) {\r\n if (confirm('This is strange the publicKey is not valid for\\n' + webId?.uri +\r\n '\\'shall we repair keeping the private key ?')) return false\r\n }\r\n return true\r\n}\r\n\r\nexport async function generateAndStoreNewPublicKey (webId: NamedNode, privateKey: string, publicKey: string | undefined, publicKeyDoc: string) {\r\n const del = [$rdf.st(webId, ns.solid('publicKey'), $rdf.lit(publicKey || ''), store.sym(publicKeyDoc))]\r\n const newPublicKey = generatePublicKey(privateKey)\r\n const add = [$rdf.st(webId, ns.solid('publicKey'), $rdf.literal(newPublicKey), store.sym(publicKeyDoc))]\r\n await saveKeyAndHandleAcl(publicKeyDoc, del, add)\r\n}\r\n\r\nexport async function createAndSaveKeyPairs (webId: NamedNode, publicKey: string | undefined, privateKeyDoc: string, publicKeyDoc: string) {\r\n const privateKey = generatePrivateKey()\r\n const add = [$rdf.st(webId, ns.solid('privateKey'), $rdf.literal(privateKey), store.sym(privateKeyDoc))]\r\n await saveKeyAndHandleAcl(privateKeyDoc, [], add, webId.uri)\r\n\r\n await generateAndStoreNewPublicKey(webId, privateKey, publicKey, publicKeyDoc)\r\n\r\n return privateKey\r\n}\r\n\r\nexport async function getPrivateKey (webId: NamedNode) {\r\n await store.fetcher.load(webId)\r\n // find keys url's\r\n const publicKeyDoc = await pubKeyUrl(webId)\r\n const privateKeyDoc = await privKeyUrl(webId)\r\n\r\n // find key pair\r\n const publicKey = await getExistingPublicKey(webId, publicKeyDoc)\r\n let privateKey = await getExistingPrivateKey(webId, privateKeyDoc)\r\n\r\n if (!privateKey) {\r\n privateKey = await createAndSaveKeyPairs(webId, publicKey, privateKeyDoc, publicKeyDoc)\r\n }\r\n if (!validPublicKey(webId, publicKey, privateKey)) {\r\n await generateAndStoreNewPublicKey(webId, privateKey, publicKey, publicKeyDoc)\r\n }\r\n\r\n const keyContainer = privateKeyDoc.substring(0, privateKeyDoc.lastIndexOf('/') + 1)\r\n await setAcl(keyContainer, keyContainerAclBody(webId.uri)) // includes DELETE and PUT\r\n return privateKey as string\r\n}\r\n\r\nconst deleteKeyAcl = async (keyDoc: string) => {\r\n await store.fetcher.load(keyDoc)\r\n\r\n const keyAclDoc = store.any(store.sym(keyDoc), store.sym('http://www.iana.org/assignments/link-relations/acl'))\r\n if (keyAclDoc) {\r\n // delete READ only keyAclDoc. This is possible if the webId is an owner\r\n try {\r\n const response = await store.fetcher.webOperation('DELETE', keyAclDoc.value) // this may fail if webId is not an owner\r\n debug.log('delete ' + keyAclDoc.value + ' ' + response.status) // should test 404 and 2xx\r\n } catch (err) {\r\n if (err.response.status !== 404) { throw new Error(err) }\r\n debug.log('delete ' + keyAclDoc.value + ' ' + err.response.status) // should test 404 and 2xx\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * delete acl if keydoc exists\r\n * create/edit keyDoc\r\n * set keyDoc acl\r\n */\r\nasync function saveKeyAndHandleAcl (keyDoc: string, del, add, me: string = '') {\r\n await deleteKeyAcl(keyDoc)\r\n // save key\r\n await store.updater.updateMany(del, add) // or a promise store.updater.update ?\r\n\r\n // create READ only ACL\r\n const aclBody = keyAclBody(keyDoc, me)\r\n await setAcl(keyDoc, aclBody)\r\n}\r\n"],"mappings":"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"}
|
package/lib/chat/message.js
CHANGED
|
@@ -144,23 +144,20 @@ function renderMessageRow(_x, _x2, _x3, _x4, _x5) {
|
|
|
144
144
|
} // END OF RENDERMESSAGE
|
|
145
145
|
function _renderMessageRow() {
|
|
146
146
|
_renderMessageRow = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee9(channelObject, message, fresh, options, userContext) {
|
|
147
|
-
var
|
|
147
|
+
var colorizeByAuthor, creator, date, latestVersion, latestVersionCreator, msgId, content, versions, replies, thread, straightReplies, _iterator2, _step2, reply, signature, msg, messageRow, publicKey, regex, validSignature, validPublicKeyHexString, originalMessage, edited, sortDate, td1, img, bothDates, td2, text, isURI, para, isImage, _img, anc, bgcolor, getBgColor, strip, td3, toolsButton;
|
|
148
148
|
return _regenerator["default"].wrap(function _callee9$(_context10) {
|
|
149
149
|
while (1) switch (_context10.prev = _context10.next) {
|
|
150
150
|
case 0:
|
|
151
151
|
getBgColor = function _getBgColor(fresh) {
|
|
152
152
|
return fresh ? '#e8ffe8' : 'white';
|
|
153
153
|
};
|
|
154
|
-
|
|
155
|
-
colorizeByAuthor = options.colorizeByAuthor === '1' || options.colorizeByAuthor === true; // const id = store.any(latestVersion, ns.sioc('id'))
|
|
156
|
-
// const replies = store.each(latestVersion, ns.sioc('has_reply'))
|
|
154
|
+
colorizeByAuthor = options.colorizeByAuthor === '1' || options.colorizeByAuthor === true;
|
|
157
155
|
creator = _solidLogic.store.any(message, ns.foaf('maker'));
|
|
158
156
|
date = _solidLogic.store.any(message, ns.dct('created'));
|
|
159
|
-
_context10.next =
|
|
157
|
+
_context10.next = 6;
|
|
160
158
|
return (0, _chatLogic.mostRecentVersion)(message);
|
|
161
|
-
case
|
|
159
|
+
case 6:
|
|
162
160
|
latestVersion = _context10.sent;
|
|
163
|
-
debug.log('@@@@ alain mostRecentVersion');
|
|
164
161
|
debug.log(message);
|
|
165
162
|
debug.log(latestVersion);
|
|
166
163
|
latestVersionCreator = _solidLogic.store.any(latestVersion, ns.foaf('maker')); // use latest content if same owner, else use original
|
|
@@ -170,9 +167,9 @@ function _renderMessageRow() {
|
|
|
170
167
|
debug.log(latestVersionCreator);
|
|
171
168
|
msgId = creator.uri === (latestVersionCreator === null || latestVersionCreator === void 0 ? void 0 : latestVersionCreator.uri) ? latestVersion : message;
|
|
172
169
|
content = _solidLogic.store.any(msgId, ns.sioc('content'));
|
|
173
|
-
_context10.next =
|
|
170
|
+
_context10.next = 17;
|
|
174
171
|
return (0, _chatLogic.allVersions)(msgId);
|
|
175
|
-
case
|
|
172
|
+
case 17:
|
|
176
173
|
versions = _context10.sent;
|
|
177
174
|
if (versions.length > 1) {
|
|
178
175
|
debug.log('renderMessageRow versions: ', versions.join(', '));
|
|
@@ -214,35 +211,38 @@ function _renderMessageRow() {
|
|
|
214
211
|
msg.created = _solidLogic.store.any(msgId, ns.dct('created')).value;
|
|
215
212
|
msg.content = content.value;
|
|
216
213
|
msg.maker = creator.uri;
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
unsignedMessage = true;
|
|
222
|
-
debug.warn(msgId.uri + ' is unsigned'); // TODO replace with UI (colored message ?)
|
|
223
|
-
} else {
|
|
224
|
-
// signed message, get public key and check signature
|
|
225
|
-
(0, _keys.getPublicKey)(creator).then(function (publicKey) {
|
|
226
|
-
debug.log(creator.uri + '\n' + msg.created + '\n' + msg.id + '\n' + publicKey);
|
|
227
|
-
if (!publicKey) {
|
|
228
|
-
debug.warn('message is signed but ' + creator.uri + ' is missing publicKey');
|
|
229
|
-
}
|
|
230
|
-
// check that publicKey is a valid hex string
|
|
231
|
-
var regex = /[0-9A-Fa-f]{6}/g;
|
|
232
|
-
if (!(publicKey !== null && publicKey !== void 0 && publicKey.match(regex))) debug.warn('invalid publicKey hex string\n' + creator.uri + '\n' + publicKey);
|
|
233
|
-
// verify signature
|
|
234
|
-
else if (signature !== null && signature !== void 0 && signature.value && !(0, _signature.verifySignature)(signature === null || signature === void 0 ? void 0 : signature.value, msg, publicKey)) debug.warn('invalid signature\n' + msg.id);
|
|
235
|
-
});
|
|
214
|
+
messageRow = dom.createElement('tr'); // verify signature
|
|
215
|
+
if (signature !== null && signature !== void 0 && signature.value) {
|
|
216
|
+
_context10.next = 38;
|
|
217
|
+
break;
|
|
236
218
|
}
|
|
237
|
-
|
|
238
|
-
|
|
219
|
+
// unsigned message
|
|
220
|
+
messageRow.setAttribute('style', style.textInputBackgroundColorHighlight);
|
|
221
|
+
_context10.next = 48;
|
|
222
|
+
break;
|
|
239
223
|
case 38:
|
|
224
|
+
_context10.next = 40;
|
|
225
|
+
return (0, _keys.getPublicKey)(creator);
|
|
226
|
+
case 40:
|
|
227
|
+
publicKey = _context10.sent;
|
|
228
|
+
debug.log(creator.uri + '\n' + msg.created + '\n' + msg.id + '\n' + publicKey);
|
|
229
|
+
if (!publicKey) {
|
|
230
|
+
debug.warn('message is signed but ' + creator.uri + ' is missing publicKey');
|
|
231
|
+
}
|
|
232
|
+
// check that publicKey is a valid hex string
|
|
233
|
+
regex = /[0-9A-Fa-f]{6}/g;
|
|
234
|
+
validSignature = (0, _signature.verifySignature)(signature === null || signature === void 0 ? void 0 : signature.value, msg, publicKey);
|
|
235
|
+
validPublicKeyHexString = publicKey === null || publicKey === void 0 ? void 0 : publicKey.match(regex);
|
|
236
|
+
if (!validPublicKeyHexString) debug.warn('invalid publicKey hex string\n' + creator.uri + '\n' + publicKey);else if (signature !== null && signature !== void 0 && signature.value && !validSignature) debug.warn('invalid signature\n' + msg.id);
|
|
237
|
+
if (!validSignature || !validPublicKeyHexString) messageRow.setAttribute('style', style.textInputBackgroundColorError);
|
|
238
|
+
case 48:
|
|
239
|
+
_context10.next = 50;
|
|
240
|
+
return (0, _chatLogic.originalVersion)(message);
|
|
241
|
+
case 50:
|
|
240
242
|
originalMessage = _context10.sent;
|
|
241
243
|
edited = !message.sameTerm(originalMessage); // @@ load it first @@ Or display the new data at the old date.
|
|
242
244
|
// @@@ kludge!
|
|
243
245
|
sortDate = _solidLogic.store.the(originalMessage, ns.dct('created'), null, originalMessage.doc()) || _solidLogic.store.the(message, ns.dct('created'), null, message.doc()); // In message
|
|
244
|
-
messageRow = dom.createElement('tr');
|
|
245
|
-
if (unsignedMessage) messageRow.setAttribute('style', 'background-color: red');
|
|
246
246
|
messageRow.AJAR_date = sortDate.value;
|
|
247
247
|
messageRow.AJAR_subject = message;
|
|
248
248
|
td1 = dom.createElement('td');
|
|
@@ -293,9 +293,9 @@ function _renderMessageRow() {
|
|
|
293
293
|
bgcolor = colorizeByAuthor ? pad.lightColorHash(creator) : getBgColor(fresh);
|
|
294
294
|
para.setAttribute('style', messageBodyStyle + 'background-color: ' + bgcolor + ';');
|
|
295
295
|
}
|
|
296
|
-
_context10.next =
|
|
296
|
+
_context10.next = 69;
|
|
297
297
|
return (0, _messageTools.sentimentStripLinked)(message, message.doc());
|
|
298
|
-
case
|
|
298
|
+
case 69:
|
|
299
299
|
strip = _context10.sent;
|
|
300
300
|
if (strip.children.length) {
|
|
301
301
|
td2.appendChild(dom.createElement('br'));
|
|
@@ -360,7 +360,7 @@ function _renderMessageRow() {
|
|
|
360
360
|
}));
|
|
361
361
|
}
|
|
362
362
|
return _context10.abrupt("return", messageRow);
|
|
363
|
-
case
|
|
363
|
+
case 78:
|
|
364
364
|
case "end":
|
|
365
365
|
return _context10.stop();
|
|
366
366
|
}
|