public void Unmarshal(NdrBuffer buffer) { Revision = buffer.ReadByteLittleEndian(); SubAuthorityCount = buffer.ReadByteLittleEndian(); Debug.Assert(conformance == SubAuthorityCount); IdentifierAuthority = buffer.ReadStruct <RpcSidIdentifierAuthority>(); SubAuthority = buffer.ReadFixedPrimitiveArray <uint>(SubAuthorityCount).AsMemory(); }
public void Unmarshal(NdrBuffer buffer) { if (buffer == null) { throw new ArgumentNullException(nameof(buffer)); } this.Revision = buffer.ReadByteLittleEndian(); this.SubAuthorityCount = buffer.ReadByteLittleEndian(); Debug.Assert(this.conformance == this.SubAuthorityCount); this.IdentifierAuthority = buffer.ReadStruct <RpcSidIdentifierAuthority>(); this.SubAuthority = buffer.ReadFixedPrimitiveArray <uint>(this.SubAuthorityCount).AsMemory(); }
private void ReadCredentials(NdrBuffer buffer) { while (buffer.BytesAvailable > 0) { var cred = new Krb5Credential { Client = ReadPrincipal(buffer), Server = ReadPrincipal(buffer), KeyBlock = ReadKeyBlock(buffer), AuthTime = ReadDateTimeOffset(buffer), StartTime = ReadDateTimeOffset(buffer), EndTime = ReadDateTimeOffset(buffer), RenewTill = ReadDateTimeOffset(buffer), IsKey = buffer.ReadByteLittleEndian() != 0, Flags = (TicketFlags)buffer.ReadInt32BigEndian(), Addresses = ReadAddresses(buffer), AuthData = ReadAuthData(buffer), Ticket = ReadData(buffer).value, SecondTicket = ReadData(buffer).value }; if ("X-CACHECONF:".Equals(cred.Server.Realm, StringComparison.OrdinalIgnoreCase)) { this.ParseConfiguration(cred); } else { this.Credentials.Add(cred); } } }