mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-20 10:52:25 +00:00
crypto/ecies: improve KDF test
This commit is contained in:
parent
b921ff6f07
commit
870f40f7ec
1 changed files with 24 additions and 7 deletions
|
|
@ -42,14 +42,23 @@ import (
|
|||
"github.com/ethereum/go-ethereum/crypto"
|
||||
)
|
||||
|
||||
// Ensure the KDF generates appropriately sized keys.
|
||||
func TestKDF(t *testing.T) {
|
||||
msg := []byte("Hello, world")
|
||||
h := sha256.New()
|
||||
tests := []struct {
|
||||
length int
|
||||
output []byte
|
||||
}{
|
||||
{6, decode("858b192fa2ed")},
|
||||
{32, decode("858b192fa2ed4395e2bf88dd8d5770d67dc284ee539f12da8bceaa45d06ebae0")},
|
||||
{48, decode("858b192fa2ed4395e2bf88dd8d5770d67dc284ee539f12da8bceaa45d06ebae0700f1ab918a5f0413b8140f9940d6955")},
|
||||
{64, decode("858b192fa2ed4395e2bf88dd8d5770d67dc284ee539f12da8bceaa45d06ebae0700f1ab918a5f0413b8140f9940d6955f3467fd6672cce1024c5b1effccc0f61")},
|
||||
}
|
||||
|
||||
k := concatKDF(h, msg, nil, 64)
|
||||
if len(k) != 64 {
|
||||
t.Fatalf("KDF: generated key is the wrong size (%d instead of 64\n", len(k))
|
||||
for _, test := range tests {
|
||||
h := sha256.New()
|
||||
k := concatKDF(h, []byte("input"), nil, test.length)
|
||||
if !bytes.Equal(k, test.output) {
|
||||
t.Fatalf("KDF: generated key %x does not match expected output %x", k, test.output)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -398,7 +407,7 @@ func TestSharedKeyStatic(t *testing.T) {
|
|||
t.Fatal(ErrBadSharedKeys)
|
||||
}
|
||||
|
||||
sk, _ := hex.DecodeString("167ccc13ac5e8a26b131c3446030c60fbfac6aa8e31149d0869f93626a4cdf62")
|
||||
sk := decode("167ccc13ac5e8a26b131c3446030c60fbfac6aa8e31149d0869f93626a4cdf62")
|
||||
if !bytes.Equal(sk1, sk) {
|
||||
t.Fatalf("shared secret mismatch: want: %x have: %x", sk, sk1)
|
||||
}
|
||||
|
|
@ -411,3 +420,11 @@ func hexKey(prv string) *PrivateKey {
|
|||
}
|
||||
return ImportECDSA(key)
|
||||
}
|
||||
|
||||
func decode(s string) []byte {
|
||||
bytes, err := hex.DecodeString(s)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return bytes
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue