in Server/csharp/AppToken/Model/AppToken.cs [50:83]
public string Build()
{
using var buf = new MemoryStream();
using (var writer = new BinaryWriter(buf, Encoding.UTF8, true))
{
var appIdBytes = Encoding.UTF8.GetBytes(this.appId);
writer.Write(BigEndianUtils.GetBytesBigEndian(appIdBytes.Length));
writer.Write(appIdBytes);
writer.Write(BigEndianUtils.GetBytesBigEndian(this.issueTimestamp));
writer.Write(BigEndianUtils.GetBytesBigEndian(this.salt));
writer.Write(BigEndianUtils.GetBytesBigEndian(this.timestamp));
this.service.Pack(buf);
this.options = this.options ?? new AppTokenOptions();
this.options.Pack(buf);
}
using var tokenBuf = new MemoryStream();
using (var writer = new BinaryWriter(tokenBuf, Encoding.UTF8, true))
{
byte[] signKey = SignatureUtils.GenerateSign(this.appKey, this.issueTimestamp, this.salt);
byte[] tokenBody = BytesUtils.GetFixedLengthByteArray(buf);
byte[] signature = SignatureUtils.Sign(signKey, tokenBody);
writer.Write(BigEndianUtils.GetBytesBigEndian(signature.Length));
writer.Write(signature);
writer.Write(tokenBody);
}
return VERSION_0 + EncodeUtils.Base64Encode(CompressUtils.Compress(BytesUtils.GetFixedLengthByteArray(tokenBuf)));
}