add Hash for Chat Header and PlayerMessage

This commit is contained in:
Tnze
2022-12-02 16:15:19 +08:00
parent aadf28dde2
commit 9ffed219cd
2 changed files with 16 additions and 0 deletions

View File

@ -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 {

View File

@ -145,6 +145,7 @@ const (
ClientboundUpdateMobEffect
ClientboundUpdateRecipes
ClientboundUpdateTags
ClientboundPacketIDGuard
)
// Game Serverbound
@ -200,4 +201,5 @@ const (
ServerboundTeleportToEntity
ServerboundUseItemOn
ServerboundUseItem
ServerboundPacketIDGuard
)