Ejemplo n.º 1
0
        /// <summary>
        /// initialize the restriction of target info
        /// </summary>
        /// <param name="targetInfo">the target info collection</param>
        private void InitializeRestriction(
            ICollection <AV_PAIR> targetInfo
            )
        {
            // update the MsAvRestrictions of targetInfo
            // MachineID (32 bytes): A 256-bit random number created at computer
            // startup to identify the calling machine.
            Restriction_Encoding restriction = new Restriction_Encoding();

            // defines the length, in bytes, of AV_PAIR Value.
            restriction.Size      = 0x30;
            restriction.MachineID = new byte[NlmpUtility.MACHINE_ID_SIZE];
            byte[] restrictionBytes = NlmpUtility.StructGetBytes(restriction);

            if (NlmpUtility.AvPairContains(targetInfo, AV_PAIR_IDs.MsAvRestrictions))
            {
                NlmpUtility.UpdateAvPair(
                    targetInfo, AV_PAIR_IDs.MsAvRestrictions, (ushort)restrictionBytes.Length, restrictionBytes);
            }
            else
            {
                NlmpUtility.AddAVPair(
                    targetInfo, AV_PAIR_IDs.MsAvRestrictions, (ushort)restrictionBytes.Length, restrictionBytes);
            }
        }
Ejemplo n.º 2
0
        //If the ClientChannelBindingsUnhashed (section 3.1.1.2) is not NULL
        private void InitializeMsAvChannelBindings(
            ICollection <AV_PAIR> targetInfo
            )
        {
            // update the MsAvChannelBinding of targetInfo
            // add an AV_PAIR structure (section 2.2.2.1) and set the AvId field to MsvAvChannelBindings and the Value field to Z(16).
            var value = NlmpUtility.Z(16);

            if (NlmpUtility.AvPairContains(targetInfo, AV_PAIR_IDs.MsvChannelBindings))
            {
                NlmpUtility.UpdateAvPair(
                    targetInfo, AV_PAIR_IDs.MsvChannelBindings, (ushort)value.Length, value);
            }
            else
            {
                NlmpUtility.AddAVPair(
                    targetInfo, AV_PAIR_IDs.MsvChannelBindings, (ushort)value.Length, value);
            }
        }
        // If ClientSuppliedTargetName (section 3.1.1.2) is not NULL
        private void InitializeMsvAvTargetName(
            ICollection <AV_PAIR> targetInfo
            )
        {
            // update the MsvAvTargetName of targetInfo
            // Add an AV_PAIR structure (section 2.2.2.1) and set the AvId field to MsvAvTargetName and the Value field to ClientSuppliedTargetName without terminating NULL.
            byte[] targetName = NlmpUtility.Unicode(this.credential.TargetName);

            if (NlmpUtility.AvPairContains(targetInfo, AV_PAIR_IDs.MsvAvTargetName))
            {
                NlmpUtility.UpdateAvPair(
                    targetInfo, AV_PAIR_IDs.MsvAvTargetName, (ushort)targetName.Length, targetName);
            }
            else
            {
                NlmpUtility.AddAVPair(
                    targetInfo, AV_PAIR_IDs.MsvAvTargetName, (ushort)targetName.Length, targetName);
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// initialize the MsAvFlags of target info
        /// </summary>
        /// <param name="targetInfo">the target info collection</param>
        private void InitializeMsAvFlags(
            ICollection <AV_PAIR> targetInfo
            )
        {
            // update the MsvAvFlags of targetInfo
            if (NlmpUtility.AvPairContains(targetInfo, AV_PAIR_IDs.MsvAvFlags))
            {
                uint value = NlmpUtility.BytesToSecurityUInt32(
                    NlmpUtility.AvPairGetValue(targetInfo, AV_PAIR_IDs.MsvAvFlags)
                    );
                // if AvId field set to MsvAvFlags, set the 0x02 bit to 1.
                value |= 0x02;
                byte[] newValue = NlmpUtility.SecurityUInt32GetBytes(value);

                NlmpUtility.UpdateAvPair(targetInfo, AV_PAIR_IDs.MsvAvFlags, (ushort)newValue.Length, newValue);
            }
            else
            {
                // if AvId field set to MsvAvFlags, set the 0x02 bit to 1.
                uint   value    = 0x02;
                byte[] newValue = NlmpUtility.SecurityUInt32GetBytes(value);
                NlmpUtility.AddAVPair(targetInfo, AV_PAIR_IDs.MsvAvFlags, (ushort)newValue.Length, newValue);
            }
        }