コード例 #1
0
        public override void Unmarshal(NdrBuffer buffer)
        {
            if (buffer == null)
            {
                throw new ArgumentNullException(nameof(buffer));
            }

            this.LogonTime         = buffer.ReadStruct <RpcFileTime>();
            this.LogoffTime        = buffer.ReadStruct <RpcFileTime>();
            this.KickOffTime       = buffer.ReadStruct <RpcFileTime>();
            this.PwdLastChangeTime = buffer.ReadStruct <RpcFileTime>();
            this.PwdCanChangeTime  = buffer.ReadStruct <RpcFileTime>();
            this.PwdMustChangeTime = buffer.ReadStruct <RpcFileTime>();

            this.UserName        = buffer.ReadStruct <RpcString>();
            this.UserDisplayName = buffer.ReadStruct <RpcString>();
            this.LogonScript     = buffer.ReadStruct <RpcString>();
            this.ProfilePath     = buffer.ReadStruct <RpcString>();
            this.HomeDirectory   = buffer.ReadStruct <RpcString>();
            this.HomeDrive       = buffer.ReadStruct <RpcString>();

            this.LogonCount       = buffer.ReadInt16LittleEndian();
            this.BadPasswordCount = buffer.ReadInt16LittleEndian();

            this.UserId  = buffer.ReadUInt32LittleEndian();
            this.GroupId = buffer.ReadUInt32LittleEndian();

            var groupCount = buffer.ReadInt32LittleEndian();

            buffer.ReadDeferredStructArray <GroupMembership>(groupCount, v => this.GroupIds = v);

            this.UserFlags = (UserFlags)buffer.ReadInt32LittleEndian();

            this.UserSessionKey = buffer.ReadMemory(16);

            this.ServerName = buffer.ReadStruct <RpcString>();
            this.DomainName = buffer.ReadStruct <RpcString>();

            buffer.ReadConformantStruct <RpcSid>(v => this.DomainId = v);

            this.Reserved1 = buffer.ReadFixedPrimitiveArray <int>(2).ToArray();

            this.UserAccountControl   = (UserAccountControlFlags)buffer.ReadInt32LittleEndian();
            this.SubAuthStatus        = buffer.ReadInt32LittleEndian();
            this.LastSuccessfulILogon = buffer.ReadStruct <RpcFileTime>();
            this.LastFailedILogon     = buffer.ReadStruct <RpcFileTime>();
            this.FailedILogonCount    = buffer.ReadInt32LittleEndian();

            this.Reserved3 = buffer.ReadInt32LittleEndian();

            var extraSidsCount = buffer.ReadInt32LittleEndian();

            buffer.ReadDeferredStructArray <RpcSidAttributes>(extraSidsCount, v => this.ExtraIds = v);

            buffer.ReadConformantStruct <RpcSid>(v => this.ResourceDomainId = v);

            var resourceGroupCount = buffer.ReadInt32LittleEndian();

            buffer.ReadDeferredStructArray <GroupMembership>(resourceGroupCount, v => this.ResourceGroupIds = v);
        }
コード例 #2
0
ファイル: RpcString.cs プロジェクト: topotam/Kerberos.NET
        public void Unmarshal(NdrBuffer buffer)
        {
            Length    = buffer.ReadInt16LittleEndian();
            MaxLength = buffer.ReadInt16LittleEndian();

            buffer.ReadDeferredConformantVaryingArray <char>(v => Buffer = v);
        }
コード例 #3
0
        public override void Unmarshal(NdrBuffer buffer)
        {
            LogonTime         = buffer.ReadStruct <RpcFileTime>();
            LogoffTime        = buffer.ReadStruct <RpcFileTime>();
            KickOffTime       = buffer.ReadStruct <RpcFileTime>();
            PwdLastChangeTime = buffer.ReadStruct <RpcFileTime>();
            PwdCanChangeTime  = buffer.ReadStruct <RpcFileTime>();
            PwdMustChangeTime = buffer.ReadStruct <RpcFileTime>();

            UserName        = buffer.ReadStruct <RpcString>();
            UserDisplayName = buffer.ReadStruct <RpcString>();
            LogonScript     = buffer.ReadStruct <RpcString>();
            ProfilePath     = buffer.ReadStruct <RpcString>();
            HomeDirectory   = buffer.ReadStruct <RpcString>();
            HomeDrive       = buffer.ReadStruct <RpcString>();

            LogonCount       = buffer.ReadInt16LittleEndian();
            BadPasswordCount = buffer.ReadInt16LittleEndian();

            UserId  = buffer.ReadInt32LittleEndian();
            GroupId = buffer.ReadInt32LittleEndian();

            var groupCount = buffer.ReadInt32LittleEndian();

            buffer.ReadDeferredStructArray <GroupMembership>(groupCount, v => GroupIds = v);

            UserFlags = (UserFlags)buffer.ReadInt32LittleEndian();

            UserSessionKey = buffer.ReadMemory(16);

            ServerName = buffer.ReadStruct <RpcString>();
            DomainName = buffer.ReadStruct <RpcString>();

            buffer.ReadConformantStruct <RpcSid>(v => DomainId = v);

            Reserved1 = buffer.ReadFixedPrimitiveArray <int>(2).ToArray();

            UserAccountControl   = (UserAccountControlFlags)buffer.ReadInt32LittleEndian();
            SubAuthStatus        = buffer.ReadInt32LittleEndian();
            LastSuccessfulILogon = buffer.ReadStruct <RpcFileTime>();
            LastFailedILogon     = buffer.ReadStruct <RpcFileTime>();
            FailedILogonCount    = buffer.ReadInt32LittleEndian();

            Reserved3 = buffer.ReadInt32LittleEndian();

            var extraSidsCount = buffer.ReadInt32LittleEndian();

            buffer.ReadDeferredStructArray <RpcSidAttributes>(extraSidsCount, v => ExtraIds = v);

            buffer.ReadConformantStruct <RpcSid>(v => ResourceDomainId = v);

            var resourceGroupCount = buffer.ReadInt32LittleEndian();

            buffer.ReadDeferredStructArray <GroupMembership>(resourceGroupCount, v => ResourceGroupIds = v);
        }
