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  }