wallet

package
v0.75.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 22, 2024 License: AGPL-3.0 Imports: 11 Imported by: 7

Documentation

Index

Constants

View Source
const (
	// WalletCreatedEventType is raised when a wallet has been created.
	WalletCreatedEventType EventType = "WALLET_CREATED"

	// UnlockedWalletUpdatedEventType is raised when a wallet, that is already
	// unlocked, has been updated.
	UnlockedWalletUpdatedEventType = "UNLOCKED_WALLET_UPDATED"

	// LockedWalletUpdatedEventType is raised when a locked wallet has been
	// updated.
	LockedWalletUpdatedEventType = "LOCKED_WALLET_UPDATED"

	// WalletRemovedEventType is raised when a wallet has been removed.
	WalletRemovedEventType = "WALLET_REMOVED"

	// WalletRenamedEventType is raised when a wallet has been renamed.
	WalletRenamedEventType = "WALLET_RENAMED"

	// WalletHasBeenLockedEventType is raised when the wallet has been locked,
	// either by an external passphrase update, or a timeout.
	WalletHasBeenLockedEventType = "WALLET_HAS_BEEN_LOCKED"
)
View Source
const (
	// MaxEntropyByteSize is the entropy bytes size used for recovery phrase
	// generation.
	MaxEntropyByteSize = 256
	// MagicIndex is the registered HD wallet index for Vega's wallets.
	MagicIndex = 1789
	// OriginIndex is a constant index used to derive a node from the master
	// node. The resulting node will be used to generate the cryptographic keys.
	OriginIndex = slip10.FirstHardenedIndex + MagicIndex
)
View Source
const (
	// Version1 identifies HD wallet with a key derivation version 1.
	Version1 = uint32(1)
	// Version2 identifies HD wallet with a key derivation version 2.
	Version2 = uint32(2)
	// LatestVersion is the latest version of Vega's HD wallet. Created wallets
	// are always pointing to the latest version.
	LatestVersion = Version2
)
View Source
const KeyNameMeta = "name"

Variables

View Source
var (
	ErrAllKeysInWalletAreTainted          = errors.New("all the keys in this wallet are tainted")
	ErrInvalidRecoveryPhrase              = errors.New("the recovery phrase is not valid")
	ErrIsolatedWalletCantGenerateKeys     = errors.New("an isolated wallet can't generate keys")
	ErrIsolatedWalletDoesNotHaveMasterKey = errors.New("an isolated wallet doesn't have a master key")
	ErrPubKeyAlreadyTainted               = errors.New("the public key is already tainted")
	ErrPubKeyDoesNotExist                 = errors.New("the public key does not exist")
	ErrPubKeyIsTainted                    = errors.New("the public key is tainted")
	ErrPubKeyNotTainted                   = errors.New("the public key is not tainted")
	ErrWalletAlreadyExists                = errors.New("a wallet with the same name already exists")
	ErrWalletDoesNotExist                 = errors.New("the wallet does not exist")
	ErrWalletDoesNotHaveKeys              = errors.New("the wallet does not have keys")
	ErrWrongPassphrase                    = errors.New("wrong passphrase")
)
View Source
var ErrCannotSetAllowedKeysWithNoAccess = errors.New("can't set allowed keys with \"none\" access")
View Source
var PublicKeysPermissionLabel = "public_keys"
View Source
var SupportedKeyDerivationVersions = []uint32{Version1, Version2}

SupportedKeyDerivationVersions list of key derivation versions supported by Vega's HD wallet.

Functions

func AccessModeToString

func AccessModeToString(m AccessMode) string

func IsKeyDerivationVersionSupported added in v0.65.0

func IsKeyDerivationVersionSupported(v uint32) bool

func NewRecoveryPhrase

func NewRecoveryPhrase() (string, error)

NewRecoveryPhrase generates a recovery phrase with an entropy of 256 bits.

Types

type AccessMode

type AccessMode string
var (
	NoAccess   AccessMode = "none"
	ReadAccess AccessMode = "read"
)

type Algorithm

type Algorithm struct {
	Name    string `json:"name"`
	Version uint32 `json:"version"`
}

