github.com/nspcc-dev/neo-go@v0.105.2-0.20240517133400-6be757af3eba/pkg/crypto/keys/nep2_test.go (about) 1 package keys 2 3 import ( 4 "testing" 5 6 "github.com/nspcc-dev/neo-go/internal/keytestcases" 7 "github.com/stretchr/testify/assert" 8 ) 9 10 func TestNEP2Encrypt(t *testing.T) { 11 for _, testCase := range keytestcases.Arr { 12 privKey, err := NewPrivateKeyFromHex(testCase.PrivateKey) 13 if testCase.Invalid { 14 assert.Error(t, err) 15 continue 16 } 17 18 assert.Nil(t, err) 19 20 encryptedWif, err := NEP2Encrypt(privKey, testCase.Passphrase, NEP2ScryptParams()) 21 assert.Nil(t, err) 22 23 assert.Equal(t, testCase.EncryptedWif, encryptedWif) 24 } 25 } 26 27 func TestNEP2Decrypt(t *testing.T) { 28 for _, testCase := range keytestcases.Arr { 29 privKey, err := NEP2Decrypt(testCase.EncryptedWif, testCase.Passphrase, NEP2ScryptParams()) 30 if testCase.Invalid { 31 assert.Error(t, err) 32 continue 33 } 34 35 assert.Nil(t, err) 36 assert.Equal(t, testCase.PrivateKey, privKey.String()) 37 38 wif := privKey.WIF() 39 assert.Equal(t, testCase.Wif, wif) 40 41 address := privKey.Address() 42 assert.Equal(t, testCase.Address, address) 43 } 44 } 45 46 func TestNEP2DecryptErrors(t *testing.T) { 47 p := "qwerty" 48 49 // Not a base58-encoded value 50 s := "qazwsx" 51 _, err := NEP2Decrypt(s, p, NEP2ScryptParams()) 52 assert.Error(t, err) 53 54 // Valid base58, but not a NEP-2 format. 55 s = "KxhEDBQyyEFymvfJD96q8stMbJMbZUb6D1PmXqBWZDU2WvbvVs9o" 56 _, err = NEP2Decrypt(s, p, NEP2ScryptParams()) 57 assert.Error(t, err) 58 } 59 60 func TestValidateNEP2Format(t *testing.T) { 61 // Wrong length. 62 s := []byte("gobbledygook") 63 assert.Error(t, validateNEP2Format(s)) 64 65 // Wrong header 1. 66 s = []byte("gobbledygookgobbledygookgobbledygookgob") 67 assert.Error(t, validateNEP2Format(s)) 68 69 // Wrong header 2. 70 s[0] = 0x01 71 assert.Error(t, validateNEP2Format(s)) 72 73 // Wrong header 3. 74 s[1] = 0x42 75 assert.Error(t, validateNEP2Format(s)) 76 77 // OK 78 s[2] = 0xe0 79 assert.NoError(t, validateNEP2Format(s)) 80 }