solid-ui 2.4.27-dc50c4e2 → 2.4.27-ddcbbf49
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -1
- package/dist/solid-ui.js +682 -322
- 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/chatLogic.js +16 -23
- package/lib/chat/chatLogic.js.map +1 -1
- package/lib/chat/keys.d.ts +10 -2
- package/lib/chat/keys.d.ts.map +1 -1
- package/lib/chat/keys.js +182 -111
- package/lib/chat/keys.js.map +1 -1
- package/lib/chat/message.js +55 -23
- package/lib/chat/message.js.map +1 -1
- package/lib/chat/signature.d.ts +0 -3
- package/lib/chat/signature.d.ts.map +1 -1
- package/lib/chat/signature.js +26 -24
- package/lib/chat/signature.js.map +1 -1
- package/lib/utils/keyHelpers/accessData.d.ts +10 -0
- package/lib/utils/keyHelpers/accessData.d.ts.map +1 -0
- package/lib/utils/keyHelpers/accessData.js +232 -0
- package/lib/utils/keyHelpers/accessData.js.map +1 -0
- package/lib/utils/keyHelpers/acl.d.ts +20 -0
- package/lib/utils/keyHelpers/acl.d.ts.map +1 -0
- package/lib/utils/keyHelpers/acl.js +93 -0
- package/lib/utils/keyHelpers/acl.js.map +1 -0
- package/lib/versionInfo.js +2 -2
- package/lib/versionInfo.js.map +1 -1
- package/package.json +1 -1
package/lib/chat/chatLogic.js
CHANGED
|
@@ -85,7 +85,7 @@ var ChatChannel = /*#__PURE__*/function () {
|
|
|
85
85
|
var oldMsg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
86
86
|
var deleteIt = arguments.length > 2 ? arguments[2] : undefined;
|
|
87
87
|
return /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
88
|
-
var sts, now, timestamp, dateStamp, chatDocument, message, me, msg, oldMsgMaker, errMsg, privateKey,
|
|
88
|
+
var sts, now, timestamp, dateStamp, chatDocument, message, me, msg, oldMsgMaker, errMsg, privateKey, sig, _errMsg;
|
|
89
89
|
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
90
90
|
while (1) switch (_context2.prev = _context2.next) {
|
|
91
91
|
case 0:
|
|
@@ -112,7 +112,6 @@ var ChatChannel = /*#__PURE__*/function () {
|
|
|
112
112
|
if (deleteIt) {
|
|
113
113
|
// we need to add a specific signature, else anyone can delete a msg ?
|
|
114
114
|
sts.push($rdf.st(message, ns.schema('dateDeleted'), dateStamp, chatDocument));
|
|
115
|
-
// msg.dateDeleted = dateStamp
|
|
116
115
|
}
|
|
117
116
|
_context2.next = 20;
|
|
118
117
|
break;
|
|
@@ -133,46 +132,40 @@ var ChatChannel = /*#__PURE__*/function () {
|
|
|
133
132
|
sts.push($rdf.st(message, ns.dct('created'), dateStamp, chatDocument));
|
|
134
133
|
msg.created = dateStamp.value;
|
|
135
134
|
if (!me) {
|
|
136
|
-
_context2.next =
|
|
135
|
+
_context2.next = 35;
|
|
137
136
|
break;
|
|
138
137
|
}
|
|
139
138
|
sts.push($rdf.st(message, ns.foaf('maker'), me, chatDocument));
|
|
140
139
|
msg.maker = me.uri;
|
|
141
140
|
// privateKey the cached private key of me, cached in store
|
|
142
141
|
_context2.next = 32;
|
|
143
|
-
return (0, _keys.getPrivateKey)(me
|
|
142
|
+
return (0, _keys.getPrivateKey)(me);
|
|
144
143
|
case 32:
|
|
145
144
|
privateKey = _context2.sent;
|
|
146
|
-
//
|
|
147
|
-
// const pubKey0 = '023a9da707bee1302f66083c9d95673ff969b41607a66f52686fa774d64ceb87'
|
|
148
|
-
pubKey = (0, _keys.getPublicKey)(me.uri);
|
|
145
|
+
// me.uri)
|
|
149
146
|
sig = (0, _signature.signMsg)(msg, privateKey);
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
sts.push($rdf.st(message, $rdf.sym("".concat(_signature.SEC, "Proof")), $rdf.lit(sig), chatDocument));
|
|
155
|
-
case 36:
|
|
156
|
-
_context2.prev = 36;
|
|
157
|
-
_context2.next = 39;
|
|
147
|
+
sts.push($rdf.st(message, $rdf.sym("".concat(_signature.SEC, "proofValue")), $rdf.lit(sig), chatDocument));
|
|
148
|
+
case 35:
|
|
149
|
+
_context2.prev = 35;
|
|
150
|
+
_context2.next = 38;
|
|
158
151
|
return _solidLogic.store.updater.update([], sts);
|
|
159
|
-
case
|
|
160
|
-
_context2.next =
|
|
152
|
+
case 38:
|
|
153
|
+
_context2.next = 46;
|
|
161
154
|
break;
|
|
162
|
-
case
|
|
163
|
-
_context2.prev =
|
|
164
|
-
_context2.t0 = _context2["catch"](
|
|
155
|
+
case 40:
|
|
156
|
+
_context2.prev = 40;
|
|
157
|
+
_context2.t0 = _context2["catch"](35);
|
|
165
158
|
_errMsg = 'Error saving chat message: ' + _context2.t0;
|
|
166
159
|
debug.warn(_errMsg);
|
|
167
160
|
alert(_errMsg);
|
|
168
161
|
throw new Error(_errMsg);
|
|
169
|
-
case
|
|
162
|
+
case 46:
|
|
170
163
|
return _context2.abrupt("return", message);
|
|
171
|
-
case
|
|
164
|
+
case 47:
|
|
172
165
|
case "end":
|
|
173
166
|
return _context2.stop();
|
|
174
167
|
}
|
|
175
|
-
}, _callee2, null, [[
|
|
168
|
+
}, _callee2, null, [[35, 40]]);
|
|
176
169
|
})();
|
|
177
170
|
});
|
|
178
171
|
function updateMessage(_x2) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chatLogic.js","names":["debug","_interopRequireWildcard","require","_dateFolder","_solidLogic","ns","$rdf","utils","_signature","_keys","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","ChatChannel","channel","options","_classCallCheck2","channelRoot","doc","dateFolder","DateFolder","div","_createClass2","value","_createMessage","_asyncToGenerator2","_regenerator","mark","_callee","text","wrap","_callee$","_context","prev","next","abrupt","updateMessage","stop","createMessage","_x","apply","arguments","_updateMessage","_this","oldMsg","length","undefined","deleteIt","_callee2","sts","now","timestamp","dateStamp","chatDocument","message","me","msg","oldMsgMaker","errMsg","privateKey","pubKey","sig","_errMsg","_callee2$","_context2","Date","getTime","term","leafDocumentFromDate","store","sym","uri","authn","currentUser","getBlankMsg","id","any","foaf","push","st","mostRecentVersion","dct","schema","warn","alert","Error","wf","sioc","literal","content","created","maker","getPrivateKey","sent","getPublicKey","signMsg","concat","SEC","lit","updater","update","t0","_x2","_deleteMessage","_callee3","_callee3$","_context3","deleteMessage","_x3","exports","originalVersion","isDeleted","holds","isReplaced","isHidden","nick","person","s","label","_createIfNotExists","_x4","_createIfNotExists2","contentType","data","_callee4","response","_callee4$","_context4","fetcher","load","status","log","webOperation","t1","requested"],"sources":["../../src/chat/chatLogic.js"],"sourcesContent":["/**\n * Contains the [[ChatChannel]] class and logic for Solid Chat\n * @packageDocumentation\n */\n\nimport * as debug from '../debug'\nimport { DateFolder } from './dateFolder'\nimport { store, authn } from 'solid-logic'\nimport * as ns from '../ns'\nimport * as $rdf from 'rdflib' // pull in first avoid cross-refs\nimport * as utils from '../utils'\nimport { getBlankMsg, signMsg, SEC, verifySignature } from './signature'\nimport { getPrivateKey, getPublicKey } from './keys'\n\n/* The Solid logic for a 'LongChat'\n*/\n/**\n * Common code for a chat (discussion area of messages about something)\n * This version runs over a series of files for different time periods\n *\n * Parameters for the whole chat like its title are stored on\n * index.ttl#this and the chats messages are stored in YYYY/MM/DD/chat.ttl\n *\n */\n\nexport class ChatChannel {\n constructor (channel, options) {\n this.channel = channel\n this.channelRoot = channel.doc()\n this.options = options\n this.dateFolder = new DateFolder(this.channelRoot, 'chat.ttl')\n this.div = null // : HTMLElement\n }\n\n /* Store a new message in the web,\n */\n async createMessage (text) {\n return this.updateMessage(text)\n }\n\n /* Store a new message in the web,\n as a replacement for an existing one.\n The old one iis left, and the two are linked\n */\n async updateMessage (text, oldMsg = null, deleteIt) {\n const sts = []\n const now = new Date()\n const timestamp = '' + now.getTime()\n const dateStamp = $rdf.term(now)\n const chatDocument = oldMsg ? oldMsg.doc() : this.dateFolder.leafDocumentFromDate(now)\n const message = store.sym(chatDocument.uri + '#' + 'Msg' + timestamp)\n // const content = store.literal(text)\n\n const me = authn.currentUser() // If already logged on\n\n const msg = getBlankMsg()\n msg.id = message.uri\n if (oldMsg) { // edit message replaces old one\n const oldMsgMaker = store.any(oldMsg, ns.foaf('maker')) // may not be needed here, but needed on READ\n if (oldMsgMaker.uri === me.uri) {\n sts.push($rdf.st(mostRecentVersion(oldMsg), ns.dct('isReplacedBy'), message, chatDocument))\n if (deleteIt) { // we need to add a specific signature, else anyone can delete a msg ?\n sts.push($rdf.st(message, ns.schema('dateDeleted'), dateStamp, chatDocument))\n // msg.dateDeleted = dateStamp\n }\n } else {\n const errMsg = 'Error you cannot delete/edit a message from someone else : \\n' + oldMsgMaker.uri\n debug.warn(errMsg)\n alert(errMsg)\n throw new Error(errMsg)\n }\n } else { // link new message to channel\n sts.push($rdf.st(this.channel, ns.wf('message'), message, chatDocument))\n }\n sts.push(\n $rdf.st(message, ns.sioc('content'), store.literal(text), chatDocument)\n )\n msg.content = text\n\n sts.push(\n $rdf.st(message, ns.dct('created'), dateStamp, chatDocument)\n )\n msg.created = dateStamp.value\n if (me) {\n sts.push($rdf.st(message, ns.foaf('maker'), me, chatDocument))\n msg.maker = me.uri\n // privateKey the cached private key of me, cached in store\n const privateKey = await getPrivateKey(me.uri)\n // const privateKey0 = 'a11bc5d2eee6cdb3b37f5473a712cad905ccfb13fb2ccdbf1be0a1ac4fdc7d2a'\n // const pubKey0 = '023a9da707bee1302f66083c9d95673ff969b41607a66f52686fa774d64ceb87'\n const pubKey = getPublicKey(me.uri)\n\n const sig = signMsg(msg, privateKey)\n /* const verify = verifySignature(sig, msg, pubKey) // alain to remove\n debug.warn('sig ' + sig)\n debug.warn('verifySign ' + verify)\n debug.warn(msg) */\n sts.push($rdf.st(message, $rdf.sym(`${SEC}Proof`), $rdf.lit(sig), chatDocument))\n }\n try {\n await store.updater.update([], sts)\n } catch (err) {\n const errMsg = 'Error saving chat message: ' + err\n debug.warn(errMsg)\n alert(errMsg)\n throw new Error(errMsg)\n }\n return message\n }\n\n /* Mark a message as deleted\n * Wee add a new version of the message,m witha deletion flag (deletion date)\n * so that the deletion can be revoked by adding another non-deleted update\n */\n async deleteMessage (message) {\n return this.updateMessage('(message deleted)', message, true)\n }\n} // class ChatChannel\n\nexport function originalVersion (message) {\n let msg = message\n while (msg) {\n message = msg\n msg = store.any(null, ns.dct('isReplacedBy'), message, message.doc())\n }\n return message\n}\n\nexport function mostRecentVersion (message) {\n let msg = message\n while (msg) {\n message = msg\n msg = store.any(message, ns.dct('isReplacedBy'), null, message.doc())\n }\n return message\n}\n\nexport function isDeleted (message) {\n return store.holds(message, ns.schema('dateDeleted'), null, message.doc())\n}\n\nexport function isReplaced (message) {\n return store.holds(message, ns.dct('isReplacedBy'), null, message.doc())\n}\n\nexport function isHidden (message) {\n return this.isDeleted(message) || this.isReplaced(message)\n}\n\n// A Nickname for a person\n\nexport function nick (person) {\n const s = store.any(person, ns.foaf('nick'))\n if (s) return '' + s.value\n return '' + utils.label(person)\n}\n\nexport async function _createIfNotExists (doc, contentType = 'text/turtle', data = '') {\n let response\n try {\n response = await store.fetcher.load(doc)\n } catch (err) {\n if (err.response.status === 404) {\n debug.log(\n 'createIfNotExists: doc does NOT exist, will create... ' + doc\n )\n try {\n response = await store.fetcher.webOperation('PUT', doc.uri, {\n data,\n contentType\n })\n } catch (err) {\n debug.log('createIfNotExists doc FAILED: ' + doc + ': ' + err)\n throw err\n }\n delete store.fetcher.requested[doc.uri] // delete cached 404 error\n // debug.log('createIfNotExists doc created ok ' + doc)\n return response\n } else {\n debug.log(\n 'createIfNotExists doc load error NOT 404: ' + doc + ': ' + err\n )\n throw err\n }\n }\n // debug.log('createIfNotExists: doc exists, all good: ' + doc)\n return response\n}\n// ends\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"chatLogic.js","names":["debug","_interopRequireWildcard","require","_dateFolder","_solidLogic","ns","$rdf","utils","_signature","_keys","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","ChatChannel","channel","options","_classCallCheck2","channelRoot","doc","dateFolder","DateFolder","div","_createClass2","value","_createMessage","_asyncToGenerator2","_regenerator","mark","_callee","text","wrap","_callee$","_context","prev","next","abrupt","updateMessage","stop","createMessage","_x","apply","arguments","_updateMessage","_this","oldMsg","length","undefined","deleteIt","_callee2","sts","now","timestamp","dateStamp","chatDocument","message","me","msg","oldMsgMaker","errMsg","privateKey","sig","_errMsg","_callee2$","_context2","Date","getTime","term","leafDocumentFromDate","store","sym","uri","authn","currentUser","getBlankMsg","id","any","foaf","push","st","mostRecentVersion","dct","schema","warn","alert","Error","wf","sioc","literal","content","created","maker","getPrivateKey","sent","signMsg","concat","SEC","lit","updater","update","t0","_x2","_deleteMessage","_callee3","_callee3$","_context3","deleteMessage","_x3","exports","originalVersion","isDeleted","holds","isReplaced","isHidden","nick","person","s","label","_createIfNotExists","_x4","_createIfNotExists2","contentType","data","_callee4","response","_callee4$","_context4","fetcher","load","status","log","webOperation","t1","requested"],"sources":["../../src/chat/chatLogic.js"],"sourcesContent":["/**\n * Contains the [[ChatChannel]] class and logic for Solid Chat\n * @packageDocumentation\n */\n\nimport * as debug from '../debug'\nimport { DateFolder } from './dateFolder'\nimport { store, authn } from 'solid-logic'\nimport * as ns from '../ns'\nimport * as $rdf from 'rdflib' // pull in first avoid cross-refs\nimport * as utils from '../utils'\nimport { getBlankMsg, signMsg, SEC, verifySignature } from './signature'\nimport { getPrivateKey, getPublicKey } from './keys'\n\n/* The Solid logic for a 'LongChat'\n*/\n/**\n * Common code for a chat (discussion area of messages about something)\n * This version runs over a series of files for different time periods\n *\n * Parameters for the whole chat like its title are stored on\n * index.ttl#this and the chats messages are stored in YYYY/MM/DD/chat.ttl\n *\n */\n\nexport class ChatChannel {\n constructor (channel, options) {\n this.channel = channel\n this.channelRoot = channel.doc()\n this.options = options\n this.dateFolder = new DateFolder(this.channelRoot, 'chat.ttl')\n this.div = null // : HTMLElement\n }\n\n /* Store a new message in the web,\n */\n async createMessage (text) {\n return this.updateMessage(text)\n }\n\n /* Store a new message in the web,\n as a replacement for an existing one.\n The old one iis left, and the two are linked\n */\n async updateMessage (text, oldMsg = null, deleteIt) {\n const sts = []\n const now = new Date()\n const timestamp = '' + now.getTime()\n const dateStamp = $rdf.term(now)\n const chatDocument = oldMsg ? oldMsg.doc() : this.dateFolder.leafDocumentFromDate(now)\n const message = store.sym(chatDocument.uri + '#' + 'Msg' + timestamp)\n // const content = store.literal(text)\n\n const me = authn.currentUser() // If already logged on\n\n const msg = getBlankMsg()\n msg.id = message.uri\n if (oldMsg) { // edit message replaces old one\n const oldMsgMaker = store.any(oldMsg, ns.foaf('maker')) // may not be needed here, but needed on READ\n if (oldMsgMaker.uri === me.uri) {\n sts.push($rdf.st(mostRecentVersion(oldMsg), ns.dct('isReplacedBy'), message, chatDocument))\n if (deleteIt) { // we need to add a specific signature, else anyone can delete a msg ?\n sts.push($rdf.st(message, ns.schema('dateDeleted'), dateStamp, chatDocument))\n }\n } else {\n const errMsg = 'Error you cannot delete/edit a message from someone else : \\n' + oldMsgMaker.uri\n debug.warn(errMsg)\n alert(errMsg)\n throw new Error(errMsg)\n }\n } else { // link new message to channel\n sts.push($rdf.st(this.channel, ns.wf('message'), message, chatDocument))\n }\n sts.push(\n $rdf.st(message, ns.sioc('content'), store.literal(text), chatDocument)\n )\n msg.content = text\n\n sts.push(\n $rdf.st(message, ns.dct('created'), dateStamp, chatDocument)\n )\n msg.created = dateStamp.value\n if (me) {\n sts.push($rdf.st(message, ns.foaf('maker'), me, chatDocument))\n msg.maker = me.uri\n // privateKey the cached private key of me, cached in store\n const privateKey = await getPrivateKey(me) // me.uri)\n\n const sig = signMsg(msg, privateKey)\n sts.push($rdf.st(message, $rdf.sym(`${SEC}proofValue`), $rdf.lit(sig), chatDocument))\n }\n try {\n await store.updater.update([], sts)\n } catch (err) {\n const errMsg = 'Error saving chat message: ' + err\n debug.warn(errMsg)\n alert(errMsg)\n throw new Error(errMsg)\n }\n return message\n }\n\n /* Mark a message as deleted\n * Wee add a new version of the message,m witha deletion flag (deletion date)\n * so that the deletion can be revoked by adding another non-deleted update\n */\n async deleteMessage (message) {\n return this.updateMessage('(message deleted)', message, true)\n }\n} // class ChatChannel\n\nexport function originalVersion (message) {\n let msg = message\n while (msg) {\n message = msg\n msg = store.any(null, ns.dct('isReplacedBy'), message, message.doc())\n }\n return message\n}\n\nexport function mostRecentVersion (message) {\n let msg = message\n while (msg) {\n message = msg\n msg = store.any(message, ns.dct('isReplacedBy'), null, message.doc())\n }\n return message\n}\n\nexport function isDeleted (message) {\n return store.holds(message, ns.schema('dateDeleted'), null, message.doc())\n}\n\nexport function isReplaced (message) {\n return store.holds(message, ns.dct('isReplacedBy'), null, message.doc())\n}\n\nexport function isHidden (message) {\n return this.isDeleted(message) || this.isReplaced(message)\n}\n\n// A Nickname for a person\n\nexport function nick (person) {\n const s = store.any(person, ns.foaf('nick'))\n if (s) return '' + s.value\n return '' + utils.label(person)\n}\n\nexport async function _createIfNotExists (doc, contentType = 'text/turtle', data = '') {\n let response\n try {\n response = await store.fetcher.load(doc)\n } catch (err) {\n if (err.response.status === 404) {\n debug.log(\n 'createIfNotExists: doc does NOT exist, will create... ' + doc\n )\n try {\n response = await store.fetcher.webOperation('PUT', doc.uri, {\n data,\n contentType\n })\n } catch (err) {\n debug.log('createIfNotExists doc FAILED: ' + doc + ': ' + err)\n throw err\n }\n delete store.fetcher.requested[doc.uri] // delete cached 404 error\n // debug.log('createIfNotExists doc created ok ' + doc)\n return response\n } else {\n debug.log(\n 'createIfNotExists doc load error NOT 404: ' + doc + ': ' + err\n )\n throw err\n }\n }\n return response\n}\n// ends\n"],"mappings":"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"}
|
package/lib/chat/keys.d.ts
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
|
+
import { NamedNode } from 'rdflib';
|
|
1
2
|
export declare function generatePrivateKey(): string;
|
|
2
3
|
export declare function generatePublicKey(privateKey: string): string;
|
|
3
|
-
|
|
4
|
-
|
|
4
|
+
/**
|
|
5
|
+
* getPublicKey
|
|
6
|
+
* used for displaying messages in chat, therefore does not
|
|
7
|
+
* create a new key if not found
|
|
8
|
+
* @param webId
|
|
9
|
+
* @returns string | undefined
|
|
10
|
+
*/
|
|
11
|
+
export declare function getPublicKey(webId: NamedNode): Promise<string | undefined>;
|
|
12
|
+
export declare function getPrivateKey(webId: NamedNode): Promise<string>;
|
|
5
13
|
//# 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":"
|
|
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,+BAUnD;AAED,wBAAsB,aAAa,CAAE,KAAK,EAAE,SAAS,mBA4CpD"}
|
package/lib/chat/keys.js
CHANGED
|
@@ -14,9 +14,11 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
|
|
|
14
14
|
var debug = _interopRequireWildcard(require("../debug"));
|
|
15
15
|
var _secp256k = require("@noble/curves/secp256k1");
|
|
16
16
|
var _utils = require("@noble/hashes/utils");
|
|
17
|
-
var
|
|
17
|
+
var ns = _interopRequireWildcard(require("../ns"));
|
|
18
18
|
var _solidLogic = require("solid-logic");
|
|
19
19
|
var $rdf = _interopRequireWildcard(require("rdflib"));
|
|
20
|
+
var _accessData = require("../utils/keyHelpers/accessData");
|
|
21
|
+
var _acl = require("../utils/keyHelpers/acl");
|
|
20
22
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
21
23
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
22
24
|
function generatePrivateKey() {
|
|
@@ -25,138 +27,207 @@ function generatePrivateKey() {
|
|
|
25
27
|
function generatePublicKey(privateKey) {
|
|
26
28
|
return (0, _utils.bytesToHex)(_secp256k.schnorr.getPublicKey(privateKey));
|
|
27
29
|
}
|
|
28
|
-
function getPublicKey(webId) {
|
|
29
|
-
var publicKey = publicKeyExists(webId);
|
|
30
|
-
return publicKey;
|
|
31
|
-
}
|
|
32
|
-
function publicKeyExists(webId) {
|
|
33
|
-
// find publickey
|
|
34
|
-
var url = new URL(webId);
|
|
35
|
-
url.hash = '';
|
|
36
|
-
/* debug.warn('Alain publicKeyExists')
|
|
37
|
-
debug.warn(webId)
|
|
38
|
-
debug.warn(url.href) */
|
|
39
|
-
_solidLogic.store.fetcher.load(url.href);
|
|
40
|
-
var publicKey = _solidLogic.store.any(_solidLogic.store.sym(webId), _solidLogic.store.sym(_signature.CERT + 'PublicKey'));
|
|
41
|
-
return publicKey === null || publicKey === void 0 ? void 0 : publicKey.value; // as NamedNode
|
|
42
|
-
}
|
|
43
30
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
31
|
+
/**
|
|
32
|
+
* getPublicKey
|
|
33
|
+
* used for displaying messages in chat, therefore does not
|
|
34
|
+
* create a new key if not found
|
|
35
|
+
* @param webId
|
|
36
|
+
* @returns string | undefined
|
|
37
|
+
*/
|
|
38
|
+
function getPublicKey(_x) {
|
|
39
|
+
return _getPublicKey.apply(this, arguments);
|
|
51
40
|
}
|
|
52
|
-
function
|
|
53
|
-
|
|
54
|
-
var
|
|
55
|
-
return _regenerator["default"].wrap(function
|
|
56
|
-
while (1) switch (
|
|
41
|
+
function _getPublicKey() {
|
|
42
|
+
_getPublicKey = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(webId) {
|
|
43
|
+
var publicKeyDoc, key;
|
|
44
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
45
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
57
46
|
case 0:
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
return
|
|
68
|
-
case
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
// create privateKey resource
|
|
77
|
-
data = '';
|
|
78
|
-
contentType = 'text/ttl';
|
|
79
|
-
_context.next = 15;
|
|
80
|
-
return _solidLogic.store.fetcher.webOperation('PUT', privateKeyUrl, {
|
|
81
|
-
data: data,
|
|
82
|
-
contentType: contentType
|
|
83
|
-
});
|
|
47
|
+
_context2.next = 2;
|
|
48
|
+
return _solidLogic.store.fetcher.load(webId);
|
|
49
|
+
case 2:
|
|
50
|
+
_context2.next = 4;
|
|
51
|
+
return (0, _accessData.pubKeyUrl)(webId);
|
|
52
|
+
case 4:
|
|
53
|
+
publicKeyDoc = _context2.sent;
|
|
54
|
+
_context2.prev = 5;
|
|
55
|
+
_context2.next = 8;
|
|
56
|
+
return _solidLogic.store.fetcher.load(publicKeyDoc);
|
|
57
|
+
case 8:
|
|
58
|
+
// url.href)
|
|
59
|
+
key = _solidLogic.store.any(webId, ns.solid('publicKey'));
|
|
60
|
+
return _context2.abrupt("return", key === null || key === void 0 ? void 0 : key.value);
|
|
61
|
+
case 12:
|
|
62
|
+
_context2.prev = 12;
|
|
63
|
+
_context2.t0 = _context2["catch"](5);
|
|
64
|
+
return _context2.abrupt("return", undefined);
|
|
84
65
|
case 15:
|
|
85
|
-
response = _context.sent;
|
|
86
|
-
_context.next = 22;
|
|
87
|
-
break;
|
|
88
|
-
case 18:
|
|
89
|
-
_context.prev = 18;
|
|
90
|
-
_context.t1 = _context["catch"](10);
|
|
91
|
-
debug.log('createIfNotExists doc FAILED: ' + privateKeyUrl + ': ' + _context.t1);
|
|
92
|
-
throw _context.t1;
|
|
93
|
-
case 22:
|
|
94
|
-
delete _solidLogic.store.fetcher.requested[privateKeyUrl]; // delete cached 404 error
|
|
95
|
-
return _context.abrupt("return", undefined);
|
|
96
|
-
case 24:
|
|
97
|
-
debug.log('createIfNotExists doc FAILED: ' + privateKeyUrl + ': ' + _context.t0);
|
|
98
|
-
throw _context.t0;
|
|
99
|
-
case 26:
|
|
100
66
|
case "end":
|
|
101
|
-
return
|
|
67
|
+
return _context2.stop();
|
|
102
68
|
}
|
|
103
|
-
},
|
|
69
|
+
}, _callee2, null, [[5, 12]]);
|
|
104
70
|
}));
|
|
105
|
-
return
|
|
71
|
+
return _getPublicKey.apply(this, arguments);
|
|
106
72
|
}
|
|
107
73
|
function getPrivateKey(_x2) {
|
|
108
74
|
return _getPrivateKey.apply(this, arguments);
|
|
109
75
|
}
|
|
110
76
|
function _getPrivateKey() {
|
|
111
|
-
_getPrivateKey = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function
|
|
112
|
-
var
|
|
113
|
-
return _regenerator["default"].wrap(function
|
|
114
|
-
while (1) switch (
|
|
77
|
+
_getPrivateKey = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(webId) {
|
|
78
|
+
var publicKeyDoc, privateKeyDoc, publicKey, privateKey, validPublicKey, del, add, newPublicKey, keyContainer;
|
|
79
|
+
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
80
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
115
81
|
case 0:
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
82
|
+
_context3.next = 2;
|
|
83
|
+
return _solidLogic.store.fetcher.load(webId);
|
|
84
|
+
case 2:
|
|
85
|
+
_context3.next = 4;
|
|
86
|
+
return (0, _accessData.pubKeyUrl)(webId);
|
|
87
|
+
case 4:
|
|
88
|
+
publicKeyDoc = _context3.sent;
|
|
89
|
+
_context3.next = 7;
|
|
90
|
+
return (0, _accessData.privKeyUrl)(webId);
|
|
91
|
+
case 7:
|
|
92
|
+
privateKeyDoc = _context3.sent;
|
|
93
|
+
_context3.next = 10;
|
|
94
|
+
return (0, _accessData.getExistingPublicKey)(webId, publicKeyDoc);
|
|
95
|
+
case 10:
|
|
96
|
+
publicKey = _context3.sent;
|
|
97
|
+
_context3.next = 13;
|
|
98
|
+
return (0, _accessData.getExistingPrivateKey)(webId, privateKeyDoc);
|
|
99
|
+
case 13:
|
|
100
|
+
privateKey = _context3.sent;
|
|
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
|
+
}
|
|
134
106
|
|
|
135
|
-
// create key pair
|
|
136
|
-
if (!(!privateKey || !publicKey)) {
|
|
137
|
-
|
|
107
|
+
// create key pair or repair publicKey
|
|
108
|
+
if (!(!privateKey || !publicKey || !validPublicKey)) {
|
|
109
|
+
_context3.next = 34;
|
|
138
110
|
break;
|
|
139
111
|
}
|
|
140
112
|
del = [];
|
|
141
113
|
add = [];
|
|
142
|
-
if (privateKey)
|
|
143
|
-
|
|
114
|
+
if (privateKey) {
|
|
115
|
+
_context3.next = 24;
|
|
116
|
+
break;
|
|
117
|
+
}
|
|
118
|
+
// add = []
|
|
144
119
|
privateKey = generatePrivateKey();
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
120
|
+
add = [$rdf.st(webId, ns.solid('privateKey'), $rdf.literal(privateKey), _solidLogic.store.sym(privateKeyDoc))];
|
|
121
|
+
_context3.next = 24;
|
|
122
|
+
return saveKey(privateKeyDoc, [], add, webId.uri);
|
|
123
|
+
case 24:
|
|
124
|
+
if (!(!publicKey || !validPublicKey)) {
|
|
125
|
+
_context3.next = 31;
|
|
126
|
+
break;
|
|
127
|
+
}
|
|
128
|
+
del = [];
|
|
129
|
+
// delete invalid public key
|
|
130
|
+
if (publicKey) {
|
|
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:
|
|
140
|
+
keyContainer = privateKeyDoc.substring(0, privateKeyDoc.lastIndexOf('/') + 1);
|
|
141
|
+
_context3.next = 34;
|
|
142
|
+
return (0, _acl.setAcl)(keyContainer, (0, _acl.keyContainerAclBody)(webId.uri));
|
|
143
|
+
case 34:
|
|
144
|
+
return _context3.abrupt("return", privateKey);
|
|
145
|
+
case 35:
|
|
155
146
|
case "end":
|
|
156
|
-
return
|
|
147
|
+
return _context3.stop();
|
|
157
148
|
}
|
|
158
|
-
},
|
|
149
|
+
}, _callee3);
|
|
159
150
|
}));
|
|
160
151
|
return _getPrivateKey.apply(this, arguments);
|
|
161
152
|
}
|
|
153
|
+
var deleteKeyAcl = /*#__PURE__*/function () {
|
|
154
|
+
var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(keyDoc) {
|
|
155
|
+
var keyAclDoc, response;
|
|
156
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
157
|
+
while (1) switch (_context.prev = _context.next) {
|
|
158
|
+
case 0:
|
|
159
|
+
_context.next = 2;
|
|
160
|
+
return _solidLogic.store.fetcher.load(keyDoc);
|
|
161
|
+
case 2:
|
|
162
|
+
keyAclDoc = _solidLogic.store.any(_solidLogic.store.sym(keyDoc), _solidLogic.store.sym('http://www.iana.org/assignments/link-relations/acl'));
|
|
163
|
+
if (!keyAclDoc) {
|
|
164
|
+
_context.next = 16;
|
|
165
|
+
break;
|
|
166
|
+
}
|
|
167
|
+
_context.prev = 4;
|
|
168
|
+
_context.next = 7;
|
|
169
|
+
return _solidLogic.store.fetcher.webOperation('DELETE', keyAclDoc.value);
|
|
170
|
+
case 7:
|
|
171
|
+
response = _context.sent;
|
|
172
|
+
// this may fail if webId is not an owner
|
|
173
|
+
debug.log('delete ' + keyAclDoc.value + ' ' + response.status); // should test 404 and 2xx
|
|
174
|
+
_context.next = 16;
|
|
175
|
+
break;
|
|
176
|
+
case 11:
|
|
177
|
+
_context.prev = 11;
|
|
178
|
+
_context.t0 = _context["catch"](4);
|
|
179
|
+
if (!(_context.t0.response.status !== 404)) {
|
|
180
|
+
_context.next = 15;
|
|
181
|
+
break;
|
|
182
|
+
}
|
|
183
|
+
throw new Error(_context.t0);
|
|
184
|
+
case 15:
|
|
185
|
+
debug.log('delete ' + keyAclDoc.value + ' ' + _context.t0.response.status); // should test 404 and 2xx
|
|
186
|
+
case 16:
|
|
187
|
+
case "end":
|
|
188
|
+
return _context.stop();
|
|
189
|
+
}
|
|
190
|
+
}, _callee, null, [[4, 11]]);
|
|
191
|
+
}));
|
|
192
|
+
return function deleteKeyAcl(_x3) {
|
|
193
|
+
return _ref.apply(this, arguments);
|
|
194
|
+
};
|
|
195
|
+
}();
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* delete acl if keydoc exists
|
|
199
|
+
* create/edit keyDoc
|
|
200
|
+
* set keyDoc acl
|
|
201
|
+
*/
|
|
202
|
+
function saveKey(_x4, _x5, _x6) {
|
|
203
|
+
return _saveKey.apply(this, arguments);
|
|
204
|
+
}
|
|
205
|
+
function _saveKey() {
|
|
206
|
+
_saveKey = (0, _asyncToGenerator2["default"])(function (keyDoc, del, add) {
|
|
207
|
+
var me = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '';
|
|
208
|
+
return /*#__PURE__*/_regenerator["default"].mark(function _callee4() {
|
|
209
|
+
var aclBody;
|
|
210
|
+
return _regenerator["default"].wrap(function _callee4$(_context4) {
|
|
211
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
212
|
+
case 0:
|
|
213
|
+
_context4.next = 2;
|
|
214
|
+
return deleteKeyAcl(keyDoc);
|
|
215
|
+
case 2:
|
|
216
|
+
_context4.next = 4;
|
|
217
|
+
return _solidLogic.store.updater.updateMany(del, add);
|
|
218
|
+
case 4:
|
|
219
|
+
// or a promise store.updater.update ?
|
|
220
|
+
// create READ only ACL
|
|
221
|
+
aclBody = (0, _acl.keyAclBody)(keyDoc, me);
|
|
222
|
+
_context4.next = 7;
|
|
223
|
+
return (0, _acl.setAcl)(keyDoc, aclBody);
|
|
224
|
+
case 7:
|
|
225
|
+
case "end":
|
|
226
|
+
return _context4.stop();
|
|
227
|
+
}
|
|
228
|
+
}, _callee4);
|
|
229
|
+
})();
|
|
230
|
+
});
|
|
231
|
+
return _saveKey.apply(this, arguments);
|
|
232
|
+
}
|
|
162
233
|
//# 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","_signature","_solidLogic","$rdf","_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","webId","publicKey","publicKeyExists","url","URL","hash","store","fetcher","load","href","any","sym","CERT","value","privKeyUrl","privateKeyUrl","protocol","host","privateKeyExists","_x","_privateKeyExists","apply","arguments","_asyncToGenerator2","_regenerator","mark","_callee","_err$response","data","contentType","response","wrap","_callee$","_context","prev","next","abrupt","t0","status","webOperation","sent","t1","log","requested","undefined","stop","getPrivateKey","_x2","_getPrivateKey","_callee2","del","add","_callee2$","_context2","warn","push","st","lit","literal","updater","updateMany"],"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 { CERT } from './signature'\r\nimport { store } from 'solid-logic'\r\nimport * as $rdf from 'rdflib'\r\nimport { NamedNode, literal } from 'rdflib'\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\nexport function getPublicKey (webId) {\r\n const publicKey = publicKeyExists(webId)\r\n return publicKey\r\n}\r\n\r\nfunction publicKeyExists (webId: string) {\r\n // find publickey\r\n const url = new URL(webId)\r\n url.hash = ''\r\n /* debug.warn('Alain publicKeyExists')\r\n debug.warn(webId)\r\n debug.warn(url.href) */\r\n store.fetcher.load(url.href)\r\n const publicKey = store.any(store.sym(webId), store.sym(CERT + 'PublicKey'))\r\n return publicKey?.value // as NamedNode\r\n}\r\n\r\nconst privKeyUrl = (webId: string) => {\r\n const url = new URL(webId)\r\n const privateKeyUrl = url.protocol + '//' + url.host + '/profile/privateKey.ttl'\r\n return privateKeyUrl\r\n}\r\n\r\nasync function privateKeyExists (webId: string) {\r\n /* const url = new URL(webId)\r\n const privateKeyUrl = url.protocol + '//' + url.host + '/profile/privateKey.ttl' */\r\n const privateKeyUrl = privKeyUrl(webId)\r\n /* debug.warn('Alain privateKeyExists')\r\n debug.warn(webId)\r\n debug.warn(privateKeyUrl) */\r\n try {\r\n store.fetcher.load(privateKeyUrl)\r\n const privateKey = store.any(store.sym(webId), store.sym(CERT + 'PrivateKey'))\r\n return privateKey?.value // as NamedNode\r\n } catch (err) {\r\n if (err?.response?.status === 404) {\r\n try {\r\n // create privateKey resource\r\n const data = ''\r\n const contentType = 'text/ttl'\r\n const response = await store.fetcher.webOperation('PUT', privateKeyUrl, {\r\n data,\r\n contentType\r\n })\r\n // create ACL resource\r\n } catch (err) {\r\n debug.log('createIfNotExists doc FAILED: ' + privateKeyUrl + ': ' + err)\r\n throw err\r\n }\r\n delete store.fetcher.requested[privateKeyUrl] // delete cached 404 error\r\n return undefined\r\n }\r\n debug.log('createIfNotExists doc FAILED: ' + privateKeyUrl + ': ' + err)\r\n throw err\r\n }\r\n}\r\n\r\nexport async function getPrivateKey (webId: string) {\r\n const url = new URL(webId)\r\n url.hash = ''\r\n /* const privateKeyUrl = url.protocol + '//' + url.host + '/profile/privateKey.ttl' */\r\n const privateKeyUrl = privKeyUrl(webId)\r\n\r\n // find publickey\r\n let publicKey = publicKeyExists(webId)\r\n // debug.warn('publicKey ' + publicKey)\r\n // find privateKey\r\n let privateKey = await privateKeyExists(webId)\r\n // debug.warn('privateKey ' + privateKey)\r\n if (privateKey && (publicKey !== generatePublicKey(privateKey as string))) debug.warn('publicKey is not valid')\r\n\r\n // simulate new key pair\r\n /* const newPrivateKey = generatePrivateKey()\r\n const newPublicKey = generatePublicKey(newPrivateKey)\r\n debug.log('newPrivateKey ' + newPrivateKey)\r\n debug.log('newPublicKey ' + newPublicKey) */\r\n\r\n // create key pair\r\n if (!privateKey || !publicKey) {\r\n const del: any[] = []\r\n const add: any[] = []\r\n if (privateKey) del.push($rdf.st($rdf.sym(webId), $rdf.sym(CERT + 'PrivateKey'), $rdf.lit(privateKey), $rdf.sym(privateKeyUrl)))\r\n if (publicKey) del.push($rdf.st($rdf.sym(webId), $rdf.sym(CERT + 'PublicKey'), $rdf.lit(publicKey), $rdf.sym(url.href)))\r\n\r\n privateKey = generatePrivateKey()\r\n publicKey = generatePublicKey(privateKey)\r\n /* debug.log('newPrivateKey-1 ' + privateKey)\r\n debug.log('newPublicKey-1 ' + publicKey) */\r\n add.push($rdf.st($rdf.sym(webId), $rdf.sym(CERT + 'PrivateKey'), $rdf.literal(privateKey), $rdf.sym(privateKeyUrl)))\r\n add.push($rdf.st($rdf.sym(webId), $rdf.sym(CERT + 'PublicKey'), $rdf.literal(publicKey), $rdf.sym(url.href)))\r\n await store.updater.updateMany(del, add)\r\n }\r\n return privateKey as string\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","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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"}
|