From 951ee383e9d4821d0c36993e5af92668af380600 Mon Sep 17 00:00:00 2001
From: Roman Khimov <roman@nspcc.ru>
Date: Thu, 9 Jan 2020 18:06:03 +0300
Subject: [PATCH] keys: improve NEP2 testing

---
 pkg/crypto/keys/nep2_test.go | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/pkg/crypto/keys/nep2_test.go b/pkg/crypto/keys/nep2_test.go
index 2a67b9b26..a12c21447 100644
--- a/pkg/crypto/keys/nep2_test.go
+++ b/pkg/crypto/keys/nep2_test.go
@@ -43,3 +43,39 @@ func TestNEP2Decrypt(t *testing.T) {
 		assert.Equal(t, testCase.Address, address)
 	}
 }
+
+func TestNEP2DecryptErrors(t *testing.T) {
+	p := "qwerty"
+
+	// Not a base58-encoded value
+	s := "qazwsx"
+	_, err := NEP2Decrypt(s, p)
+	assert.Error(t, err)
+
+	// Valid base58, but not a NEP-2 format.
+	s = "KxhEDBQyyEFymvfJD96q8stMbJMbZUb6D1PmXqBWZDU2WvbvVs9o"
+	_, err = NEP2Decrypt(s, p)
+	assert.Error(t, err)
+}
+
+func TestValidateNEP2Format(t *testing.T) {
+	// Wrong length.
+	s := []byte("gobbledygook")
+	assert.Error(t, validateNEP2Format(s))
+
+	// Wrong header 1.
+	s = []byte("gobbledygookgobbledygookgobbledygookgob")
+	assert.Error(t, validateNEP2Format(s))
+
+	// Wrong header 2.
+	s[0] = 0x01
+	assert.Error(t, validateNEP2Format(s))
+
+	// Wrong header 3.
+	s[1] = 0x42
+	assert.Error(t, validateNEP2Format(s))
+
+	// OK
+	s[2] = 0xe0
+	assert.NoError(t, validateNEP2Format(s))
+}