From 9678c2d132b1654411b08f4ad6e542c9a3121a13 Mon Sep 17 00:00:00 2001 From: Believethehype <1097224+believethehype@users.noreply.github.com> Date: Wed, 27 Nov 2024 19:26:15 +0100 Subject: [PATCH] nip44 encryption on noogle --- nostr_dvm/dvm.py | 6 +-- nostr_dvm/utils/dvmconfig.py | 2 +- tests/search.py | 4 +- ui/noogle/src/components/FilterGeneration.vue | 2 - ui/noogle/src/components/Login.vue | 19 ++++++---- ui/noogle/src/components/Search.vue | 37 ++++++++++++++++--- ui/noogle/src/store.js | 4 +- 7 files changed, 51 insertions(+), 23 deletions(-) diff --git a/nostr_dvm/dvm.py b/nostr_dvm/dvm.py index d239c78..0154389 100644 --- a/nostr_dvm/dvm.py +++ b/nostr_dvm/dvm.py @@ -40,13 +40,11 @@ class DVM: uniffi_set_event_loop(asyncio.get_running_loop()) async def run_dvm(self, dvm_config, admin_config): - self.dvm_config = dvm_config self.admin_config = admin_config self.keys = Keys.parse(dvm_config.PRIVATE_KEY) relaylimits = RelayLimits.disable() - opts = ( - Options().relay_limits(relaylimits)) #.difficulty(28) + opts = Options().relay_limits(relaylimits) #.difficulty(28) #self.client = Client(self.keys) self.client = ClientBuilder().signer(NostrSigner.keys(self.keys)).opts(opts).build() @@ -94,6 +92,7 @@ class DVM: keys = self.keys async def handle(self, relay_url, subscription_id, nostr_event: Event): + print(nostr_event.as_json()) if self.dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value: print(nostr_event.as_json()) if EventDefinitions.KIND_NIP90_EXTRACT_TEXT.as_u16() <= nostr_event.kind().as_u16() <= EventDefinitions.KIND_NIP90_GENERIC.as_u16(): @@ -108,6 +107,7 @@ class DVM: async def handle_nip90_job_event(nip90_event): # decrypted encrypted events + nip90_event, use_legacy_encryption = check_and_decrypt_tags(nip90_event, self.dvm_config) # if event is encrypted, but we can't decrypt it (e.g. because its directed to someone else), return if nip90_event is None: diff --git a/nostr_dvm/utils/dvmconfig.py b/nostr_dvm/utils/dvmconfig.py index 1ca0437..39b6070 100644 --- a/nostr_dvm/utils/dvmconfig.py +++ b/nostr_dvm/utils/dvmconfig.py @@ -16,7 +16,7 @@ class DVMConfig: FIX_COST: float = None PER_UNIT_COST: float = None - RELAY_LIST = [ + RELAY_LIST = ["wss://relay.primal.net", "wss://nostr.mom", "wss://nostr.oxtr.dev", ] diff --git a/tests/search.py b/tests/search.py index 07e5629..2cb264f 100644 --- a/tests/search.py +++ b/tests/search.py @@ -207,8 +207,8 @@ def playground(): advanced_search_wine = build_advanced_search_wine("Nostr.wine Search", "discovery_content_searchwine") advanced_search_wine.run() - profile_search = build_user_search("Profile Searcher", "profile_search") - profile_search.run() + #profile_search = build_user_search("Profile Searcher", "profile_search") + #profile_search.run() diff --git a/ui/noogle/src/components/FilterGeneration.vue b/ui/noogle/src/components/FilterGeneration.vue index a53c364..8f58f20 100644 --- a/ui/noogle/src/components/FilterGeneration.vue +++ b/ui/noogle/src/components/FilterGeneration.vue @@ -947,7 +947,6 @@ async function unfollow_all(results) { let relayopts = new Options().relayLimits(limits); let dbclient = new ClientBuilder().signer(signer).opts(relayopts).build() await dbclient.addRelay("wss://relay.damus.io"); - await dbclient.addRelay("wss://purplepag.es"); await dbclient.connect() let found = false let element @@ -1027,7 +1026,6 @@ async function unfollow(result) { let relayopts = new Options().relayLimits(limits); let dbclient = new ClientBuilder().signer(signer).opts(relayopts).build() await dbclient.addRelay("wss://relay.damus.io"); - await dbclient.addRelay("wss://purplepag.es"); await dbclient.connect() console.log(result.authorid) let found = false diff --git a/ui/noogle/src/components/Login.vue b/ui/noogle/src/components/Login.vue index cc0c5e1..14dd5dd 100644 --- a/ui/noogle/src/components/Login.vue +++ b/ui/noogle/src/components/Login.vue @@ -320,7 +320,14 @@ export default { } else { await this.sign_in_anon() } - await this.getnip89s() + await this.getnip89s() + + + await this.reconcile_all_profiles(store.state.pubkey) + + + + let nwc = loadNWCObject() this.hasNWC = false @@ -397,7 +404,7 @@ export default { console.log("SIGNER: " + this.signer.toString()) let limits = RelayLimits.disable() - let opts = new Options().waitForSend(false).connectionTimeout(Duration.fromSecs(5)).relayLimits(limits); + let opts = new Options().relayLimits(limits); let client = new ClientBuilder().signer(this.signer).opts(opts).build() @@ -416,10 +423,7 @@ export default { localStorage.setItem('nostr-key', pubkey.toHex()) console.log("Client Nip46 connected") await this.get_user_info(pubkey) - if (launch) { - await this.reconcile_all_profiles(pubkey) - } console.log(pubkey.toBech32()) //await this.reconcile_all_profiles() @@ -683,7 +687,8 @@ export default { async getnip89s() { //let keys = Keys.generate() - let keys = Keys.parse(store.state.nooglekey) + let keys = Keys.parse(import.meta.env.VITE_NOOGLE_PK) + // let keys = Keys.parse(store.state.nooglekey) let signer = NostrSigner.keys(keys) let client = new ClientBuilder().signer(signer).build() @@ -872,7 +877,7 @@ export default { dbclient = new ClientBuilder().signer(signer).database(await db).opts(relayopts).build() await dbclient.addRelay("wss://relay.damus.io"); - await dbclient.addRelay("wss://purplepag.es"); + await dbclient.addRelay("wss://relay.primal.net"); await dbclient.connect() store.commit('set_dbclient', dbclient) diff --git a/ui/noogle/src/components/Search.vue b/ui/noogle/src/components/Search.vue index b2ff1e2..4e3f9c6 100644 --- a/ui/noogle/src/components/Search.vue +++ b/ui/noogle/src/components/Search.vue @@ -158,23 +158,30 @@ async function send_search_request(msg) { let contentwine = await signer.nip44Encrypt(PublicKey.parse(winesearch), tags_as_str, NIP44Version.V2) let contentprofile = await signer.nip44Encrypt(PublicKey.parse(profilesearch), tags_profile_as_str, NIP44Version.V2) + let relays = ["relays"] + for (let relay of store.state.relays) { + relays.push(relay) + } let tags_nb = [ ["p", nostrbadnsearch], ["encrypted"], ["client", "noogle"] ] + tags_nb.push(relays) let tags_wine = [ ["p", winesearch], ["encrypted"], ["client", "noogle"] ] + tags_wine.push(relays) let tags_profile = [ ["p", profilesearch], ["encrypted"], ["client", "noogle"] ] + tags_profile.push(relays) let res; @@ -208,6 +215,8 @@ async function send_search_request(msg) { res = await client.sendEventBuilder(evt) requestid = res.toHex() + console.log(requestid) + let res2 = await client.sendEventBuilder(evt2) requestid2 = res2.toHex() @@ -302,8 +311,16 @@ async function listen() { if (is_encrypted) { let signer = store.state.signer if (ptag === store.state.pubkey.toHex()) { - let tags_str = await signer.nip44Decrypt(event.author, event.content) + let tags_str = "" + try{ + tags_str = await signer.nip44Decrypt(event.author, event.content) console.log(tags_str) + } + catch(e){ + tags_str = await signer.nip04Decrypt(event.author, event.content) + console.log(tags_str) + } + let params = JSON.parse(tags_str) params.push(Tag.parse(["p", ptag]).asVec()) params.push(Tag.parse(["encrypted"]).asVec()) @@ -387,11 +404,20 @@ async function listen() { } else if (event.kind === 6302) { let entries = [] //console.log("6302:", event.content); - + let content = "" if (is_encrypted) { let signer = store.state.signer if (ptag === store.state.pubkey.toHex()) { - content = await signer.nip44Decrypt(event.author, event.content) + + try{ + content = await signer.nip44Decrypt(event.author, event.content) + console.log("nip44") + + } + catch(e){ + content = await signer.nip04Decrypt(event.author, event.content) + console.log("nip04") + } } } @@ -399,7 +425,6 @@ async function listen() { try { let event_etags = JSON.parse(content) - console.log(event_etags) if (event_etags.length > 0) { for (let etag of event_etags) { const eventid = EventId.parse(etag[1]).toHex() //a bit unnecessary @@ -452,8 +477,8 @@ async function listen() { store.commit('set_active_search_dvms', dvms) console.log("Events from" + event.author.toHex()) store.commit('set_search_results', items) - } catch { - + } catch(e) { + console.log(e) } } else if (event.kind === 6303) { let entries = [] diff --git a/ui/noogle/src/store.js b/ui/noogle/src/store.js index 624558e..86299b4 100644 --- a/ui/noogle/src/store.js +++ b/ui/noogle/src/store.js @@ -32,8 +32,8 @@ const store = createStore({ results: [], profile_results: [], relays: ["wss://relay.primal.net", - "wss://nostr.mom", "wss://nostr.oxtr.dev", - "wss://relay.nostr.net" + "wss://nostr.mom", + "wss://nostr.oxtr.dev", ], } },