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); } buffer.Pad4(); }
public STUNAttr(ref ByteBuffer buffer) { ushort attrLength; isValid = STUNTypeLengthValue.ReadTypeLength(ref buffer, out type, out attrLength); data = new ByteBuffer(buffer.data, buffer.absPosition, attrLength); stunMessage = new ByteBuffer(buffer.data, buffer.absOffset, buffer.Length); buffer.Position += attrLength; buffer.Pad4(); }
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) { int count = buffer.Position; STUNTypeLengthValue.WriteTypeLength(TYPE, HMAC_LENGTH, ref buffer); STUNMessageBuilder.UpdateHeaderAttributesLength(ref buffer, buffer.Position + HMAC_LENGTH); HMAC_SHA1.ComputeHmacSha1(key, new ByteBuffer(buffer.data, buffer.absOffset, count), buffer.data, buffer.absPosition); buffer.Position += HMAC_LENGTH; buffer.Pad4(); }
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); ip.Write(ref buffer); buffer.Pad4(); }
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 buffer.Pad4(); }
public void WriteToBuffer(ref ByteBuffer buffer) { STUNTypeLengthValue.WriteTypeLength(TYPE, 4, ref buffer); buffer.Put(priority); buffer.Pad4(); }
public void WriteToBuffer(ref ByteBuffer buffer) { STUNTypeLengthValue.WriteTypeLength(TYPE, 0, ref buffer); STUNTypeLengthValue.AddPadding(ref buffer); }
public void WriteToBuffer(ref ByteBuffer buffer) { STUNTypeLengthValue.WriteTypeLength(TYPE, 8, ref buffer); buffer.Put(tieBreaker); buffer.Pad4(); }