public override ReadOnlyMemory <byte> Marshal() { using (var buffer = new NdrBuffer()) { buffer.MarshalObject(this); return(buffer.ToMemory(alignment: 8)); } }
public override ReadOnlyMemory <byte> Marshal() { using (var buffer = new NdrBuffer()) { buffer.WriteInt32LittleEndian(this.Version); buffer.WriteInt32LittleEndian((int)this.EncryptionType); buffer.WriteSpan(this.SerializedData.Span); return(buffer.ToMemory(alignment: 8)); } }
public override ReadOnlyMemory <byte> Marshal() { using (var buffer = new NdrBuffer()) { buffer.WriteInt32LittleEndian((int)this.Type); buffer.WriteSpan(this.Signature.Span); if (this.RODCIdentifier > 0) { buffer.WriteInt16LittleEndian(this.RODCIdentifier); } return(buffer.ToMemory()); } }
internal byte[] Serialize() { using (var buffer = new NdrBuffer(align: false)) { buffer.WriteByte(Magic); buffer.WriteByte(ExpectedVersion); this.WriteHeader(buffer); WritePrincipal(this.DefaultPrincipalName, buffer); this.WriteCredentials(buffer); return(buffer.ToMemory(0).ToArray()); } }
private void WriteHeader(NdrBuffer buffer) { using (var headerBuffer = new NdrBuffer(align: false)) { foreach (var kv in this.Header) { headerBuffer.WriteInt16BigEndian((short)kv.Key); headerBuffer.WriteInt16BigEndian((short)kv.Value.Length); headerBuffer.WriteMemory(kv.Value); } var header = headerBuffer.ToMemory(0); buffer.WriteInt16BigEndian((short)header.Length); buffer.WriteMemory(header); } }
public override ReadOnlyMemory <byte> Marshal() { using (var buffer = new NdrBuffer()) { this.NameLength = (short)(this.Name.Length * sizeof(char)); buffer.WriteStruct(this.ClientId); buffer.WriteInt16LittleEndian(this.NameLength); if (this.NameLength > 0) { buffer.WriteFixedPrimitiveArray(this.Name.AsSpan()); } return(buffer.ToMemory()); } }
public override ReadOnlyMemory <byte> Marshal() { using (var buffer = new NdrBuffer()) { var upnBytes = MemoryMarshal.Cast <char, byte>(this.Upn.AsSpan()); var domainBytes = MemoryMarshal.Cast <char, byte>(this.Domain.AsSpan()); buffer.WriteInt16LittleEndian((short)upnBytes.Length); buffer.WriteInt16LittleEndian(2 + 2 + 2 + 2 + 4 + 4); // + 4 to align on 8 boundary buffer.WriteInt16LittleEndian((short)domainBytes.Length); buffer.WriteInt16LittleEndian((short)(2 + 2 + 2 + 2 + 2 + 4 + 4 + upnBytes.Length)); buffer.WriteInt32LittleEndian((int)this.Flags); buffer.WriteInt32LittleEndian(0); buffer.WriteFixedPrimitiveArray(upnBytes); buffer.WriteInt16LittleEndian(0); buffer.WriteFixedPrimitiveArray(domainBytes); return(buffer.ToMemory(alignment: 8)); } }