Home

Awesome

Keystr: Nostr Keystore

An application for managing Nostr keys. Written in Rust, with simple UI (Iced).

Features

Screenshot

<img src="media/screenshot-01-deleg.png" align="center" title="screenshot delegation" border="1">

Roadmap

Building and Running

User Guide

Short description of available functionalities.

Key Management

Keys Overview

A Nostr identity should be set in the app, that is, a pair of keys: a secret key and corresponding public key. It is possible to provide only pubkey, in this case signing will not work.

It is possible that no key is set (e.g. after first startup or after clearing the keys).

If an password-encrypted key is loaded from storage, but password is not provided, singing will not work.

Importing Keys

Saving/Loading Keys

Secret key can be persisted to disk, in encrypted form. Encryption can optionally use a password.

Files are stored in local data directory, under ~/.local/share/keystr in Unix.

When an encrypted password is loaded, it becomes usable only once it is unlocked, using the password used during encryption. (Note: Unlock can happen later after load.)

Security Setting

There is a general security setting controlling the security of secret key storage, with following options:

NIP-26 Delegations

It is possible to create a NIP-26 Delegation, to empower a delegatee identity to be able to post events in the name of the loaded identity.

Typical flow, assuming the a key pair is loaded:

NIP-46 Nostr Connect a.k.a Signer

Keystr can act as a Signer, and sign event for a client.

NIP-46 + NIP-26 Signer and Delegation combined

Keystr as a Signer can sign a delegation, simplifying the communication to get the delegation tag to the app.

Running Tests

Contributing

Create an issue, PR, or discussion.

License: MIT

Contact

Nostr: optout@nostrplebs.com nostr:npub1kxgpwh80gp79j0chc925srk6rghw0akggduwau8fwdflslh9jvqqd3lecx

References