keystore *

Package keystore implements encrypted storage of secp256k1 private keys.

// KeyStore manages a key storage directory on disk.
type KeyStore struct {
    storage  keyStore                             // Storage backend, might be cleartext or encrypted
    cache    *accountCache                        // In-memory account cache over the filesystem storage
    changes  chan struct{}                        // Channel receiving change notifications from the cache
    unlocked map[address.AccountAddress]*unlocked // Currently unlocked account (decrypted private keys)

    wallets     []accounts.Wallet       // Wallet wrappers around the individual key files
    updateFeed  event.Feed              // Event feed to notify wallet additions/removals
    updateScope event.SubscriptionScope // Subscription scope tracking current live listeners
    updating    bool                    // Whether the event notification loop is running

    mu sync.RWMutex
}

Key

type Key struct {
    Id uuid.UUID // Version 4 "random" for unique id not derived from key data
    // to simplify lookups we also store the address
    Address address.AccountAddress

    Tk address.AccountAddress
    // we only store privkey as pubkey/address can be derived from it
    // privkey in this struct is always in plaintext
    PrivateKey *ecdsa.PrivateKey
}

Last updated

Was this helpful?