public void WriteToBuffer(ref ByteBuffer buffer) { ByteBuffer attrStart = buffer; // Make a copy that will retain the current position STUNTypeLengthValue.WriteTypeLength(0, 0, ref buffer); // write temporal values int length = 0; if (null != usernameInBuffer.data) { length = usernameInBuffer.Length; buffer.Put(usernameInBuffer); } else if (null != usernameInString) { length = Encoding.UTF8.GetBytes(usernameInString, 0, usernameInString.Length, buffer.data, buffer.absPosition); } if (length <= 512) { buffer.absPosition += length; } STUNTypeLengthValue.WriteTypeLength(TYPE, (ushort)length, ref attrStart); // Write definitive values STUNTypeLengthValue.AddPadding(ref buffer); }
public void WriteToBuffer(ref ByteBuffer buffer) { ushort length = (ushort)(4 + (family == AddressFamily.IPv4 ? AddressLength.IPv4 : AddressLength.IPv6)); STUNTypeLengthValue.WriteTypeLength(TYPE, length, ref buffer); ByteBuffer attr = new ByteBuffer(buffer.data, buffer.absPosition); // 4 bytes buffer.Put((byte)0); buffer.Put((byte)family); buffer.Put((ushort)port); if (AddressFamily.IPv4 == family) { ipv4.Write(ref buffer); } else { ipv6.Write(ref buffer); } // XOR attr[2] = (byte)(attr[2] ^ buffer[4]); attr[3] = (byte)(attr[3] ^ buffer[5]); for (int i = 4; i < length; i++) { attr[i] = (byte)(attr[i] ^ buffer[i]); } STUNTypeLengthValue.AddPadding(ref buffer); }
public void WriteToBuffer(ref ByteBuffer buffer) { STUNTypeLengthValue.WriteTypeLength(type, (ushort)data.Length, ref buffer); if (data.HasData()) { buffer.Put(data); } STUNTypeLengthValue.AddPadding(ref buffer); }
public void WriteToBuffer(ref ByteBuffer buffer) { int count = buffer.Position; STUNTypeLengthValue.WriteTypeLength(TYPE, 4, ref buffer); STUNMessageBuilder.UpdateHeaderAttributesLength(ref buffer, buffer.Position + 4); crc = Crc32.CRC32.Calculate(buffer.data, buffer.absOffset, count) ^ FINGERPRINT_XOR; buffer.Put(crc); STUNTypeLengthValue.AddPadding(ref buffer); }
public void WriteToBuffer(ref ByteBuffer buffer) { int count = buffer.Position; STUNTypeLengthValue.WriteTypeLength(TYPE, HMAC_LENGTH, ref buffer); STUNMessageBuilder.UpdateHeaderAttributesLength(ref buffer, buffer.Position + HMAC_LENGTH); hmacsha1Instance.ComputeHash(buffer.data, buffer.absOffset, count, buffer.data, buffer.absPosition); buffer.Position += HMAC_LENGTH; STUNTypeLengthValue.AddPadding(ref buffer); }
public void WriteToBuffer(ref ByteBuffer buffer) { ByteBuffer attrStart = buffer; // Make a copy that will retain the current position STUNTypeLengthValue.WriteTypeLength(0, 0, ref buffer); // write temporal values int length = Encoding.UTF8.GetBytes(software, 0, Math.Min(128, software.Length), buffer.data, buffer.absPosition); buffer.absPosition += length; STUNTypeLengthValue.WriteTypeLength(TYPE, (ushort)length, ref attrStart); // Write definitive values STUNTypeLengthValue.AddPadding(ref buffer); }
public void WriteToBuffer(ref ByteBuffer buffer) { ushort length = (ushort)(4 + (family == AddressFamily.IPv4 ? AddressLength.IPv4 : AddressLength.IPv6)); STUNTypeLengthValue.WriteTypeLength(TYPE, length, ref buffer); // 4 bytes buffer.Put((byte)0); buffer.Put((byte)family); buffer.Put((ushort)port); if (AddressFamily.IPv4 == family) { ipv4.Write(ref buffer); } else { ipv6.Write(ref buffer); } STUNTypeLengthValue.AddPadding(ref buffer); }
public void WriteToBuffer(ref ByteBuffer buffer) { ByteBuffer attrStart = buffer; // Make a copy that will retain the current position STUNTypeLengthValue.WriteTypeLength(0, 0, ref buffer); // write temporal values int errorClass = code / 100; int errorNumber = code % 100; // 4 bytes buffer.Put((byte)0); buffer.Put((byte)0); buffer.Put((byte)(errorClass & 0x7)); buffer.Put((byte)errorNumber); int length = Encoding.UTF8.GetBytes(reason, 0, Math.Min(reason.Length, 128), buffer.data, buffer.absPosition); buffer.Position += length; STUNTypeLengthValue.WriteTypeLength(TYPE, (ushort)(4 + length), ref attrStart); // Write definitive values STUNTypeLengthValue.AddPadding(ref buffer); }
public void WriteToBuffer(ref ByteBuffer buffer) { STUNTypeLengthValue.WriteTypeLength(TYPE, 4, ref buffer); buffer.Put(priority); STUNTypeLengthValue.AddPadding(ref buffer); }
public void WriteToBuffer(ref ByteBuffer buffer) { STUNTypeLengthValue.WriteTypeLength(TYPE, 0, ref buffer); STUNTypeLengthValue.AddPadding(ref buffer); }