diff options
Diffstat (limited to 'accounts/account_manager.go')
-rw-r--r-- | accounts/account_manager.go | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/accounts/account_manager.go b/accounts/account_manager.go index 2a9d9b0ae..2781be656 100644 --- a/accounts/account_manager.go +++ b/accounts/account_manager.go @@ -1,18 +1,18 @@ // Copyright 2015 The go-ethereum Authors -// This file is part of go-ethereum. +// This file is part of the go-ethereum library. // -// go-ethereum is free software: you can redistribute it and/or modify +// The go-ethereum library is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // -// go-ethereum is distributed in the hope that it will be useful, +// The go-ethereum library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License -// along with go-ethereum. If not, see <http://www.gnu.org/licenses/>. +// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>. // Package implements a private key management facility. // @@ -78,8 +78,8 @@ func (am *Manager) DeleteAccount(address common.Address, auth string) error { func (am *Manager) Sign(a Account, toSign []byte) (signature []byte, err error) { am.mutex.RLock() + defer am.mutex.RUnlock() unlockedKey, found := am.unlocked[a.Address] - am.mutex.RUnlock() if !found { return nil, ErrLocked } @@ -87,14 +87,17 @@ func (am *Manager) Sign(a Account, toSign []byte) (signature []byte, err error) return signature, err } -// unlock indefinitely +// Unlock unlocks the given account indefinitely. func (am *Manager) Unlock(addr common.Address, keyAuth string) error { return am.TimedUnlock(addr, keyAuth, 0) } -// Unlock unlocks the account with the given address. The account -// stays unlocked for the duration of timeout -// it timeout is 0 the account is unlocked for the entire session +// TimedUnlock unlocks the account with the given address. The account +// stays unlocked for the duration of timeout. A timeout of 0 unlocks the account +// until the program exits. +// +// If the accout is already unlocked, TimedUnlock extends or shortens +// the active unlock timeout. func (am *Manager) TimedUnlock(addr common.Address, keyAuth string, timeout time.Duration) error { key, err := am.keyStore.GetKey(addr, keyAuth) if err != nil { |