public override byte[] Encode(G2Protocol protocol)
{
lock (protocol.WriteSection)
{
G2Frame settings = protocol.WritePacket(null, IdentityPacket.OperationSettings, null);
protocol.WritePacket(settings, Packet_Operation, UTF8Encoding.UTF8.GetBytes(Operation));
protocol.WritePacket(settings, Packet_UserName, UTF8Encoding.UTF8.GetBytes(UserName));
protocol.WritePacket(settings, Packet_TcpPort, BitConverter.GetBytes(TcpPort));
protocol.WritePacket(settings, Packet_UdpPort, BitConverter.GetBytes(UdpPort));
protocol.WritePacket(settings, Packet_Location, UTF8Encoding.UTF8.GetBytes(Location));
protocol.WritePacket(settings, Packet_AwayMsg, UTF8Encoding.UTF8.GetBytes(AwayMessage));
protocol.WritePacket(settings, Packet_FileKey, FileKey);
protocol.WritePacket(settings, Packet_OpKey, OpKey);
protocol.WritePacket(settings, Packet_OpAccess, BitConverter.GetBytes((byte)OpAccess));
protocol.WritePacket(settings, Packet_SecurityLevel, BitConverter.GetBytes((int)Security));
if (GlobalIM) protocol.WritePacket(settings, Packet_GlobalIM, null);
if (Invisible) protocol.WritePacket(settings, Packet_Invisible, null);
RSAParameters rsa = KeyPair.ExportParameters(true);
G2Frame key = protocol.WritePacket(settings, Packet_KeyPair, null);
protocol.WritePacket(key, Key_D, rsa.D);
protocol.WritePacket(key, Key_DP, rsa.DP);
protocol.WritePacket(key, Key_DQ, rsa.DQ);
protocol.WritePacket(key, Key_Exponent, rsa.Exponent);
protocol.WritePacket(key, Key_InverseQ, rsa.InverseQ);
protocol.WritePacket(key, Key_Modulus, rsa.Modulus);
protocol.WritePacket(key, Key_P, rsa.P);
protocol.WritePacket(key, Key_Q, rsa.Q);
return protocol.WriteFinish();
}
}