You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: ecdh_test.go
    path of file: ./repos/xxim-server/common/utils
    
    the code of the file until where you have to start completion: package utils

import (
	"bytes"
	"crypto"
	"crypto/elliptic"
	"crypto/rand"
	"fmt"
	"testing"
)

func Test_1(t *testing.T) {
	e := NewECDH(elliptic.P256())
	testECDH(e, t)
}

func testECDH(e ECDH, t testing.TB) {
	var privKey1, privKey2 crypto.PrivateKey
	var pubKey1, pubKey2 crypto.PublicKey
	var pubKey1Buf, pubKey2Buf []byte
	var err error
	var ok bool
	var sec
    
func TestGetECDHSecret(t *testing.T) {
	publicKey := "04421006ef7fdfa44baa1df88bdff6be915f3e20938041604deec9e3f8ba532cf1248dfb90f874a905464a1e06e7154bb0850586d2c3e996e5260d97efc805d34a"
	// 等待用户输入 publicKey
	fmt.Println("请输入公钥:")
	fmt.Scanln(&publicKey)
	e := NewECDH(elliptic.P256())
	privKey, pubKey, err := e.GenerateKey(rand.Reader)
	if err != nil {
		return
	}
	fmt.Println(e.HexEncodePublicKeyToString(pubKey))

	privateKey := e.HexEncodePrivateKeyToString(privKey)
	fmt.Println(privateKey)

	secret, err := GetECDHSecret(privateKey, publicKey)
	if err != nil {
		return
	}
	fmt.Println(secret)

	//keyByte, err := hex.DecodeString(secret)
	//encryptString := Aes.Encrypt("1", "hello world", keyByte)
	//if err != nil {
	//	return
	//}
	//fmt.Println(string(encryptString))
}