type Event added in v0.68.0

type Event struct {
	Type EventType `json:"type"`
	Data EventData `json:"data,omitempty"`
}

func NewLockedWalletUpdateEvent added in v0.68.0

func NewLockedWalletUpdateEvent(walletName string) Event

func NewUnlockedWalletUpdatedEvent added in v0.68.0

func NewUnlockedWalletUpdatedEvent(w Wallet) Event

func NewWalletCreatedEvent added in v0.68.0

func NewWalletCreatedEvent(walletName string) Event

func NewWalletHasBeenLockedEvent added in v0.68.0

func NewWalletHasBeenLockedEvent(name string) Event

func NewWalletRemovedEvent added in v0.68.0

func NewWalletRemovedEvent(walletName string) Event

func NewWalletRenamedEvent added in v0.68.0

func NewWalletRenamedEvent(previousWalletName, newWalletName string) Event

type EventData added in v0.68.0

type EventData interface {
	// contains filtered or unexported methods
}

type EventType added in v0.68.0

type EventType string

type HDKeyPair

type HDKeyPair struct {
	// contains filtered or unexported fields
}

func NewHDKeyPair

func NewHDKeyPair(
	index uint32,
	publicKey ed25519.PublicKey,
	privateKey ed25519.PrivateKey,
) (*HDKeyPair, error)

func (*HDKeyPair) AlgorithmName

func (k *HDKeyPair) AlgorithmName() string

func (*HDKeyPair) AlgorithmVersion

func (k *HDKeyPair) AlgorithmVersion() uint32

func (*HDKeyPair) DeepCopy

func (k *HDKeyPair) DeepCopy() *HDKeyPair

func (*HDKeyPair) Index

func (k *HDKeyPair) Index() uint32

func (*HDKeyPair) IsTainted

func (k *HDKeyPair) IsTainted() bool

func (*HDKeyPair) MarshalJSON

func (k *HDKeyPair) MarshalJSON() ([]byte, error)

func (*HDKeyPair) Metadata added in v0.55.0

func (k *HDKeyPair) Metadata() []Metadata

func (*HDKeyPair) Name added in v0.55.0

func (k *HDKeyPair) Name() string

func (*HDKeyPair) PrivateKey

func (k *HDKeyPair) PrivateKey() string

func (*HDKeyPair) PublicKey

func (k *HDKeyPair) PublicKey() string

func (*HDKeyPair) Sign

func (k *HDKeyPair) Sign(data []byte) (*Signature, error)

func (*HDKeyPair) SignAny

func (k *HDKeyPair) SignAny(data []byte) ([]byte, error)

func (*HDKeyPair) Taint

func (k *HDKeyPair) Taint() error

func (*HDKeyPair) ToPublicKey

func (k *HDKeyPair) ToPublicKey() HDPublicKey

ToPublicKey ensures the sensitive information doesn't leak outside.

func (*HDKeyPair) UnmarshalJSON

func (k *HDKeyPair) UnmarshalJSON(data []byte) error

func (*HDKeyPair) Untaint

func (k *HDKeyPair) Untaint() error

func (*HDKeyPair) UpdateMetadata added in v0.55.0

func (k *HDKeyPair) UpdateMetadata(meta []Metadata) []Metadata

func (*HDKeyPair) VerifyAny

func (k *HDKeyPair) VerifyAny(data, sig []byte) (bool, error)

type HDKeyRing

type HDKeyRing struct {
	// contains filtered or unexported fields
}

func LoadHDKeyRing

func LoadHDKeyRing(keyPairs []HDKeyPair) *HDKeyRing

func NewHDKeyRing

func NewHDKeyRing() *HDKeyRing

func (*HDKeyRing) FindPair

func (r *HDKeyRing) FindPair(pubKey string) (HDKeyPair, bool)

func (*HDKeyRing) ListKeyPairs

func (r *HDKeyRing) ListKeyPairs() []HDKeyPair

ListKeyPairs returns the list of key pairs sorted by key index.

func (*HDKeyRing) ListPublicKeys

func (r *HDKeyRing) ListPublicKeys() []HDPublicKey

