diff --git a/util/crypto/derived_test.go b/util/crypto/derived_test.go new file mode 100644 index 00000000..24fd75df --- /dev/null +++ b/util/crypto/derived_test.go @@ -0,0 +1,22 @@ +package crypto + +import ( + "crypto/rand" + "github.com/stretchr/testify/require" + "testing" +) + +func TestDerivedKey(t *testing.T) { + seed := make([]byte, 32) + _, err := rand.Read(seed) + require.NoError(t, err) + key, err := DeriveSymmetricKey(seed, AnytypeAccountPath) + require.NoError(t, err) + _, err = rand.Read(seed) + require.NoError(t, err) + res, err := key.Encrypt(seed) + require.NoError(t, err) + dec, err := key.Decrypt(res) + require.NoError(t, err) + require.Equal(t, seed, dec) +} diff --git a/util/crypto/ed25519_test.go b/util/crypto/ed25519_test.go index 5b96ecb6..92565723 100644 --- a/util/crypto/ed25519_test.go +++ b/util/crypto/ed25519_test.go @@ -9,12 +9,25 @@ import ( func Test_EncryptDecrypt(t *testing.T) { privKey, pubKey, err := GenerateEd25519Key(rand.Reader) require.NoError(t, err) - msg := make([]byte, 32768) + msg := make([]byte, 32000) _, err = rand.Read(msg) require.NoError(t, err) enc, err := pubKey.Encrypt(msg) require.NoError(t, err) dec, err := privKey.Decrypt(enc) require.NoError(t, err) + require.NotEqual(t, enc, dec) require.Equal(t, dec, msg) } + +func Test_SignVerify(t *testing.T) { + privKey, pubKey, err := GenerateEd25519Key(rand.Reader) + require.NoError(t, err) + msg := make([]byte, 32000) + _, err = rand.Read(msg) + sign, err := privKey.Sign(msg) + require.NoError(t, err) + res, err := pubKey.Verify(msg, sign) + require.NoError(t, err) + require.True(t, res) +} diff --git a/util/crypto/mnemonic_test.go b/util/crypto/mnemonic_test.go new file mode 100644 index 00000000..176dabbf --- /dev/null +++ b/util/crypto/mnemonic_test.go @@ -0,0 +1,25 @@ +package crypto + +import ( + "crypto/rand" + "github.com/stretchr/testify/require" + "strings" + "testing" +) + +func TestMnemonic(t *testing.T) { + phrase, err := NewMnemonicGenerator().WithWordCount(12) + require.NoError(t, err) + parts := strings.Split(string(phrase), " ") + require.Equal(t, 12, len(parts)) + key, err := phrase.DeriveEd25519Key(0) + require.NoError(t, err) + bytes := make([]byte, 64) + _, err = rand.Read(bytes) + require.NoError(t, err) + sign, err := key.Sign(bytes) + require.NoError(t, err) + res, err := key.GetPublic().Verify(bytes, sign) + require.NoError(t, err) + require.True(t, res) +} diff --git a/util/crypto/peer.go b/util/crypto/peer.go index a7a7ac3d..cde5a940 100644 --- a/util/crypto/peer.go +++ b/util/crypto/peer.go @@ -10,11 +10,9 @@ func IdFromSigningPubKey(pubKey PubKey) (peer.ID, error) { if err != nil { return "", err } - libp2pKey, err := crypto.UnmarshalEd25519PublicKey(rawSigning) if err != nil { return "", err } - return peer.IDFromPublicKey(libp2pKey) }