func()

in Server/go/apptoken/apptoken.go [58:113]


func (token *AppToken) buildSignBody() ([]byte, error) {
	buf := new(bytes.Buffer)
	// appId
	appId := []byte(token.AppId)
	if err := binary.Write(buf, binary.BigEndian, int32(len(appId))); err != nil {
		return nil, errors.New("illegal AppId")
	}
	if _, err := buf.Write(appId); err != nil {
		return nil, errors.New("illegal AppId")
	}

	// issueTimestamp
	if err := binary.Write(buf, binary.BigEndian, token.IssueTimestamp); err != nil {
		return nil, errors.New("illegal IssueTimestamp")
	}

	// salt
	if err := binary.Write(buf, binary.BigEndian, token.Salt); err != nil {
		return nil, errors.New("illegal Salt")
	}

	// timestamp
	if err := binary.Write(buf, binary.BigEndian, token.Timestamp); err != nil {
		return nil, errors.New("illegal Timestamp")
	}

	// service
	service, err := token.Service.Pack()
	if err != nil {
		return nil, errors.New("illegal Service")
	}
	if err := binary.Write(buf, binary.BigEndian, service); err != nil {
		return nil, errors.New("illegal Service")
	}

	// options
	if token.Options == nil {
		token.Options = &AppTokenOptions{
			EngineOptions: make(map[string]string),
		}
	}
	options, err := token.Options.Pack()
	if err != nil {
		return nil, errors.New("illegal AppTokenOptions")
	}
	if err := binary.Write(buf, binary.BigEndian, options); err != nil {
		return nil, errors.New("illegal AppTokenOptions")
	}

	//FIXME
	len := nextMultiple(buf.Len(), BUFFER_CAPACITY_BASE)
	result := make([]byte, len)

	copy(result, buf.Bytes())
	return result, nil
}