wallet

package
v0.9.2 Latest Latest
Warning

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

Go to latest
Published: Oct 27, 2021 License: MIT Imports: 9 Imported by: 1

Documentation

Index

Constants

View Source
const (
	// MaxEntropyByteSize is the entropy bytes size used for mnemonic
	// 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 = uint32(1)
	// Version2 identifies HD wallet v2.
	Version2 = uint32(2)
	// LatestVersion is the latest version of Vega's HD wallet. Created wallets
	// are always pointing to the latest version.
	LatestVersion = Version2
)

Variables

View Source
var (
	ErrIsolatedWalletCantGenerateKeyPairs = errors.New("isolated wallet can't generate key pairs")
	ErrInvalidMnemonic                    = errors.New("mnemonic is not valid")
	ErrPubKeyAlreadyTainted               = errors.New("public key is already tainted")
	ErrPubKeyIsTainted                    = errors.New("public key is tainted")
	ErrPubKeyNotTainted                   = errors.New("public key is not tainted")
	ErrPubKeyDoesNotExist                 = errors.New("public key does not exist")
	ErrWalletAlreadyExists                = errors.New("a wallet with the same name already exists")
	ErrWalletNotLoggedIn                  = errors.New("wallet is not logged in")
)
View Source
var SupportedVersions = []uint32{Version1, Version2}

SupportedVersions list versions supported by Vega's HD wallet.

Functions

func IsVersionSupported added in v0.9.2

func IsVersionSupported(v uint32) bool

func NewMnemonic

func NewMnemonic() (string, error)

NewMnemonic generates a mnemonic with an entropy of 256 bits.

Types

type Algorithm

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

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) Meta

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

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) 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 HDPublicKey

type HDPublicKey struct {
	Idx       uint32    `json:"index"`
	PublicKey string    `json:"pub"`
	Algorithm Algorithm `json:"algorithm"`
	Tainted   bool      `json:"tainted"`
	MetaList  []Meta    `json:"meta"`
}

func (*HDPublicKey) AlgorithmName

func (k *HDPublicKey) AlgorithmName() string

func (*HDPublicKey) AlgorithmVersion

func (k *HDPublicKey) AlgorithmVersion() uint32

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) Meta

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

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, mnemonic string, version uint32) (*HDWallet, error)

ImportHDWallet creates a wallet based on the mnemonic 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 mnemonic. This is useful to create a brand-new wallet, without having to take care of the mnemonic generation. The generated mnemonic is returned alongside the created wallet.

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 []Meta) (KeyPair, error)

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

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) 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) Name

func (w *HDWallet) Name() 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) UpdateMeta

func (w *HDWallet) UpdateMeta(pubKey string, meta []Meta) error

UpdateMeta replaces the key's metadata by the new ones.

func (*HDWallet) VerifyAny

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

func (*HDWallet) Version

func (w *HDWallet) Version() uint32

type Info

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

type KeyPair

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

type Meta

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

type PublicKey

type PublicKey interface {
	Key() string
	IsTainted() bool
	Meta() []Meta
	AlgorithmVersion() uint32
	AlgorithmName() string

	MarshalJSON() ([]byte, error)
	UnmarshalJSON(data []byte) error
}

type Signature

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

type UnsupportedWalletVersionError added in v0.9.2

type UnsupportedWalletVersionError struct {
	UnsupportedVersion uint32
}

func NewUnsupportedWalletVersionError added in v0.9.2

func NewUnsupportedWalletVersionError(v uint32) UnsupportedWalletVersionError

func (UnsupportedWalletVersionError) Error added in v0.9.2

type Wallet

type Wallet interface {
	Version() uint32
	Name() string
	SetName(newName string)
	ID() string
	Type() string
	DescribePublicKey(pubKey string) (PublicKey, error)
	ListPublicKeys() []PublicKey
	ListKeyPairs() []KeyPair
	GenerateKeyPair(meta []Meta) (KeyPair, error)
	TaintKey(pubKey string) error
	UntaintKey(pubKey string) error
	UpdateMeta(pubKey string, meta []Meta) error
	SignAny(pubKey string, data []byte) ([]byte, error)
	VerifyAny(pubKey string, data, sig []byte) (bool, error)
	SignTx(pubKey string, data []byte) (*Signature, error)
	IsolateWithKey(pubKey string) (Wallet, error)
}

Directories

Path Synopsis
store
v1

Jump to

Keyboard shortcuts

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