// Copyright (c) 2015-2016 The btcsuite developers
// Copyright (c) 2015-2017 The Decred developers
// Use of this source code is governed by an ISC
// license that can be found in the LICENSE file.

package secp256k1

import (
	"testing"

	"next.orly.dev/pkg/utils"
)

func TestGenerateSharedSecret(t *testing.T) {
	secKey1, err := GenerateSecretKey()
	if err != nil {
		t.Errorf("secret key generation error: %s", err)
		return
	}
	secKey2, err := GenerateSecretKey()
	if err != nil {
		t.Errorf("secret key generation error: %s", err)
		return
	}
	pubKey1 := secKey1.PubKey()
	pubKey2 := secKey2.PubKey()
	secret1 := GenerateSharedSecret(secKey1, pubKey2)
	secret2 := GenerateSharedSecret(secKey2, pubKey1)
	if !utils.FastEqual(secret1, secret2) {
		t.Errorf(
			"ECDH failed, secrets mismatch - first: %x, second: %x",
			secret1, secret2,
		)
	}
}
