Files
go-mc/chat/sign/session.go
2023-01-01 13:17:07 +08:00

51 lines
885 B
Go

package sign
import (
"io"
"github.com/google/uuid"
"github.com/Tnze/go-mc/chat"
pk "github.com/Tnze/go-mc/net/packet"
"github.com/Tnze/go-mc/yggdrasil/user"
)
type Message struct {
Link struct {
Index int
Sender uuid.UUID
Session uuid.UUID
}
Signature []byte
PackedMessageBody
Unsigned *chat.Message
FilterMask
}
type Session struct {
sessionID uuid.UUID
publicKey user.PublicKey
}
func (s Session) WriteTo(w io.Writer) (n int64, err error) {
n1, err := pk.UUID(s.sessionID).WriteTo(w)
if err != nil {
return n1, err
}
n2, err := s.publicKey.WriteTo(w)
return n1 + n2, err
}
func (s *Session) ReadFrom(r io.Reader) (n int64, err error) {
n1, err := ((*pk.UUID)(&s.sessionID)).ReadFrom(r)
if err != nil {
return n1, err
}
n2, err := s.publicKey.ReadFrom(r)
return n1 + n2, err
}
func (s *Session) Update(msg Message) bool {
panic("todo")
}