keystore

package
v0.0.0-...-92cc422 Latest Latest
Warning

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

Go to latest
Published: Jan 21, 2019 License: GPL-3.0 Imports: 35 Imported by: 0

Documentation

Overview

package keystore实现对secp256k1私钥的加密存储。

根据Web3秘密存储规范,密钥存储为加密的JSON文件。 有关详细信息,请参阅https://github.com/ethereum/wiki/wiki/web3-secret-storage-definition。

Index

Constants

View Source
const (

	//标准加密是加密算法的n个参数,使用256MB
	//在现代处理器上占用大约1秒的CPU时间。
	StandardScryptN = 1 << 18

	//StandardScryptP是加密算法的P参数,使用256MB
	//在现代处理器上占用大约1秒的CPU时间。
	StandardScryptP = 1

	//lightscryptn是加密算法的n个参数,使用4MB
	//在现代处理器上占用大约100毫秒的CPU时间。
	LightScryptN = 1 << 12

	//lightscryptp是加密算法的p参数,使用4MB
	//在现代处理器上占用大约100毫秒的CPU时间。
	LightScryptP = 6
)
View Source
const KeyStoreScheme = "keystore"

keystorescheme是协议方案的前缀帐户和钱包URL。

Variables

View Source
var (
	ErrLocked  = accounts.NewAuthNeededError("password or unlock")
	ErrNoMatch = errors.New("no key for given address or file")
	ErrDecrypt = errors.New("could not decrypt key with given passphrase")
)
View Source
var KeyStoreType = reflect.TypeOf(&KeyStore{})

keystore type是keystore后端的反射类型。

Functions

func EncryptKey

func EncryptKey(key *Key, auth string, scryptN, scryptP int) ([]byte, error)

encryptkey使用指定的scrypt参数将密钥加密到JSON中 稍后可以解密的blob。

func StoreKey

func StoreKey(dir, auth string, scryptN, scryptP int) (common.Address, error)

storekey生成一个密钥,用auth加密并存储在给定的目录中

Types

type AmbiguousAddrError

type AmbiguousAddrError struct {
	Addr    common.Address
	Matches []accounts.Account
}

尝试解锁时返回ambiguousaddrror 存在多个文件的地址。

func (*AmbiguousAddrError) Error

func (err *AmbiguousAddrError) Error() string

type Key

type Key struct {
	Id uuid.UUID //唯一ID的版本4“随机”不是从密钥数据派生的
	//为了简化查找,我们还存储了地址
	Address common.Address
	//我们只存储privkey,因为pubkey/地址可以从中派生
	//此结构中的privkey始终为纯文本
	PrivateKey *ecdsa.PrivateKey
}

func DecryptKey

func DecryptKey(keyjson []byte, auth string) (*Key, error)

decryptkey从JSON blob中解密密钥,返回私钥本身。

func NewKeyForDirectICAP

func NewKeyForDirectICAP(rand io.Reader) *Key

newkeywordirecticap生成一个地址小于155位的密钥,以便它可以 为了简化和更容易与其他libs兼容,我们在直接的icap规范中 重试,直到第一个字节为0。

func (*Key) MarshalJSON

func (k *Key) MarshalJSON() (j []byte, err error)

func (*Key) UnmarshalJSON

func (k *Key) UnmarshalJSON(j []byte) (err error)

type KeyStore

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

keystore管理磁盘上的密钥存储目录。

func NewKeyStore

func NewKeyStore(keydir string, scryptN, scryptP int) *KeyStore

newkeystore为给定目录创建一个keystore。

func NewPlaintextKeyStore

func NewPlaintextKeyStore(keydir string) *KeyStore

newplaintextkeystore为给定目录创建一个keystore。 已弃用:使用newkeystore。

func (*KeyStore) Accounts

func (ks *KeyStore) Accounts() []accounts.Account

帐户返回目录中存在的所有密钥文件。

func (*KeyStore) Delete

func (ks *KeyStore) Delete(a accounts.Account, passphrase string) error

如果密码短语正确,则delete将删除与帐户匹配的密钥。 如果帐户不包含文件名,则地址必须与唯一键匹配。

func (*KeyStore) Export

func (ks *KeyStore) Export(a accounts.Account, passphrase, newPassphrase string) (keyJSON []byte, err error)

以json密钥的形式导出,并用newpassphrase加密。

func (*KeyStore) Find

func (ks *KeyStore) Find(a accounts.Account) (accounts.Account, error)

find将给定帐户解析为密钥库中的唯一条目。

func (*KeyStore) HasAddress

func (ks *KeyStore) HasAddress(addr common.Address) bool

hasAddress报告具有给定地址的密钥是否存在。

func (*KeyStore) Import

func (ks *KeyStore) Import(keyJSON []byte, passphrase, newPassphrase string) (accounts.Account, error)

import将给定的加密JSON密钥存储到密钥目录中。

func (*KeyStore) ImportECDSA

func (ks *KeyStore) ImportECDSA(priv *ecdsa.PrivateKey, passphrase string) (accounts.Account, error)

importecdsa将给定的密钥存储到密钥目录中,并用密码短语对其进行加密。

func (*KeyStore) ImportPreSaleKey

func (ks *KeyStore) ImportPreSaleKey(keyJSON []byte, passphrase string) (accounts.Account, error)

importpresalekey解密给定的以太坊预售钱包和商店 密钥目录中的密钥文件。密钥文件使用相同的密码短语加密。

func (*KeyStore) Lock

func (ks *KeyStore) Lock(addr common.Address) error

lock从内存中删除具有给定地址的私钥。

func (*KeyStore) NewAccount

func (ks *KeyStore) NewAccount(passphrase string) (accounts.Account, error)

newaccount生成一个新密钥并将其存储到密钥目录中, 用密码短语加密。

func (*KeyStore) SignHash

func (ks *KeyStore) SignHash(a accounts.Account, hash []byte) ([]byte, error)

signhash为给定哈希计算ECDSA签名。产生的 签名采用[R S V]格式,其中V为0或1。

func (*KeyStore) SignHashWithPassphrase

func (ks *KeyStore) SignHashWithPassphrase(a accounts.Account, passphrase string, hash []byte) (signature []byte, err error)

如果私钥与给定地址匹配,则signhashwithpassphrase将对哈希进行签名 可以用给定的密码短语解密。生成的签名在 [R_S_V]格式,其中V为0或1。

func (*KeyStore) SignTx

func (ks *KeyStore) SignTx(a accounts.Account, tx *types.Transaction, chainID *big.Int) (*types.Transaction, error)

signtx用请求的帐户对给定的事务进行签名。

func (*KeyStore) SignTxWithPassphrase

func (ks *KeyStore) SignTxWithPassphrase(a accounts.Account, passphrase string, tx *types.Transaction, chainID *big.Int) (*types.Transaction, error)

如果私钥与 给定的地址可以用给定的密码短语解密。

func (*KeyStore) Subscribe

func (ks *KeyStore) Subscribe(sink chan<- accounts.WalletEvent) event.Subscription

subscribe实现accounts.backend,创建对的异步订阅 接收有关添加或删除密钥库钱包的通知。

func (*KeyStore) TimedUnlock

func (ks *KeyStore) TimedUnlock(a accounts.Account, passphrase string, timeout time.Duration) error

timedunlock使用密码短语解锁给定的帐户。帐户 在超时期间保持解锁状态。超时0将解锁帐户 直到程序退出。帐户必须与唯一的密钥文件匹配。

如果帐户地址在一段时间内已解锁,则TimedUnlock将扩展或 缩短活动解锁超时。如果地址以前是解锁的 无限期地超时不会改变。

func (*KeyStore) Unlock

func (ks *KeyStore) Unlock(a accounts.Account, passphrase string) error

解锁无限期地解锁给定的帐户。

func (*KeyStore) Update

func (ks *KeyStore) Update(a accounts.Account, passphrase, newPassphrase string) error

更新更改现有帐户的密码。

func (*KeyStore) Wallets

func (ks *KeyStore) Wallets() []accounts.Wallet

钱包实现accounts.backend,从 密钥存储目录。

Jump to

Keyboard shortcuts

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