solid-ui 2.4.27-17005e61 → 2.4.27-18070a02
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 +530 -509
- 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 -17
- package/lib/chat/chatLogic.js.map +1 -1
- package/lib/chat/keys.d.ts.map +1 -1
- package/lib/chat/keys.js +38 -121
- package/lib/chat/keys.js.map +1 -1
- package/lib/chat/message.js +1 -1
- 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 +23 -20
- 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/{cryptoKeyHelpers.js → keyHelpers/accessData.js} +30 -39
- 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 +101 -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/utils/cryptoKeyHelpers.d.ts +0 -6
- package/lib/utils/cryptoKeyHelpers.d.ts.map +0 -1
- package/lib/utils/cryptoKeyHelpers.js.map +0 -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:
|
|
@@ -133,7 +133,7 @@ var ChatChannel = /*#__PURE__*/function () {
|
|
|
133
133
|
sts.push($rdf.st(message, ns.dct('created'), dateStamp, chatDocument));
|
|
134
134
|
msg.created = dateStamp.value;
|
|
135
135
|
if (!me) {
|
|
136
|
-
_context2.next =
|
|
136
|
+
_context2.next = 35;
|
|
137
137
|
break;
|
|
138
138
|
}
|
|
139
139
|
sts.push($rdf.st(message, ns.foaf('maker'), me, chatDocument));
|
|
@@ -145,35 +145,34 @@ var ChatChannel = /*#__PURE__*/function () {
|
|
|
145
145
|
privateKey = _context2.sent;
|
|
146
146
|
// me.uri)
|
|
147
147
|
// const privateKey0 = 'a11bc5d2eee6cdb3b37f5473a712cad905ccfb13fb2ccdbf1be0a1ac4fdc7d2a'
|
|
148
|
-
// const pubKey0 = '023a9da707bee1302f66083c9d95673ff969b41607a66f52686fa774d64ceb87'
|
|
149
|
-
pubKey =
|
|
150
|
-
|
|
151
|
-
/* const verify = verifySignature(sig, msg, pubKey) // alain to remove
|
|
148
|
+
sig = (0, _signature.signMsg)(msg, privateKey); // const pubKey0 = '023a9da707bee1302f66083c9d95673ff969b41607a66f52686fa774d64ceb87'
|
|
149
|
+
/* const pubKey = await getPublicKey(me)
|
|
150
|
+
const verify = verifySignature(sig, msg, pubKey) // alain to remove
|
|
152
151
|
debug.warn('sig ' + sig)
|
|
153
152
|
debug.warn('verifySign ' + verify)
|
|
154
153
|
debug.warn(msg) */
|
|
155
154
|
sts.push($rdf.st(message, $rdf.sym("".concat(_signature.SEC, "Proof")), $rdf.lit(sig), chatDocument));
|
|
156
|
-
case
|
|
157
|
-
_context2.prev =
|
|
158
|
-
_context2.next =
|
|
155
|
+
case 35:
|
|
156
|
+
_context2.prev = 35;
|
|
157
|
+
_context2.next = 38;
|
|
159
158
|
return _solidLogic.store.updater.update([], sts);
|
|
160
|
-
case
|
|
161
|
-
_context2.next =
|
|
159
|
+
case 38:
|
|
160
|
+
_context2.next = 46;
|
|
162
161
|
break;
|
|
163
|
-
case
|
|
164
|
-
_context2.prev =
|
|
165
|
-
_context2.t0 = _context2["catch"](
|
|
162
|
+
case 40:
|
|
163
|
+
_context2.prev = 40;
|
|
164
|
+
_context2.t0 = _context2["catch"](35);
|
|
166
165
|
_errMsg = 'Error saving chat message: ' + _context2.t0;
|
|
167
166
|
debug.warn(_errMsg);
|
|
168
167
|
alert(_errMsg);
|
|
169
168
|
throw new Error(_errMsg);
|
|
170
|
-
case
|
|
169
|
+
case 46:
|
|
171
170
|
return _context2.abrupt("return", message);
|
|
172
|
-
case
|
|
171
|
+
case 47:
|
|
173
172
|
case "end":
|
|
174
173
|
return _context2.stop();
|
|
175
174
|
}
|
|
176
|
-
}, _callee2, null, [[
|
|
175
|
+
}, _callee2, null, [[35, 40]]);
|
|
177
176
|
})();
|
|
178
177
|
});
|
|
179
178
|
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) // 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 // 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) // me.uri)\n // const privateKey0 = 'a11bc5d2eee6cdb3b37f5473a712cad905ccfb13fb2ccdbf1be0a1ac4fdc7d2a'\n\n const sig = signMsg(msg, privateKey)\n // const pubKey0 = '023a9da707bee1302f66083c9d95673ff969b41607a66f52686fa774d64ceb87'\n /* const pubKey = await getPublicKey(me)\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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"}
|
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;
|
|
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,wBAAsB,YAAY,CAAE,KAAK,EAAE,SAAS,+BAanD;AAED,wBAAsB,aAAa,CAAE,KAAK,EAAE,SAAS,mBA6CpD"}
|
package/lib/chat/keys.js
CHANGED
|
@@ -17,7 +17,8 @@ var _utils = require("@noble/hashes/utils");
|
|
|
17
17
|
var _signature = require("./signature");
|
|
18
18
|
var _solidLogic = require("solid-logic");
|
|
19
19
|
var $rdf = _interopRequireWildcard(require("rdflib"));
|
|
20
|
-
var
|
|
20
|
+
var _accessData = require("../utils/keyHelpers/accessData");
|
|
21
|
+
var _acl = require("../utils/keyHelpers/acl");
|
|
21
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); }
|
|
22
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; }
|
|
23
24
|
function generatePrivateKey() {
|
|
@@ -39,7 +40,7 @@ function _getPublicKey() {
|
|
|
39
40
|
return _solidLogic.store.fetcher.load(webId);
|
|
40
41
|
case 2:
|
|
41
42
|
_context.next = 4;
|
|
42
|
-
return (0,
|
|
43
|
+
return (0, _accessData.pubKeyUrl)(webId);
|
|
43
44
|
case 4:
|
|
44
45
|
publicKeyDoc = _context.sent;
|
|
45
46
|
_context.prev = 5;
|
|
@@ -65,9 +66,9 @@ function getPrivateKey(_x2) {
|
|
|
65
66
|
return _getPrivateKey.apply(this, arguments);
|
|
66
67
|
}
|
|
67
68
|
/**
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
-
*
|
|
69
|
+
* delete acl if keydoc exists
|
|
70
|
+
* create/edit keyDoc
|
|
71
|
+
* set keyDoc acl
|
|
71
72
|
*/
|
|
72
73
|
function _getPrivateKey() {
|
|
73
74
|
_getPrivateKey = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(webId) {
|
|
@@ -79,19 +80,19 @@ function _getPrivateKey() {
|
|
|
79
80
|
return _solidLogic.store.fetcher.load(webId);
|
|
80
81
|
case 2:
|
|
81
82
|
_context2.next = 4;
|
|
82
|
-
return (0,
|
|
83
|
+
return (0, _accessData.pubKeyUrl)(webId);
|
|
83
84
|
case 4:
|
|
84
85
|
publicKeyDoc = _context2.sent;
|
|
85
86
|
_context2.next = 7;
|
|
86
|
-
return (0,
|
|
87
|
+
return (0, _accessData.privKeyUrl)(webId);
|
|
87
88
|
case 7:
|
|
88
89
|
privateKeyDoc = _context2.sent;
|
|
89
90
|
_context2.next = 10;
|
|
90
|
-
return (0,
|
|
91
|
+
return (0, _accessData.getExistingPublicKey)(webId, publicKeyDoc);
|
|
91
92
|
case 10:
|
|
92
93
|
publicKey = _context2.sent;
|
|
93
94
|
_context2.next = 13;
|
|
94
|
-
return (0,
|
|
95
|
+
return (0, _accessData.getExistingPrivateKey)(webId, privateKeyDoc);
|
|
95
96
|
case 13:
|
|
96
97
|
privateKey = _context2.sent;
|
|
97
98
|
// is publicKey valid ?
|
|
@@ -135,7 +136,7 @@ function _getPrivateKey() {
|
|
|
135
136
|
case 31:
|
|
136
137
|
keyContainer = privateKeyDoc.substring(0, privateKeyDoc.lastIndexOf('/') + 1);
|
|
137
138
|
_context2.next = 34;
|
|
138
|
-
return setAcl(keyContainer, keyContainerAclBody(webId.uri));
|
|
139
|
+
return (0, _acl.setAcl)(keyContainer, (0, _acl.keyContainerAclBody)(webId.uri));
|
|
139
140
|
case 34:
|
|
140
141
|
return _context2.abrupt("return", privateKey);
|
|
141
142
|
case 35:
|
|
@@ -146,151 +147,67 @@ function _getPrivateKey() {
|
|
|
146
147
|
}));
|
|
147
148
|
return _getPrivateKey.apply(this, arguments);
|
|
148
149
|
}
|
|
149
|
-
|
|
150
|
-
var aclBody = "\n@prefix : <#>.\n@prefix acl: <http://www.w3.org/ns/auth/acl#>.\n@prefix foaf: <http://xmlns.com/foaf/0.1/>.\n@prefix key: <./>.\n\n:ReadWrite\n a acl:Authorization;\n acl:accessTo key:;\n acl:default key:;\n acl:agent <".concat(me, ">;\n acl:mode acl:Read, acl:Write.\n");
|
|
151
|
-
return aclBody;
|
|
152
|
-
};
|
|
153
|
-
|
|
154
|
-
/**
|
|
155
|
-
* Read only ACL
|
|
156
|
-
* @param keyDoc
|
|
157
|
-
* @param me
|
|
158
|
-
* @returns aclBody
|
|
159
|
-
*/
|
|
160
|
-
var keyAclBody = function keyAclBody(keyDoc, me) {
|
|
161
|
-
var keyAgent = 'acl:agentClass foaf:Agent'; // publicKey
|
|
162
|
-
if (me !== null && me !== void 0 && me.length) keyAgent = "acl:agent <".concat(me, ">"); // privateKey
|
|
163
|
-
var aclBody = "\n@prefix foaf: <http://xmlns.com/foaf/0.1/>.\n@prefix acl: <http://www.w3.org/ns/auth/acl#>.\n<#Read>\n a acl:Authorization;\n ".concat(keyAgent, ";\n acl:accessTo <").concat(keyDoc.split('/').pop(), ">;\n acl:mode acl:Read.\n");
|
|
164
|
-
return aclBody;
|
|
165
|
-
};
|
|
166
|
-
|
|
167
|
-
/**
|
|
168
|
-
* set ACL
|
|
169
|
-
* @param keyDoc
|
|
170
|
-
* @param aclBody
|
|
171
|
-
*/
|
|
172
|
-
function setAcl(_x3, _x4) {
|
|
173
|
-
return _setAcl.apply(this, arguments);
|
|
174
|
-
}
|
|
175
|
-
/**
|
|
176
|
-
* delete acl if keydoc exists
|
|
177
|
-
* create/edit keyDoc
|
|
178
|
-
* set keyDoc acl
|
|
179
|
-
*/
|
|
180
|
-
function _setAcl() {
|
|
181
|
-
_setAcl = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(keyDoc, aclBody) {
|
|
182
|
-
var keyAclDoc, response, aclResponse;
|
|
183
|
-
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
184
|
-
while (1) switch (_context3.prev = _context3.next) {
|
|
185
|
-
case 0:
|
|
186
|
-
_context3.next = 2;
|
|
187
|
-
return _solidLogic.store.fetcher.load(keyDoc);
|
|
188
|
-
case 2:
|
|
189
|
-
// FIXME: check the Why value on this quad:
|
|
190
|
-
debug.log(_solidLogic.store.statementsMatching(_solidLogic.store.sym(keyDoc), _solidLogic.store.sym('http://www.iana.org/assignments/link-relations/acl')));
|
|
191
|
-
keyAclDoc = _solidLogic.store.any(_solidLogic.store.sym(keyDoc), _solidLogic.store.sym('http://www.iana.org/assignments/link-relations/acl'));
|
|
192
|
-
if (keyAclDoc) {
|
|
193
|
-
_context3.next = 6;
|
|
194
|
-
break;
|
|
195
|
-
}
|
|
196
|
-
throw new Error('Key ACL doc not found!');
|
|
197
|
-
case 6:
|
|
198
|
-
_context3.prev = 6;
|
|
199
|
-
_context3.next = 9;
|
|
200
|
-
return _solidLogic.store.fetcher.webOperation('DELETE', keyAclDoc.value);
|
|
201
|
-
case 9:
|
|
202
|
-
response = _context3.sent;
|
|
203
|
-
// this may fail if webId is not an owner
|
|
204
|
-
debug.log('delete ' + keyAclDoc.value + ' ' + response.status); // should test 404 and 2xx
|
|
205
|
-
_context3.next = 18;
|
|
206
|
-
break;
|
|
207
|
-
case 13:
|
|
208
|
-
_context3.prev = 13;
|
|
209
|
-
_context3.t0 = _context3["catch"](6);
|
|
210
|
-
if (!(_context3.t0.response.status !== 404)) {
|
|
211
|
-
_context3.next = 17;
|
|
212
|
-
break;
|
|
213
|
-
}
|
|
214
|
-
throw new Error(_context3.t0);
|
|
215
|
-
case 17:
|
|
216
|
-
debug.log('delete ' + keyAclDoc.value + ' ' + _context3.t0.response.status); // should test 404 and 2xx
|
|
217
|
-
case 18:
|
|
218
|
-
_context3.next = 20;
|
|
219
|
-
return _solidLogic.store.fetcher.webOperation('PUT', keyAclDoc.value, {
|
|
220
|
-
data: aclBody,
|
|
221
|
-
contentType: 'text/turtle'
|
|
222
|
-
});
|
|
223
|
-
case 20:
|
|
224
|
-
aclResponse = _context3.sent;
|
|
225
|
-
case 21:
|
|
226
|
-
case "end":
|
|
227
|
-
return _context3.stop();
|
|
228
|
-
}
|
|
229
|
-
}, _callee3, null, [[6, 13]]);
|
|
230
|
-
}));
|
|
231
|
-
return _setAcl.apply(this, arguments);
|
|
232
|
-
}
|
|
233
|
-
function saveKey(_x5, _x6, _x7) {
|
|
150
|
+
function saveKey(_x3, _x4, _x5) {
|
|
234
151
|
return _saveKey.apply(this, arguments);
|
|
235
152
|
}
|
|
236
153
|
function _saveKey() {
|
|
237
154
|
_saveKey = (0, _asyncToGenerator2["default"])(function (keyDoc, del, add) {
|
|
238
155
|
var me = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '';
|
|
239
|
-
return /*#__PURE__*/_regenerator["default"].mark(function
|
|
156
|
+
return /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
|
|
240
157
|
var keyAclDoc, response, aclBody;
|
|
241
|
-
return _regenerator["default"].wrap(function
|
|
242
|
-
while (1) switch (
|
|
158
|
+
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
159
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
243
160
|
case 0:
|
|
244
|
-
|
|
161
|
+
_context3.next = 2;
|
|
245
162
|
return _solidLogic.store.fetcher.load(keyDoc);
|
|
246
163
|
case 2:
|
|
247
|
-
|
|
164
|
+
_context3.prev = 2;
|
|
248
165
|
// get keyAcldoc
|
|
249
166
|
keyAclDoc = _solidLogic.store.any(_solidLogic.store.sym(keyDoc), _solidLogic.store.sym('http://www.iana.org/assignments/link-relations/acl'));
|
|
250
167
|
if (!keyAclDoc) {
|
|
251
|
-
|
|
168
|
+
_context3.next = 17;
|
|
252
169
|
break;
|
|
253
170
|
}
|
|
254
|
-
|
|
255
|
-
|
|
171
|
+
_context3.prev = 5;
|
|
172
|
+
_context3.next = 8;
|
|
256
173
|
return _solidLogic.store.fetcher.webOperation('DELETE', keyAclDoc.value);
|
|
257
174
|
case 8:
|
|
258
|
-
response =
|
|
175
|
+
response = _context3.sent;
|
|
259
176
|
// this may fail if webId is not an owner
|
|
260
177
|
debug.log('delete ' + keyAclDoc.value + ' ' + response.status); // should test 404 and 2xx
|
|
261
|
-
|
|
178
|
+
_context3.next = 17;
|
|
262
179
|
break;
|
|
263
180
|
case 12:
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
if (!(
|
|
267
|
-
|
|
181
|
+
_context3.prev = 12;
|
|
182
|
+
_context3.t0 = _context3["catch"](5);
|
|
183
|
+
if (!(_context3.t0.response.status !== 404)) {
|
|
184
|
+
_context3.next = 16;
|
|
268
185
|
break;
|
|
269
186
|
}
|
|
270
|
-
throw new Error(
|
|
187
|
+
throw new Error(_context3.t0);
|
|
271
188
|
case 16:
|
|
272
|
-
debug.log('delete ' + keyAclDoc.value + ' ' +
|
|
189
|
+
debug.log('delete ' + keyAclDoc.value + ' ' + _context3.t0.response.status); // should test 404 and 2xx
|
|
273
190
|
case 17:
|
|
274
|
-
|
|
191
|
+
_context3.next = 19;
|
|
275
192
|
return _solidLogic.store.updater.updateMany(del, add);
|
|
276
193
|
case 19:
|
|
277
194
|
// or a promise store.updater.update ?
|
|
278
195
|
// create READ only ACL
|
|
279
|
-
aclBody = keyAclBody(keyDoc, me);
|
|
280
|
-
|
|
281
|
-
return setAcl(keyDoc, aclBody);
|
|
196
|
+
aclBody = (0, _acl.keyAclBody)(keyDoc, me);
|
|
197
|
+
_context3.next = 22;
|
|
198
|
+
return (0, _acl.setAcl)(keyDoc, aclBody);
|
|
282
199
|
case 22:
|
|
283
|
-
|
|
200
|
+
_context3.next = 27;
|
|
284
201
|
break;
|
|
285
202
|
case 24:
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
throw new Error(
|
|
203
|
+
_context3.prev = 24;
|
|
204
|
+
_context3.t1 = _context3["catch"](2);
|
|
205
|
+
throw new Error(_context3.t1);
|
|
289
206
|
case 27:
|
|
290
207
|
case "end":
|
|
291
|
-
return
|
|
208
|
+
return _context3.stop();
|
|
292
209
|
}
|
|
293
|
-
},
|
|
210
|
+
}, _callee3, null, [[2, 24], [5, 12]]);
|
|
294
211
|
})();
|
|
295
212
|
});
|
|
296
213
|
return _saveKey.apply(this, arguments);
|
package/lib/chat/keys.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.js","names":["debug","_interopRequireWildcard","require","_secp256k","_utils","_signature","_solidLogic","$rdf","_cryptoKeyHelpers","_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","_callee","webId","publicKeyDoc","wrap","_callee$","_context","prev","next","store","fetcher","load","pubKeyUrl","sent","any","sym","CERT","abrupt","value","t0","undefined","stop","getPrivateKey","_x2","_getPrivateKey","_callee2","privateKeyDoc","publicKey","validPublicKey","del","add","newPublicKey","keyContainer","_callee2$","_context2","privKeyUrl","publicKeyExists","privateKeyExists","confirm","uri","st","literal","saveKey","lit","log","substring","lastIndexOf","setAcl","keyContainerAclBody","me","aclBody","concat","keyAclBody","keyDoc","keyAgent","length","split","pop","_x3","_x4","_setAcl","_callee3","keyAclDoc","response","aclResponse","_callee3$","_context3","statementsMatching","Error","webOperation","status","data","contentType","_x5","_x6","_x7","_saveKey","_callee4","_callee4$","_context4","updater","updateMany","t1"],"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 { NamedNode } from 'rdflib'\r\nimport * as $rdf from 'rdflib'\r\nimport { publicKeyExists, pubKeyUrl, privKeyUrl, privateKeyExists } from '../utils/cryptoKeyHelpers'\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 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, store.sym(CERT + 'PublicKey'))\r\n return key?.value // as NamedNode\r\n } catch (err) {\r\n return undefined\r\n }\r\n // this is called in display message and should not try to create a publicKeyDoc\r\n // const publicKey = await publicKeyExists(webId)\r\n // return publicKey\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 publicKeyExists(webId)\r\n let privateKey = await privateKeyExists(webId)\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 // if (privateKey) del.push($rdf.st(webId, store.sym(CERT + 'PrivateKey'), $rdf.lit(privateKey), store.sym(privateKeyDoc)))\r\n\r\n if (!privateKey) {\r\n // add = []\r\n privateKey = generatePrivateKey()\r\n add = [$rdf.st(webId, store.sym(CERT + '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, store.sym(CERT + '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, store.sym(CERT + '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\n/**\r\n * key container ACL\r\n * @param me\r\n * @returns aclBody\r\n */\r\nconst keyContainerAclBody = (me: string) => {\r\n const aclBody = `\r\n@prefix : <#>.\r\n@prefix acl: <http://www.w3.org/ns/auth/acl#>.\r\n@prefix foaf: <http://xmlns.com/foaf/0.1/>.\r\n@prefix key: <./>.\r\n\r\n:ReadWrite\r\n a acl:Authorization;\r\n acl:accessTo key:;\r\n acl:default key:;\r\n acl:agent <${me}>;\r\n acl:mode acl:Read, acl:Write.\r\n`\r\n return aclBody\r\n}\r\n\r\n/**\r\n * Read only ACL\r\n * @param keyDoc\r\n * @param me\r\n * @returns aclBody\r\n */\r\nconst keyAclBody = (keyDoc, me) => {\r\n let keyAgent = 'acl:agentClass foaf:Agent' // publicKey\r\n if (me?.length) keyAgent = `acl:agent <${me}>` // privateKey\r\n const aclBody = `\r\n@prefix foaf: <http://xmlns.com/foaf/0.1/>.\r\n@prefix acl: <http://www.w3.org/ns/auth/acl#>.\r\n<#Read>\r\n a acl:Authorization;\r\n ${keyAgent};\r\n acl:accessTo <${keyDoc.split('/').pop()}>;\r\n acl:mode acl:Read.\r\n`\r\n return aclBody\r\n}\r\n\r\n/**\r\n * set ACL\r\n * @param keyDoc\r\n * @param aclBody\r\n */\r\nasync function setAcl (keyDoc: string, aclBody: string) {\r\n // Some servers don't present a Link http response header\r\n // if the container doesn't exist yet, refetch the resource\r\n\r\n await store.fetcher.load(keyDoc)\r\n\r\n // FIXME: check the Why value on this quad:\r\n debug.log(store.statementsMatching(store.sym(keyDoc), store.sym('http://www.iana.org/assignments/link-relations/acl')))\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 throw new Error('Key ACL doc not found!')\r\n }\r\n\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 const aclResponse = await store.fetcher.webOperation('PUT', keyAclDoc.value, {\r\n data: aclBody,\r\n contentType: 'text/turtle'\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 store.fetcher.load(keyDoc)\r\n // delete keyAclDoc\r\n try {\r\n // get keyAcldoc\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 // 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 } catch (err) { throw new Error(err) }\r\n}\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"keys.js","names":["debug","_interopRequireWildcard","require","_secp256k","_utils","_signature","_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","_callee","webId","publicKeyDoc","wrap","_callee$","_context","prev","next","store","fetcher","load","pubKeyUrl","sent","any","sym","CERT","abrupt","value","t0","undefined","stop","getPrivateKey","_x2","_getPrivateKey","_callee2","privateKeyDoc","publicKey","validPublicKey","del","add","newPublicKey","keyContainer","_callee2$","_context2","privKeyUrl","getExistingPublicKey","getExistingPrivateKey","confirm","uri","st","literal","saveKey","lit","log","substring","lastIndexOf","setAcl","keyContainerAclBody","_x3","_x4","_x5","_saveKey","keyDoc","me","length","_callee3","keyAclDoc","response","aclBody","_callee3$","_context3","webOperation","status","Error","updater","updateMany","keyAclBody","t1"],"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 { 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\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, store.sym(CERT + 'PublicKey'))\r\n return key?.value // as NamedNode\r\n } catch (err) {\r\n return undefined\r\n }\r\n // this is called in display message and should not try to create a publicKeyDoc\r\n // const publicKey = await publicKeyExists(webId)\r\n // return publicKey\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 // if (privateKey) del.push($rdf.st(webId, store.sym(CERT + 'PrivateKey'), $rdf.lit(privateKey), store.sym(privateKeyDoc)))\r\n\r\n if (!privateKey) {\r\n // add = []\r\n privateKey = generatePrivateKey()\r\n add = [$rdf.st(webId, store.sym(CERT + '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, store.sym(CERT + '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, store.sym(CERT + '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\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 store.fetcher.load(keyDoc)\r\n // delete keyAclDoc\r\n try {\r\n // get keyAcldoc\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 // 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 } catch (err) { throw new Error(err) }\r\n}\r\n"],"mappings":"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"}
|
package/lib/chat/message.js
CHANGED
|
@@ -134,7 +134,7 @@ function renderMessageRow(channelObject, message, fresh, options, userContext) {
|
|
|
134
134
|
|
|
135
135
|
// signed message, get public key and check signature
|
|
136
136
|
else {
|
|
137
|
-
(0, _keys.getPublicKey)(creator
|
|
137
|
+
(0, _keys.getPublicKey)(creator).then(function (publicKey) {
|
|
138
138
|
debug.log(creator.uri + '\n' + msg.created + '\n' + msg.id + '\n' + publicKey);
|
|
139
139
|
if (!publicKey) {
|
|
140
140
|
// TODO try to recreate the publicKey
|