ListPublicKeys returns the list of public keys sorted by key index.

func (*HDKeyRing) NextIndex

func (r *HDKeyRing) NextIndex() uint32

func (*HDKeyRing) Upsert

func (r *HDKeyRing) Upsert(keyPair HDKeyPair)

type HDMasterKeyPair

type HDMasterKeyPair struct {
	// contains filtered or unexported fields
}

func NewHDMasterKeyPair

func NewHDMasterKeyPair(
	publicKey ed25519.PublicKey,
	privateKey ed25519.PrivateKey,
) (*HDMasterKeyPair, error)

func (*HDMasterKeyPair) AlgorithmName

func (k *HDMasterKeyPair) AlgorithmName() string

func (*HDMasterKeyPair) AlgorithmVersion

func (k *HDMasterKeyPair) AlgorithmVersion() uint32

func (*HDMasterKeyPair) PrivateKey

func (k *HDMasterKeyPair) PrivateKey() string

func (*HDMasterKeyPair) PublicKey

func (k *HDMasterKeyPair) PublicKey() string

func (*HDMasterKeyPair) Sign

func (k *HDMasterKeyPair) Sign(data []byte) (*Signature, error)

func (*HDMasterKeyPair) SignAny

func (k *HDMasterKeyPair) SignAny(data []byte) ([]byte, error)

type HDPublicKey

type HDPublicKey struct {
	Idx          uint32     `json:"index"`
	PublicKey    string     `json:"key"`
	KeyName      string     `json:"name"`
	Algorithm    Algorithm  `json:"algorithm"`
	Tainted      bool       `json:"tainted"`
	MetadataList []Metadata `json:"metadata"`
}

func (*HDPublicKey) AlgorithmName

func (k *HDPublicKey) AlgorithmName() string

func (*HDPublicKey) AlgorithmVersion

func (k *HDPublicKey) AlgorithmVersion() uint32

func (*HDPublicKey) Hash

func (k *HDPublicKey) Hash() (string, error)

func (*HDPublicKey) Index

func (k *HDPublicKey) Index() uint32

func (*HDPublicKey) IsTainted

func (k *HDPublicKey) IsTainted() bool

func (*HDPublicKey) Key

func (k *HDPublicKey) Key() string

func (*HDPublicKey) MarshalJSON

func (k *HDPublicKey) MarshalJSON() ([]byte, error)

func (*HDPublicKey) Metadata added in v0.55.0

func (k *HDPublicKey) Metadata() []Metadata

func (*HDPublicKey) Name added in v0.55.0

func (k *HDPublicKey) Name() string

func (*HDPublicKey) UnmarshalJSON

func (k *HDPublicKey) UnmarshalJSON(data []byte) error

type HDWallet

type HDWallet struct {
	// contains filtered or unexported fields
}

func ImportHDWallet

func ImportHDWallet(name, recoveryPhrase string, keyDerivationVersion uint32) (*HDWallet, error)

ImportHDWallet creates a wallet based on the recovery phrase in input. This is useful import or retrieve a wallet.

func NewHDWallet

func NewHDWallet(name string) (*HDWallet, string, error)

NewHDWallet creates a wallet with auto-generated recovery phrase. This is useful to create a brand-new wallet, without having to take care of the recovery phrase generation. The generated recovery phrase is returned alongside the created wallet.

func (*HDWallet) AnnotateKey added in v0.55.0

func (w *HDWallet) AnnotateKey(pubKey string, meta []Metadata) ([]Metadata, error)

AnnotateKey replaces the key's metadata by the new ones. If the `name` metadata is missing it's added automatically with a default.

func (*HDWallet) Clone added in v0.67.0

func (w *HDWallet) Clone() Wallet

func (*HDWallet) DescribeKeyPair

func (w *HDWallet) DescribeKeyPair(pubKey string) (KeyPair, error)

DescribeKeyPair returns all the information associated with a public key.

func (*HDWallet) DescribePublicKey

func (w *HDWallet) DescribePublicKey(pubKey string) (PublicKey, error)

DescribePublicKey returns all the information associated to a public key, except the private key.

func (*HDWallet) GenerateKeyPair

