github.com/Mrs4s/MiraiGo@v0.0.0-20240226124653-54bdd873e3fe/internal/tlv/t544.go (about) 1 package tlv 2 3 import "github.com/Mrs4s/MiraiGo/binary" 4 5 // temporary solution 6 7 func T544(userId uint64, moduleId string, subCmd uint32, sdkVersion string, guid []byte, appVersion string, signer func(uint64, string, string, []byte) ([]byte, error)) []byte { 8 salt := binary.NewWriterF(func(w *binary.Writer) { 9 w.WriteUInt64(userId) 10 w.WriteBytesShort(guid) 11 w.WriteBytesShort([]byte(sdkVersion)) 12 w.WriteUInt32(subCmd) 13 }) 14 return T544Custom(userId, moduleId, appVersion, salt, signer) 15 } 16 17 func T544v2(userId uint64, moduleId string, subCmd uint32, sdkVersion string, guid []byte, appVersion string, signer func(uint64, string, string, []byte) ([]byte, error)) []byte { 18 salt := binary.NewWriterF(func(w *binary.Writer) { 19 // w.Write(binary.NewWriterF(func(w *binary.Writer) { w.WriteUInt64(userId) })[:4]) 20 w.WriteUInt32(0) 21 w.WriteBytesShort(guid) 22 w.WriteBytesShort([]byte(sdkVersion)) 23 w.WriteUInt32(subCmd) 24 w.WriteUInt32(0) 25 }) 26 return T544Custom(userId, moduleId, appVersion, salt, signer) 27 } 28 29 func T544Custom(userId uint64, moduleId string, appVersion string, salt []byte, signer func(uint64, string, string, []byte) ([]byte, error)) []byte { 30 sign, err := signer(userId, moduleId, appVersion, salt) 31 if err != nil { 32 return nil 33 } 34 return binary.NewWriterF(func(w *binary.Writer) { 35 w.WriteUInt16(0x544) 36 w.WriteBytesShort(sign) 37 }) 38 }