"Because Nsec signers should have never required an email address..."
Contact Founder · Report Bug · Request Feature
NostrKeyChain.com -> NostrKeyRing.com
Nostr Keyring was made to be the simplest secure Nsec manager across all browsers.
There's only 4 pages to this app.
- Login
- How to get here: This the apps main page unless you're logged in, the it's the User's Profile
- What does it do: Create UserProfiles, Access UserProfiles
- Create
- How to get here: Create Profile button
- What does it do:
-
- Create or Input Nsec, has to be verifed to move foward
-
- Nip-65 validates the "picture", "name", "lud16"
-
- User select if they want to use encryption, passwords must match
-
- Show password is optional
-
- Create Profile button uses Storage API in production or Local Storage in development, it store this information:
-
-
- id = time of creation shown in order of creation
-
-
-
- pubkey = npub Hex
-
-
-
- name = if found in Nip-65 search
-
-
-
- picture = if found in Nip-65 search
-
-
-
- lud16 = if found in Nip-65 search
-
-
-
- salt = created randomly for each user
-
-
-
- nsec or encrypted nsec
-
- UserProfile
- How to get here: Clicking a User Profile
- What does it do: If encrypted, we have to login we can access this user
-
- Nip-65 runs again and updates "picture", "name", "lud16"
-
- Once logged in, full access to Nip-07
-
- If encrypted, option to change password/re-encrypt nsec
-
- Option to show plain text nsec
-
- Option to clipboard copy nsec (NOT SECURE, DONT)
-
- Option to delete User Profile, must enter name to confirm
- About
- How to get here: Clicking the Header take you to this page
- What does it do: Select language, Find this Repo, Copy my Npub to report bugs
The user enters their own password
Instead of creating a useless salt, we use the static pubkey in it's place
Password and salt are appended then ran through a Key Derivation Function (KDF) using Argon2id
Now we take the KDF and AES symmetrically encrypt the Nsec using the password
When it's time to un-encrypt the Nsec, if the result doesn't start with "nsec1" returned invalid
To Dev:
- Open in your editor, https://vscodium.com/ is legit
- You'll need NodeJS
https://nodejs.org - On root in IDE > Open Intergated Terminal >
npm ithennpm start, to run ESBuild usenpm run build
To Build:
- On root in IDE > Open Intergated Terminal >
npm ithennpm run build - Open folder
Root>extension>manifest.json - Go into browser URL:
-
- firefox:
about:debugging#/runtime/this-firefox, addmanifest.json
- firefox:
-
- chrome:
chrome://extensions/, enable dev mode, drop the extension folder
- chrome:
-
- safari: ``
To Push:
- git add .
- git commit -m ""
- git push origin main
- username
- password token
If you make a PR, just don't write shitty code, keep it clean
If you want to make a suggestion, I'm chill, make it logical and submit
For bug submissions TRY to include a few parts:
- What is the issue
- How to reproduce it
- What is the desired outcome
- What is the proposed fix
This project is licensed under the GNU General Public License v3.0 (GPLv3). This means you are free to use, modify, and distribute this software, provided that all derivative works are also licensed under the GPLv3. This license ensures that the software remains open source and that all modifications are shared with the community. It prohibits the incorporation of this code into proprietary software. For more details, see the LICENSE file in this repository or visit https://www.gnu.org/licenses/gpl-3.0.en.html.
Please note that this software is provided "as is," and we assume no liability for any issues that may arise from its use. There is no magic bullet for cyber security. Encrypting your nsec and storing it in the Storage API is superior to almost all forms of nsec management but advanced targeted attacks could still aquire your keys. If you use sim cards, post on centeralized social media, and use apple/windows products, worrying about state level actors zero-daying your keys should be the least of your concerns...
0.9.2 Pre-Release - Almost working
0.9.1 - fix kind number so not only writting to kind 1
0.9.2 - Create keys, sign into client, change profile on client pic, test nip65 update
0.9.3 - fix nip-04 and nip-44 dm messaging
0.9.4 - add popup page, approve kind once, approve kind always, reject, add array to users.json
0.9.5 - UserProfile.tsx allow permission list (site, kind, revoke button)
0.9.6 - Import.html, pass import .json into storage API so App can access the file
0.9.7 - compile to firefox, upload to mozilla dev account
0.9.8 - compile to chrome, upload to chrome dev account
0.9.9 - compile to safari, upload to safari dev account
1.0.0 - full Release
1.0.1 - optmize/organize code, comment it to educate future readers