diff --git a/chat/sign/sign.go b/chat/sign/sign.go index 220ba36..1074698 100644 --- a/chat/sign/sign.go +++ b/chat/sign/sign.go @@ -52,6 +52,16 @@ func (m *MessageHeader) ReadFrom(r io.Reader) (n int64, err error) { return n + n3, err } +func (m *MessageHeader) Hash(bodyHash []byte) []byte { + hash := sha256.New() + if m.PrevSignature != nil { + hash.Write(m.PrevSignature) + } + hash.Write(m.Sender[:]) + hash.Write(bodyHash) + return hash.Sum(nil) +} + type MessageBody struct { PlainMsg string DecoratedMsg json.RawMessage @@ -182,6 +192,10 @@ func (msg *PlayerMessage) WriteTo(w io.Writer) (n int64, err error) { }.WriteTo(w) } +func (msg *PlayerMessage) Hash() []byte { + return msg.MessageHeader.Hash(msg.MessageBody.Hash()) +} + func genSalt() (salt int64) { err := binary.Read(rand.Reader, binary.BigEndian, &salt) if err != nil { diff --git a/data/packetid/packetid.go b/data/packetid/packetid.go index b5db1ae..f799818 100644 --- a/data/packetid/packetid.go +++ b/data/packetid/packetid.go @@ -145,6 +145,7 @@ const ( ClientboundUpdateMobEffect ClientboundUpdateRecipes ClientboundUpdateTags + ClientboundPacketIDGuard ) // Game Serverbound @@ -200,4 +201,5 @@ const ( ServerboundTeleportToEntity ServerboundUseItemOn ServerboundUseItem + ServerboundPacketIDGuard )