func (w *HDWallet) GenerateKeyPair(meta []Metadata) (KeyPair, error)

GenerateKeyPair generates a new key pair from a node, that is derived from the wallet node.

func (*HDWallet) HasPublicKey added in v0.55.0

func (w *HDWallet) HasPublicKey(pubKey string) bool

func (*HDWallet) ID

func (w *HDWallet) ID() string

func (*HDWallet) IsIsolated

func (w *HDWallet) IsIsolated() bool

func (*HDWallet) IsolateWithKey

func (w *HDWallet) IsolateWithKey(pubKey string) (Wallet, error)

func (*HDWallet) KeyDerivationVersion added in v0.65.0

func (w *HDWallet) KeyDerivationVersion() uint32

func (*HDWallet) ListKeyPairs

func (w *HDWallet) ListKeyPairs() []KeyPair

ListKeyPairs lists the key pairs. Be careful, it contains the private key.

func (*HDWallet) ListPublicKeys

func (w *HDWallet) ListPublicKeys() []PublicKey

ListPublicKeys lists the public keys with their information. The private keys are not returned.

func (*HDWallet) MarshalJSON

func (w *HDWallet) MarshalJSON() ([]byte, error)

func (*HDWallet) MasterKey added in v0.55.0

func (w *HDWallet) MasterKey() (MasterKeyPair, error)

MasterKey returns all the information associated to a master key pair.

func (*HDWallet) Name

func (w *HDWallet) Name() string

func (*HDWallet) Permissions

func (w *HDWallet) Permissions(hostname string) Permissions

func (*HDWallet) PermittedHostnames

func (w *HDWallet) PermittedHostnames() []string

func (*HDWallet) PurgePermissions

func (w *HDWallet) PurgePermissions()

func (*HDWallet) RevokePermissions

func (w *HDWallet) RevokePermissions(hostname string)

func (*HDWallet) SetName

func (w *HDWallet) SetName(newName string)

func (*HDWallet) SignAny

func (w *HDWallet) SignAny(pubKey string, data []byte) ([]byte, error)

func (*HDWallet) SignTx

func (w *HDWallet) SignTx(pubKey string, data []byte) (*Signature, error)

func (*HDWallet) TaintKey

func (w *HDWallet) TaintKey(pubKey string) error

TaintKey marks a key as tainted.

func (*HDWallet) Type

func (w *HDWallet) Type() string

func (*HDWallet) UnmarshalJSON

func (w *HDWallet) UnmarshalJSON(data []byte) error

func (*HDWallet) UntaintKey

func (w *HDWallet) UntaintKey(pubKey string) error

UntaintKey remove the taint on a key.

func (*HDWallet) UpdatePermissions

func (w *HDWallet) UpdatePermissions(hostname string, perms Permissions) error

func (*HDWallet) VerifyAny

func (w *HDWallet) VerifyAny(pubKey string, data, sig []byte) (bool, error)

type Info

type Info struct {
	ID   string `json:"id,omitempty"`
	Type string `json:"type"`
}

type KeyPair

type KeyPair interface {
	PublicKey() string
	PrivateKey() string
	Name() string
	IsTainted() bool
	Metadata() []Metadata
	UpdateMetadata([]Metadata) []Metadata
	Index() uint32
	AlgorithmVersion() uint32
	AlgorithmName() string
	SignAny(data []byte) ([]byte, error)
	VerifyAny(data, sig []byte) (bool, error)
	Sign(data []byte) (*Signature, error)
}

nolint: interfacebloat

type LockedWalletUpdatedEventData added in v0.68.0

type LockedWalletUpdatedEventData struct {
	Name string `json:"name"`
}

type MasterKeyPair

type MasterKeyPair interface {
	PublicKey() string
	PrivateKey() string
	AlgorithmVersion() uint32
	AlgorithmName() string
	SignAny(data []byte) ([]byte, error)
	Sign(data []byte) (*Signature, error)
}

type Metadata added in v0.55.0

type Metadata struct {
	Key   string `json:"key"`
	Value string `json:"value"`
}

type Permissions

type Permissions struct {
	PublicKeys PublicKeysPermission `json:"publicKeys"`
}

