Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 3
0
        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);
                }
            }
        }