コード例 #4
0
ファイル: RpcString.cs プロジェクト: z0h3/Kerberos.NET
        public void Unmarshal(NdrBuffer buffer)
        {
            if (buffer == null)
            {
                throw new ArgumentNullException(nameof(buffer));
            }

            this.Length    = buffer.ReadInt16LittleEndian();
            this.MaxLength = buffer.ReadInt16LittleEndian();

            buffer.ReadDeferredConformantVaryingArray <char>(v => this.Buffer = v);
        }
コード例 #5
0
        public void Unmarshal(NdrBuffer buffer)
        {
            buffer.ReadDeferredConformantVaryingArray <char>(v => Id = v.ToString());

            Type  = (ClaimType)buffer.ReadInt16LittleEndian();
            Count = buffer.ReadInt32LittleEndian();

            buffer.ReadDeferredStructUnion(this);
        }
コード例 #6
0
ファイル: ClaimsSet.cs プロジェクト: zha0/Kerberos.NET
        public void Unmarshal(NdrBuffer buffer)
        {
            Count = buffer.ReadInt32LittleEndian();

            buffer.ReadDeferredStructArray <ClaimsArray>(Count, v => ClaimsArray = v);

            ReservedType      = buffer.ReadInt16LittleEndian();
            ReservedFieldSize = buffer.ReadInt32LittleEndian();
            buffer.ReadDeferredConformantArray <byte>(ReservedFieldSize, v => ReservedField = v.ToArray());
        }
コード例 #7
0
        public override void Unmarshal(ReadOnlyMemory <byte> bytes)
        {
            var buffer = new NdrBuffer(bytes);

            ClientId = buffer.ReadStruct <RpcFileTime>();

            NameLength = buffer.ReadInt16LittleEndian();

            if (NameLength > 0)
            {
                Name = buffer.ReadFixedPrimitiveArray <char>(NameLength / sizeof(char)).ToString();
            }
        }
コード例 #8
0
        public override void Unmarshal(NdrBuffer buffer)
        {
            ClaimSetSize = buffer.ReadInt32LittleEndian();

            buffer.ReadDeferredConformantArray <byte>(ClaimSetSize, v => ClaimsSet = UnmarshalClaimsSet(v));

            CompressionFormat        = (CompressionFormat)buffer.ReadInt32LittleEndian();
            UncompressedClaimSetSize = buffer.ReadInt32LittleEndian();
            ReservedType             = buffer.ReadInt16LittleEndian();
            ReservedFieldSize        = buffer.ReadInt32LittleEndian();

            buffer.ReadDeferredConformantArray <byte>(ReservedFieldSize, v => ReservedField = v.ToArray());
        }
コード例 #9
0
ファイル: ClaimEntry.cs プロジェクト: z0h3/Kerberos.NET
        public void Unmarshal(NdrBuffer buffer)
        {
            if (buffer == null)
            {
                throw new ArgumentNullException(nameof(buffer));
            }

            buffer.ReadDeferredConformantVaryingArray <char>(v => this.Id = v.ToString());

            this.Type  = (ClaimType)buffer.ReadInt16LittleEndian();
            this.Count = buffer.ReadInt32LittleEndian();

            buffer.ReadDeferredStructUnion(this);
        }
コード例 #10
0
        public void Unmarshal(NdrBuffer buffer)
        {
            if (buffer == null)
            {
                throw new ArgumentNullException(nameof(buffer));
            }

            this.Count = buffer.ReadInt32LittleEndian();

            buffer.ReadDeferredStructArray <ClaimsArray>(this.Count, v => this.ClaimsArray = v);

            this.ReservedType      = buffer.ReadInt16LittleEndian();
            this.ReservedFieldSize = buffer.ReadInt32LittleEndian();
            buffer.ReadDeferredConformantArray <byte>(this.ReservedFieldSize, v => this.ReservedField = v.ToArray());
        }
コード例 #11
0
        public override void Unmarshal(ReadOnlyMemory <byte> bytes)
        {
            var stream = new NdrBuffer(bytes);

            Type = (ChecksumType)stream.ReadInt32LittleEndian();

            SignaturePosition = stream.Offset;
            Signature         = SetSignatureValue(Type, size => stream.ReadFixedPrimitiveArray <byte>(size).ToArray());

            Validator = CryptoService.CreateChecksum(Type, Signature, SignatureData);

            if (stream.BytesAvailable > 0)
            {
                RODCIdentifier = stream.ReadInt16LittleEndian();
            }
        }
コード例 #12
0
        public override void Unmarshal(NdrBuffer buffer)
        {
            if (buffer == null)
            {
                throw new ArgumentNullException(nameof(buffer));
            }

            this.ClaimSetSize = buffer.ReadInt32LittleEndian();

            buffer.ReadDeferredConformantArray <byte>(this.ClaimSetSize, v => this.ClaimsSet = this.UnmarshalClaimsSet(v));

            this.CompressionFormat        = (CompressionFormat)buffer.ReadInt32LittleEndian();
            this.UncompressedClaimSetSize = buffer.ReadInt32LittleEndian();
            this.ReservedType             = buffer.ReadInt16LittleEndian();
            this.ReservedFieldSize        = buffer.ReadInt32LittleEndian();

            buffer.ReadDeferredConformantArray <byte>(this.ReservedFieldSize, v => this.ReservedField = v.ToArray());
        }