diff options
Diffstat (limited to 'accounts/account_manager.go')
-rw-r--r-- | accounts/account_manager.go | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/accounts/account_manager.go b/accounts/account_manager.go index 3afadf6b2..bfb7556d6 100644 --- a/accounts/account_manager.go +++ b/accounts/account_manager.go @@ -147,9 +147,21 @@ func (am *Manager) Sign(addr common.Address, hash []byte) (signature []byte, err return crypto.Sign(hash, unlockedKey.PrivateKey) } +// SignWithPassphrase signs hash if the private key matching the given address can be +// decrypted with the given passphrase. +func (am *Manager) SignWithPassphrase(addr common.Address, passphrase string, hash []byte) (signature []byte, err error) { + _, key, err := am.getDecryptedKey(Account{Address: addr}, passphrase) + if err != nil { + return nil, err + } + + defer zeroKey(key.PrivateKey) + return crypto.Sign(hash, key.PrivateKey) +} + // Unlock unlocks the given account indefinitely. -func (am *Manager) Unlock(a Account, keyAuth string) error { - return am.TimedUnlock(a, keyAuth, 0) +func (am *Manager) Unlock(a Account, passphrase string) error { + return am.TimedUnlock(a, passphrase, 0) } // Lock removes the private key with the given address from memory. |