From ad7880edbe474eda88bd8b137d3ab19aee696eda Mon Sep 17 00:00:00 2001 From: Derrick Hammer Date: Sun, 3 Mar 2024 12:42:45 -0500 Subject: [PATCH] fix: MarshalRegistryEntry needs to pack the public key after the record type byte --- protocol/registry.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/protocol/registry.go b/protocol/registry.go index 2e03237..0f810ab 100644 --- a/protocol/registry.go +++ b/protocol/registry.go @@ -100,7 +100,7 @@ func (r *RegistryEntryImpl) Sign() SignedRegistryEntry { } func SignRegistryEntry(kp ed25519.KeyPairEd25519, data []byte, revision uint64) SignedRegistryEntry { - buffer := MarshalRegistryEntry(data, revision) + buffer := MarshalRegistryEntry(kp.PublicKey(), data, revision) privateKey := kp.ExtractBytes() signature := ed25519p.Sign(privateKey, buffer) @@ -108,21 +108,22 @@ func SignRegistryEntry(kp ed25519.KeyPairEd25519, data []byte, revision uint64) return NewSignedRegistryEntry(kp.PublicKey(), uint64(revision), data, signature) } func VerifyRegistryEntry(sre SignedRegistryEntry) bool { - buffer := MarshalRegistryEntry(sre.Data(), sre.Revision()) + buffer := MarshalRegistryEntry(sre.PK(), sre.Data(), sre.Revision()) publicKey := sre.PK()[1:] return ed25519p.Verify(publicKey, buffer, sre.Signature()) } func MarshalSignedRegistryEntry(sre SignedRegistryEntry) []byte { - buffer := MarshalRegistryEntry(sre.Data(), sre.Revision()) + buffer := MarshalRegistryEntry(sre.PK(), sre.Data(), sre.Revision()) buffer = append(buffer, sre.Signature()...) return buffer } -func MarshalRegistryEntry(data []byte, revision uint64) []byte { +func MarshalRegistryEntry(pk []byte, data []byte, revision uint64) []byte { var buffer []byte buffer = append(buffer, byte(types.RecordTypeRegistryEntry)) + buffer = append(buffer, pk...) revBytes := utils.EncodeEndian(revision, 8) buffer = append(buffer, revBytes...)