Documentation ¶
Overview ¶
package keystore实现对secp256k1私钥的加密存储。
根据Web3秘密存储规范,密钥存储为加密的JSON文件。 有关详细信息,请参阅https://github.com/ethereum/wiki/wiki/web3-secret-storage-definition。
Index ¶
- Constants
- Variables
- func EncryptKey(key *Key, auth string, scryptN, scryptP int) ([]byte, error)
- func StoreKey(dir, auth string, scryptN, scryptP int) (common.Address, error)
- type AmbiguousAddrError
- type Key
- type KeyStore
- func (ks *KeyStore) Accounts() []accounts.Account
- func (ks *KeyStore) Delete(a accounts.Account, passphrase string) error
- func (ks *KeyStore) Export(a accounts.Account, passphrase, newPassphrase string) (keyJSON []byte, err error)
- func (ks *KeyStore) Find(a accounts.Account) (accounts.Account, error)
- func (ks *KeyStore) HasAddress(addr common.Address) bool
- func (ks *KeyStore) Import(keyJSON []byte, passphrase, newPassphrase string) (accounts.Account, error)
- func (ks *KeyStore) ImportECDSA(priv *ecdsa.PrivateKey, passphrase string) (accounts.Account, error)
- func (ks *KeyStore) ImportPreSaleKey(keyJSON []byte, passphrase string) (accounts.Account, error)
- func (ks *KeyStore) Lock(addr common.Address) error
- func (ks *KeyStore) NewAccount(passphrase string) (accounts.Account, error)
- func (ks *KeyStore) SignHash(a accounts.Account, hash []byte) ([]byte, error)
- func (ks *KeyStore) SignHashWithPassphrase(a accounts.Account, passphrase string, hash []byte) (signature []byte, err error)
- func (ks *KeyStore) SignTx(a accounts.Account, tx *types.Transaction, chainID *big.Int) (*types.Transaction, error)
- func (ks *KeyStore) SignTxWithPassphrase(a accounts.Account, passphrase string, tx *types.Transaction, chainID *big.Int) (*types.Transaction, error)
- func (ks *KeyStore) Subscribe(sink chan<- accounts.WalletEvent) event.Subscription
- func (ks *KeyStore) TimedUnlock(a accounts.Account, passphrase string, timeout time.Duration) error
- func (ks *KeyStore) Unlock(a accounts.Account, passphrase string) error
- func (ks *KeyStore) Update(a accounts.Account, passphrase, newPassphrase string) error
- func (ks *KeyStore) Wallets() []accounts.Wallet
Constants ¶
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 )
const KeyStoreScheme = "keystore"
keystorescheme是协议方案的前缀帐户和钱包URL。
Variables ¶
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") )
var KeyStoreType = reflect.TypeOf(&KeyStore{})
keystore type是keystore后端的反射类型。
Functions ¶
func EncryptKey ¶
encryptkey使用指定的scrypt参数将密钥加密到JSON中 稍后可以解密的blob。
Types ¶
type AmbiguousAddrError ¶
尝试解锁时返回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 ¶
decryptkey从JSON blob中解密密钥,返回私钥本身。
func NewKeyForDirectICAP ¶
newkeywordirecticap生成一个地址小于155位的密钥,以便它可以 为了简化和更容易与其他libs兼容,我们在直接的icap规范中 重试,直到第一个字节为0。
func (*Key) MarshalJSON ¶
func (*Key) UnmarshalJSON ¶
type KeyStore ¶
type KeyStore struct {
// contains filtered or unexported fields
}
keystore管理磁盘上的密钥存储目录。
func NewKeyStore ¶
newkeystore为给定目录创建一个keystore。
func NewPlaintextKeyStore ¶
newplaintextkeystore为给定目录创建一个keystore。 已弃用:使用newkeystore。
func (*KeyStore) Export ¶
func (ks *KeyStore) Export(a accounts.Account, passphrase, newPassphrase string) (keyJSON []byte, err error)
以json密钥的形式导出,并用newpassphrase加密。
func (*KeyStore) HasAddress ¶
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 ¶
importpresalekey解密给定的以太坊预售钱包和商店 密钥目录中的密钥文件。密钥文件使用相同的密码短语加密。
func (*KeyStore) NewAccount ¶
newaccount生成一个新密钥并将其存储到密钥目录中, 用密码短语加密。
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 ¶
timedunlock使用密码短语解锁给定的帐户。帐户 在超时期间保持解锁状态。超时0将解锁帐户 直到程序退出。帐户必须与唯一的密钥文件匹配。
如果帐户地址在一段时间内已解锁,则TimedUnlock将扩展或 缩短活动解锁超时。如果地址以前是解锁的 无限期地超时不会改变。