410304c04abd84c2faa90dd798d2e03c68905ca6be5c60e0572c7821a82ed733.json raw
1 {"ast":null,"code":"import _asyncToGenerator from \"/home/mleku/src/orly.dev/next/signer/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\";\nimport { CryptoHelper, NostrHelper } from '@common';\nexport const addIdentity = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(function* (data) {\n this.assureIsInitialized();\n const privkey = NostrHelper.getNostrPrivkeyObject(data.privkeyString.toLowerCase()).hex;\n // Check if an identity with the same privkey already exists.\n const existingIdentity = (this.getBrowserSessionHandler().browserSessionData?.identities ?? []).find(x => x.privkey === privkey);\n if (existingIdentity) {\n throw new Error(`An identity with the same private key already exists: ${existingIdentity.nick}`);\n }\n const browserSessionData = this.getBrowserSessionHandler().browserSessionData;\n if (!browserSessionData) {\n throw new Error('Browser session data is undefined.');\n }\n const decryptedIdentity = {\n id: CryptoHelper.v4(),\n nick: data.nick,\n privkey,\n createdAt: new Date().toISOString()\n };\n // Add the new identity to the session data.\n browserSessionData.identities.push(decryptedIdentity);\n let isFirstIdentity = false;\n if (browserSessionData.identities.length === 1) {\n isFirstIdentity = true;\n browserSessionData.selectedIdentityId = decryptedIdentity.id;\n }\n this.getBrowserSessionHandler().saveFullData(browserSessionData);\n // Encrypt the new identity and add it to the sync data.\n const encryptedIdentity = yield encryptIdentity.call(this, decryptedIdentity);\n const encryptedIdentities = [...(this.getBrowserSyncHandler().browserSyncData?.identities ?? []), encryptedIdentity];\n yield this.getBrowserSyncHandler().saveAndSetPartialData_Identities({\n identities: encryptedIdentities\n });\n if (isFirstIdentity) {\n yield this.getBrowserSyncHandler().saveAndSetPartialData_SelectedIdentityId({\n selectedIdentityId: encryptedIdentity.id\n });\n }\n });\n return function addIdentity(_x) {\n return _ref.apply(this, arguments);\n };\n}();\nexport const deleteIdentity = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(function* (identityId) {\n this.assureIsInitialized();\n if (!identityId) {\n return;\n }\n const browserSessionData = this.getBrowserSessionHandler().browserSessionData;\n const browserSyncData = this.getBrowserSyncHandler().browserSyncData;\n if (!browserSessionData || !browserSyncData) {\n throw new Error('Browser session or sync data is undefined.');\n }\n browserSessionData.identities = browserSessionData.identities.filter(x => x.id !== identityId);\n browserSessionData.permissions = browserSessionData.permissions.filter(x => x.identityId !== identityId);\n browserSessionData.relays = browserSessionData.relays.filter(x => x.identityId !== identityId);\n if (browserSessionData.selectedIdentityId === identityId) {\n // Choose another identity to be selected or null if there is none.\n browserSessionData.selectedIdentityId = browserSessionData.identities.length > 0 ? browserSessionData.identities[0].id : null;\n }\n yield this.getBrowserSessionHandler().saveFullData(browserSessionData);\n // Handle Sync data.\n const encryptedIdentityId = yield this.encrypt(identityId);\n yield this.getBrowserSyncHandler().saveAndSetPartialData_Identities({\n identities: browserSyncData.identities.filter(x => x.id !== encryptedIdentityId)\n });\n yield this.getBrowserSyncHandler().saveAndSetPartialData_Permissions({\n permissions: browserSyncData.permissions.filter(x => x.identityId !== encryptedIdentityId)\n });\n yield this.getBrowserSyncHandler().saveAndSetPartialData_Relays({\n relays: browserSyncData.relays.filter(x => x.identityId !== encryptedIdentityId)\n });\n yield this.getBrowserSyncHandler().saveAndSetPartialData_SelectedIdentityId({\n selectedIdentityId: browserSessionData.selectedIdentityId === null ? null : yield this.encrypt(browserSessionData.selectedIdentityId)\n });\n });\n return function deleteIdentity(_x2) {\n return _ref2.apply(this, arguments);\n };\n}();\nexport const switchIdentity = /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator(function* (identityId) {\n this.assureIsInitialized();\n // Check, if the identity really exists.\n const browserSessionData = this.getBrowserSessionHandler().browserSessionData;\n if (!browserSessionData?.identities.find(x => x.id === identityId)) {\n return;\n }\n browserSessionData.selectedIdentityId = identityId;\n yield this.getBrowserSessionHandler().saveFullData(browserSessionData);\n const encryptedIdentityId = identityId === null ? null : yield this.encrypt(identityId);\n yield this.getBrowserSyncHandler().saveAndSetPartialData_SelectedIdentityId({\n selectedIdentityId: encryptedIdentityId\n });\n });\n return function switchIdentity(_x3) {\n return _ref3.apply(this, arguments);\n };\n}();\nexport const encryptIdentity = /*#__PURE__*/function () {\n var _ref4 = _asyncToGenerator(function* (identity) {\n const encryptedIdentity = {\n id: yield this.encrypt(identity.id),\n nick: yield this.encrypt(identity.nick),\n createdAt: yield this.encrypt(identity.createdAt),\n privkey: yield this.encrypt(identity.privkey)\n };\n return encryptedIdentity;\n });\n return function encryptIdentity(_x4) {\n return _ref4.apply(this, arguments);\n };\n}();\nexport const decryptIdentities = /*#__PURE__*/function () {\n var _ref5 = _asyncToGenerator(function* (identities, withLockedVault = undefined) {\n const decryptedIdentities = [];\n for (const identity of identities) {\n const decryptedIdentity = yield decryptIdentity.call(this, identity, withLockedVault);\n decryptedIdentities.push(decryptedIdentity);\n }\n return decryptedIdentities;\n });\n return function decryptIdentities(_x5) {\n return _ref5.apply(this, arguments);\n };\n}();\nexport const decryptIdentity = /*#__PURE__*/function () {\n var _ref6 = _asyncToGenerator(function* (identity, withLockedVault = undefined) {\n if (typeof withLockedVault === 'undefined') {\n const decryptedIdentity = {\n id: yield this.decrypt(identity.id, 'string'),\n nick: yield this.decrypt(identity.nick, 'string'),\n createdAt: yield this.decrypt(identity.createdAt, 'string'),\n privkey: yield this.decrypt(identity.privkey, 'string')\n };\n return decryptedIdentity;\n }\n // v2: Use pre-derived key\n if (withLockedVault.keyBase64) {\n const decryptedIdentity = {\n id: yield this.decryptWithLockedVaultV2(identity.id, 'string', withLockedVault.iv, withLockedVault.keyBase64),\n nick: yield this.decryptWithLockedVaultV2(identity.nick, 'string', withLockedVault.iv, withLockedVault.keyBase64),\n createdAt: yield this.decryptWithLockedVaultV2(identity.createdAt, 'string', withLockedVault.iv, withLockedVault.keyBase64),\n privkey: yield this.decryptWithLockedVaultV2(identity.privkey, 'string', withLockedVault.iv, withLockedVault.keyBase64)\n };\n return decryptedIdentity;\n }\n // v1: Use password (PBKDF2)\n const decryptedIdentity = {\n id: yield this.decryptWithLockedVault(identity.id, 'string', withLockedVault.iv, withLockedVault.password),\n nick: yield this.decryptWithLockedVault(identity.nick, 'string', withLockedVault.iv, withLockedVault.password),\n createdAt: yield this.decryptWithLockedVault(identity.createdAt, 'string', withLockedVault.iv, withLockedVault.password),\n privkey: yield this.decryptWithLockedVault(identity.privkey, 'string', withLockedVault.iv, withLockedVault.password)\n };\n return decryptedIdentity;\n });\n return function decryptIdentity(_x6) {\n return _ref6.apply(this, arguments);\n };\n}();","map":null,"metadata":{},"sourceType":"module","externalDependencies":[]}