Permissions describes the permissions set on a given hostname.

func DefaultPermissions

func DefaultPermissions() Permissions

func (Permissions) CanListKeys

func (p Permissions) CanListKeys() bool

func (Permissions) CanUseKey

func (p Permissions) CanUseKey(pubKey string) bool

func (Permissions) Summary

func (p Permissions) Summary() PermissionsSummary

type PermissionsSummary

type PermissionsSummary map[string]string

type PublicKey

type PublicKey interface {
	Key() string
	Name() string
	IsTainted() bool
	Metadata() []Metadata
	Index() uint32
	AlgorithmVersion() uint32
	AlgorithmName() string
	Hash() (string, error)
	MarshalJSON() ([]byte, error)
	UnmarshalJSON(data []byte) error
}

type PublicKeysPermission

type PublicKeysPermission struct {
	Access AccessMode `json:"access"`
	// AllowedKeys lists all the keys a third-party application has access to.
	// All keys are valid and usable (no tainted key).
	AllowedKeys []string `json:"allowedKeys"`
}

PublicKeysPermission defines what the third-party application can do with the public keys of the wallet.

Methods requiring read access:

  • list_keys

func NoPublicKeysPermission

func NoPublicKeysPermission() PublicKeysPermission

NoPublicKeysPermission returns a revoked access for public keys.

func (PublicKeysPermission) Enabled

func (p PublicKeysPermission) Enabled() bool

func (PublicKeysPermission) HasAllowedKeys added in v0.67.0

func (p PublicKeysPermission) HasAllowedKeys() bool

type Signature

type Signature struct {
	// Value is hex-encoded
	Value   string `json:"value"`
	Algo    string `json:"algo"`
	Version uint32 `json:"version"`
}

type UnlockedWalletUpdatedEventData added in v0.68.0

type UnlockedWalletUpdatedEventData struct {
	UpdatedWallet Wallet `json:"updateWallet"`
}

type UnsupportedWalletVersionError

type UnsupportedWalletVersionError struct {
	UnsupportedVersion uint32
}

func NewUnsupportedWalletVersionError

func NewUnsupportedWalletVersionError(v uint32) UnsupportedWalletVersionError

func (UnsupportedWalletVersionError) Error

type Wallet

type Wallet interface {
	KeyDerivationVersion() uint32
	Name() string
	SetName(newName string)
	ID() string
	Type() string
	HasPublicKey(pubKey string) bool
	DescribePublicKey(pubKey string) (PublicKey, error)
	DescribeKeyPair(pubKey string) (KeyPair, error)
	ListPublicKeys() []PublicKey
	ListKeyPairs() []KeyPair
	MasterKey() (MasterKeyPair, error)
	GenerateKeyPair(meta []Metadata) (KeyPair, error)
	TaintKey(pubKey string) error
	UntaintKey(pubKey string) error
	AnnotateKey(pubKey string, meta []Metadata) ([]Metadata, error)
	SignAny(pubKey string, data []byte) ([]byte, error)
	VerifyAny(pubKey string, data, sig []byte) (bool, error)
	SignTx(pubKey string, data []byte) (*Signature, error)
	IsIsolated() bool
	IsolateWithKey(pubKey string) (Wallet, error)
	Permissions(hostname string) Permissions
	PermittedHostnames() []string
	RevokePermissions(hostname string)
	PurgePermissions()
	UpdatePermissions(hostname string, perms Permissions) error
	Clone() Wallet
}

nolint: interfacebloat

type WalletCreatedEventData added in v0.68.0

type WalletCreatedEventData struct {
	Name string `json:"name"`
}

type WalletHasBeenLockedEventData added in v0.68.0

type WalletHasBeenLockedEventData struct {
	Name string `json:"name"`
}

type WalletRemovedEventData added in v0.68.0

type WalletRemovedEventData struct {
	Name string `json:"name"`
}

type WalletRenamedEventData added in v0.68.0

type WalletRenamedEventData struct {
	PreviousName string `json:"previousName"`
	NewName      string `json:"newName"`
}

Directories

Path Synopsis
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
store
v1

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL