From 90e110b1fdd4d334a83be9026451d7e9e9898062 Mon Sep 17 00:00:00 2001 From: "P. Reis" Date: Sat, 30 Mar 2024 16:49:05 -0300 Subject: [PATCH 1/3] feat: script to generate an nsec This fixes: https://gitlab.com/soapbox-pub/ditto/-/issues/85 --- deno.json | 3 ++- scripts/nsec.ts | 16 ++++++++++++++++ src/deps.ts | 1 + 3 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 scripts/nsec.ts diff --git a/deno.json b/deno.json index a552b64..58edb3e 100644 --- a/deno.json +++ b/deno.json @@ -7,7 +7,8 @@ "debug": "deno run -A --unstable-ffi --inspect src/server.ts", "test": "DB_PATH=\":memory:\" deno test -A --unstable-ffi", "check": "deno check src/server.ts", - "relays:sync": "deno run -A --unstable-ffi scripts/relays.ts sync" + "relays:sync": "deno run -A --unstable-ffi scripts/relays.ts sync", + "nsec": "deno run -A --unstable-ffi scripts/nsec.ts" }, "exclude": ["./public"], "imports": { "@/": "./src/", "@soapbox/nspec": "jsr:@soapbox/nspec@^0.8.1", "~/fixtures/": "./fixtures/" }, diff --git a/scripts/nsec.ts b/scripts/nsec.ts new file mode 100644 index 0000000..cbef7c7 --- /dev/null +++ b/scripts/nsec.ts @@ -0,0 +1,16 @@ +import { generateSecretKey, nip19 } from '@/deps.ts'; + +switch (Deno.args[0]) { + default: { + const encodedNsec = generateEncodedPrivateKey(); + console.log(encodedNsec); + Deno.exit(0); + } +} + +function generateEncodedPrivateKey(): string { + const sk = generateSecretKey(); + const nsec = nip19.nsecEncode(sk); + + return nsec; +} diff --git a/src/deps.ts b/src/deps.ts index 2e5130e..5227526 100644 --- a/src/deps.ts +++ b/src/deps.ts @@ -19,6 +19,7 @@ export { nip13, nip19, nip21, + generateSecretKey, type UnsignedEvent, type VerifiedEvent, } from 'npm:nostr-tools@^2.3.1'; From 99b22ab7263ca66e8ec008a20af8d51a8e8d62be Mon Sep 17 00:00:00 2001 From: "P. Reis" Date: Sat, 30 Mar 2024 17:25:41 -0300 Subject: [PATCH 2/3] refactor: nsec script --- deno.json | 2 +- scripts/nsec.ts | 11 +++-------- src/deps.ts | 1 - 3 files changed, 4 insertions(+), 10 deletions(-) diff --git a/deno.json b/deno.json index 58edb3e..99f1eb0 100644 --- a/deno.json +++ b/deno.json @@ -8,7 +8,7 @@ "test": "DB_PATH=\":memory:\" deno test -A --unstable-ffi", "check": "deno check src/server.ts", "relays:sync": "deno run -A --unstable-ffi scripts/relays.ts sync", - "nsec": "deno run -A --unstable-ffi scripts/nsec.ts" + "nsec": "deno run scripts/nsec.ts" }, "exclude": ["./public"], "imports": { "@/": "./src/", "@soapbox/nspec": "jsr:@soapbox/nspec@^0.8.1", "~/fixtures/": "./fixtures/" }, diff --git a/scripts/nsec.ts b/scripts/nsec.ts index cbef7c7..dcfa926 100644 --- a/scripts/nsec.ts +++ b/scripts/nsec.ts @@ -1,12 +1,7 @@ -import { generateSecretKey, nip19 } from '@/deps.ts'; +import { generateSecretKey, nip19 } from 'npm:nostr-tools'; -switch (Deno.args[0]) { - default: { - const encodedNsec = generateEncodedPrivateKey(); - console.log(encodedNsec); - Deno.exit(0); - } -} +const encodedNsec = generateEncodedPrivateKey(); +console.log(encodedNsec); function generateEncodedPrivateKey(): string { const sk = generateSecretKey(); diff --git a/src/deps.ts b/src/deps.ts index 5227526..2e5130e 100644 --- a/src/deps.ts +++ b/src/deps.ts @@ -19,7 +19,6 @@ export { nip13, nip19, nip21, - generateSecretKey, type UnsignedEvent, type VerifiedEvent, } from 'npm:nostr-tools@^2.3.1'; From 494193020ee6d3939cac7c14e9eb4b8cffd5fb30 Mon Sep 17 00:00:00 2001 From: "P. Reis" Date: Sat, 30 Mar 2024 18:09:37 -0300 Subject: [PATCH 3/3] refactor/docs: include nsec script in README and generate nsec directly --- README.md | 2 +- scripts/nsec.ts | 11 +++-------- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index ae5828e..73fc4e4 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ TODO 3. Download [Soapbox](https://dl.soapbox.pub/) or another web-based Mastodon client of your choice. 4. Put the frontend files inside the `public` directory. 5. Create an `.env` file. -6. Define `DITTO_NSEC=` in your .env file. You can generate an nsec by installing [nak](https://github.com/fiatjaf/nak) and running `nak key generate | nak encode nsec`. +6. Define `DITTO_NSEC=` in your .env file. You can generate an nsec by running `deno task nsec`. 7. Run `deno task dev`. ## License diff --git a/scripts/nsec.ts b/scripts/nsec.ts index dcfa926..b0da325 100644 --- a/scripts/nsec.ts +++ b/scripts/nsec.ts @@ -1,11 +1,6 @@ import { generateSecretKey, nip19 } from 'npm:nostr-tools'; -const encodedNsec = generateEncodedPrivateKey(); -console.log(encodedNsec); +const sk = generateSecretKey(); +const nsec = nip19.nsecEncode(sk); -function generateEncodedPrivateKey(): string { - const sk = generateSecretKey(); - const nsec = nip19.nsecEncode(sk); - - return nsec; -} +console.log(nsec);