mirror of
https://github.com/nspcc-dev/neo-go.git
synced 2024-11-26 09:42:22 +00:00
wallet: make DecryptAccount a method of Account
Otherwise it almost duplicates keys.NEP2Decrypt().
This commit is contained in:
parent
951ee383e9
commit
9bb68d7025
2 changed files with 20 additions and 9 deletions
|
@ -1,6 +1,8 @@
|
|||
package wallet
|
||||
|
||||
import (
|
||||
"errors"
|
||||
|
||||
"github.com/CityOfZion/neo-go/pkg/crypto/keys"
|
||||
"github.com/CityOfZion/neo-go/pkg/util"
|
||||
)
|
||||
|
@ -60,14 +62,16 @@ func NewAccount() (*Account, error) {
|
|||
return newAccountFromPrivateKey(priv), nil
|
||||
}
|
||||
|
||||
// DecryptAccount decrypts the encryptedWIF with the given passphrase and
|
||||
// return the decrypted Account.
|
||||
func DecryptAccount(encryptedWIF, passphrase string) (*Account, error) {
|
||||
key, err := keys.NEP2Decrypt(encryptedWIF, passphrase)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
// Decrypt decrypts the EncryptedWIF with the given passphrase returning error
|
||||
// if anything goes wrong.
|
||||
func (a *Account) Decrypt(passphrase string) error {
|
||||
var err error
|
||||
|
||||
if a.EncryptedWIF == "" {
|
||||
return errors.New("no encrypted wif in the account")
|
||||
}
|
||||
return newAccountFromPrivateKey(key), nil
|
||||
a.privateKey, err = keys.NEP2Decrypt(a.EncryptedWIF, passphrase)
|
||||
return err
|
||||
}
|
||||
|
||||
// Encrypt encrypts the wallet's PrivateKey with the given passphrase
|
||||
|
|
|
@ -6,6 +6,7 @@ import (
|
|||
|
||||
"github.com/CityOfZion/neo-go/pkg/internal/keytestcases"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestNewAccount(t *testing.T) {
|
||||
|
@ -23,15 +24,21 @@ func TestNewAccount(t *testing.T) {
|
|||
|
||||
func TestDecryptAccount(t *testing.T) {
|
||||
for _, testCase := range keytestcases.Arr {
|
||||
acc, err := DecryptAccount(testCase.EncryptedWif, testCase.Passphrase)
|
||||
acc := &Account{EncryptedWIF: testCase.EncryptedWif}
|
||||
assert.Nil(t, acc.PrivateKey())
|
||||
err := acc.Decrypt(testCase.Passphrase)
|
||||
if testCase.Invalid {
|
||||
assert.Error(t, err)
|
||||
continue
|
||||
}
|
||||
|
||||
assert.NoError(t, err)
|
||||
compareFields(t, testCase, acc)
|
||||
assert.NotNil(t, acc.PrivateKey())
|
||||
assert.Equal(t, testCase.PrivateKey, acc.privateKey.String())
|
||||
}
|
||||
// No encrypted key.
|
||||
acc := &Account{}
|
||||
require.Error(t, acc.Decrypt("qwerty"))
|
||||
}
|
||||
|
||||
func TestNewFromWif(t *testing.T) {
|
||||
|
|
Loading…
Reference in a new issue