Alias string `json:"alias"`
Password string `json:"password"`
}) Response {
- xpub, err := bcr.hsm.XCreate(in.Alias, in.Password)
+ xpub, err := bcr.wallet.Hsm.XCreate(in.Alias, in.Password)
if err != nil {
return NewErrorResponse(err)
}
}
func (bcr *BlockchainReactor) pseudohsmListKeys(ctx context.Context) Response {
- return NewSuccessResponse(bcr.hsm.ListKeys())
+ return NewSuccessResponse(bcr.wallet.Hsm.ListKeys())
}
func (bcr *BlockchainReactor) pseudohsmDeleteKey(ctx context.Context, x struct {
Password string `json:"password"`
XPub chainkd.XPub `json:"xpub"`
}) Response {
- if err := bcr.hsm.XDelete(x.XPub, x.Password); err != nil {
+ if err := bcr.wallet.Hsm.XDelete(x.XPub, x.Password); err != nil {
return NewErrorResponse(err)
}
return NewSuccessResponse(nil)
}
func (bcr *BlockchainReactor) pseudohsmSignTemplate(ctx context.Context, xpub chainkd.XPub, path [][]byte, data [32]byte, password string) ([]byte, error) {
- return bcr.hsm.XSign(xpub, path, data[:], password)
+ return bcr.wallet.Hsm.XSign(xpub, path, data[:], password)
}
func (bcr *BlockchainReactor) pseudohsmResetPassword(ctx context.Context, x struct {
NewPassword string
XPub chainkd.XPub `json:"xpubs"`
}) error {
- return bcr.hsm.ResetPassword(x.XPub, x.OldPassword, x.NewPassword)
+ return bcr.wallet.Hsm.ResetPassword(x.XPub, x.OldPassword, x.NewPassword)
}
cmn "github.com/tendermint/tmlibs/common"
"github.com/bytom/blockchain/accesstoken"
- "github.com/bytom/blockchain/pseudohsm"
"github.com/bytom/blockchain/txfeed"
"github.com/bytom/blockchain/wallet"
"github.com/bytom/mining/cpuminer"
txFeedTracker *txfeed.Tracker
blockKeeper *blockKeeper
txPool *protocol.TxPool
- hsm *pseudohsm.HSM
mining *cpuminer.CPUMiner
miningPool *miningpool.MiningPool
mux *http.ServeMux
}
// NewBlockchainReactor returns the reactor of whole blockchain.
-func NewBlockchainReactor(chain *protocol.Chain, txPool *protocol.TxPool, sw *p2p.Switch, hsm *pseudohsm.HSM, wallet *wallet.Wallet, txfeeds *txfeed.Tracker, accessTokens *accesstoken.CredentialStore, miningEnable bool) *BlockchainReactor {
+func NewBlockchainReactor(chain *protocol.Chain, txPool *protocol.TxPool, sw *p2p.Switch,wallet *wallet.Wallet, txfeeds *txfeed.Tracker, accessTokens *accesstoken.CredentialStore, miningEnable bool) *BlockchainReactor {
newBlockCh := make(chan *bc.Hash, maxNewBlockChSize)
bcr := &BlockchainReactor{
chain: chain,
miningPool: miningpool.NewMiningPool(chain, wallet.AccountMgr, txPool, newBlockCh),
mux: http.NewServeMux(),
sw: sw,
- hsm: hsm,
txFeedTracker: txfeeds,
accessTokens: accessTokens,
miningEnable: miningEnable,
Password string `json:"password"`
XPub chainkd.XPub `json:"xpub"`
}) Response {
- key, err := bcr.wallet.ExportAccountPrivKey(bcr.hsm, in.XPub, in.Password)
+ key, err := bcr.wallet.ExportAccountPrivKey(in.XPub, in.Password)
if err != nil {
return NewErrorResponse(err)
}
var xprv [64]byte
copy(xprv[:], rawData[:64])
- xpub, err := bcr.wallet.ImportAccountPrivKey(bcr.hsm, xprv, in.KeyAlias, in.Password, in.Index, in.AccountAlias)
+ xpub, err := bcr.wallet.ImportAccountPrivKey(xprv, in.KeyAlias, in.Password, in.Index, in.AccountAlias)
if err != nil {
return NewErrorResponse(err)
}
status StatusInfo
AccountMgr *account.Manager
AssetReg *asset.Registry
+ Hsm *pseudohsm.HSM
chain *protocol.Chain
rescanProgress chan struct{}
ImportPrivKey bool
}
//NewWallet return a new wallet instance
-func NewWallet(walletDB db.DB, account *account.Manager, asset *asset.Registry,
+func NewWallet(walletDB db.DB, account *account.Manager, asset *asset.Registry, hsm *pseudohsm.HSM,
chain *protocol.Chain) (*Wallet, error) {
w := &Wallet{
DB: walletDB,
AccountMgr: account,
AssetReg: asset,
chain: chain,
+ Hsm: hsm,
rescanProgress: make(chan struct{}, 1),
keysInfo: make([]KeyInfo, 0),
}
// ExportAccountPrivKey exports the account private key as a WIF for encoding as a string
// in the Wallet Import Formt.
-func (w *Wallet) ExportAccountPrivKey(hsm *pseudohsm.HSM, xpub chainkd.XPub, auth string) (*string, error) {
- xprv, err := hsm.LoadChainKDKey(xpub, auth)
+func (w *Wallet) ExportAccountPrivKey(xpub chainkd.XPub, auth string) (*string, error) {
+ xprv, err := w.Hsm.LoadChainKDKey(xpub, auth)
if err != nil {
return nil, err
}
}
// ImportAccountPrivKey imports the account key in the Wallet Import Formt.
-func (w *Wallet) ImportAccountPrivKey(hsm *pseudohsm.HSM, xprv chainkd.XPrv, keyAlias, auth string, index uint64, accountAlias string) (*pseudohsm.XPub, error) {
- if hsm.HasAlias(keyAlias) {
+func (w *Wallet) ImportAccountPrivKey(xprv chainkd.XPrv, keyAlias, auth string, index uint64, accountAlias string) (*pseudohsm.XPub, error) {
+ if w.Hsm.HasAlias(keyAlias) {
return nil, pseudohsm.ErrDuplicateKeyAlias
}
- if hsm.HasKey(xprv) {
+ if w.Hsm.HasKey(xprv) {
return nil, pseudohsm.ErrDuplicateKey
}
return nil, account.ErrDuplicateAlias
}
- xpub, _, err := hsm.ImportXPrvKey(auth, keyAlias, xprv)
+ xpub, _, err := w.Hsm.ImportXPrvKey(auth, keyAlias, xprv)
if err != nil {
return nil, err
}
t.Fatal(err)
}
- w, err := NewWallet(testDB, acntManager, reg, chain)
+ w, err := NewWallet(testDB, acntManager, reg, hsm, chain)
if err != nil {
t.Fatal(err)
}
t.Fatal(err)
}
- priv, err := w.ExportAccountPrivKey(hsm, xpub.XPub, pwd)
+ priv, err := w.ExportAccountPrivKey(xpub.XPub, pwd)
wantPriv, err := hsm.LoadChainKDKey(xpub.XPub, pwd)
if err != nil {
var xprv [64]byte
copy(xprv[:], rawPriv[:64])
- _, err = w.ImportAccountPrivKey(hsm, xprv, xpub.Alias, pwd, 0, acnt1.Alias)
+ _, err = w.ImportAccountPrivKey(xprv, xpub.Alias, pwd, 0, acnt1.Alias)
if err != pseudohsm.ErrDuplicateKeyAlias {
t.Fatal(err)
}
hsm.XDelete(xpub.XPub, pwd)
- _, err = w.ImportAccountPrivKey(hsm, xprv, xpub.Alias, pwd, 0, acnt1.Alias)
+ _, err = w.ImportAccountPrivKey(xprv, xpub.Alias, pwd, 0, acnt1.Alias)
if err != account.ErrDuplicateAlias {
t.Fatal(err)
}
w.AccountMgr.DeleteAccount(accountInfo)
- acnt2, err := w.ImportAccountPrivKey(hsm, xprv, xpub.Alias, pwd, 0, acnt1.Alias)
+ acnt2, err := w.ImportAccountPrivKey(xprv, xpub.Alias, pwd, 0, acnt1.Alias)
if err != nil {
t.Fatal(err)
}
walletDB := dbm.NewDB("wallet", config.DBBackend, config.DBDir())
accounts = account.NewManager(walletDB, chain)
assets = asset.NewRegistry(walletDB, chain)
- wallet, err = w.NewWallet(walletDB, accounts, assets, chain)
+ wallet, err = w.NewWallet(walletDB, accounts, assets, hsm, chain)
if err != nil {
log.WithField("error", err).Error("init NewWallet")
}
go accounts.ExpireReservations(ctx, expireReservationsPeriod)
}
- bcReactor := bc.NewBlockchainReactor(chain, txPool,sw, hsm, wallet, txFeed, accessTokens, config.Mining)
+ bcReactor := bc.NewBlockchainReactor(chain, txPool,sw, wallet, txFeed, accessTokens, config.Mining)
sw.AddReactor("BLOCKCHAIN", bcReactor)