public override IPermission CreatePermission()
        {
            DataProtectionPermission perm = null;

            if (this.Unrestricted)
            {
                perm = new DataProtectionPermission(PermissionState.Unrestricted);
            }
            else
            {
                perm = new DataProtectionPermission(_flags);
            }
            return(perm);
        }
        public override IPermission Union(IPermission target)
        {
            DataProtectionPermission dp = Cast(target);

            if (dp == null)
            {
                return(this.Copy());
            }

            if (this.IsUnrestricted() || dp.IsUnrestricted())
            {
                return(new SecurityPermission(PermissionState.Unrestricted));
            }

            return(new DataProtectionPermission(_flags | dp._flags));
        }
        // helpers

        private DataProtectionPermission Cast(IPermission target)
        {
            if (target == null)
            {
                return(null);
            }

            DataProtectionPermission dp = (target as DataProtectionPermission);

            if (dp == null)
            {
                PermissionHelper.ThrowInvalidPermission(target, typeof(DataProtectionPermission));
            }

            return(dp);
        }
Пример #4
0
        public override bool IsSubsetOf(IPermission target)
        {
            if (target == null)
            {
                return(m_flags == DataProtectionPermissionFlags.NoFlags);
            }

            try {
                DataProtectionPermission      operand    = (DataProtectionPermission)target;
                DataProtectionPermissionFlags sourceFlag = this.m_flags;
                DataProtectionPermissionFlags targetFlag = operand.m_flags;
                return((sourceFlag & targetFlag) == sourceFlag);
            }
            catch (InvalidCastException) {
                throw new ArgumentException(String.Format(CultureInfo.CurrentCulture, SecurityResources.GetResourceString("Argument_WrongType"), this.GetType().FullName));
            }
        }
        public override bool IsSubsetOf(IPermission target)
        {
            DataProtectionPermission dp = Cast(target);

            if (dp == null)
            {
                return(_flags == DataProtectionPermissionFlags.NoFlags);
            }

            if (dp.IsUnrestricted())
            {
                return(true);
            }
            if (this.IsUnrestricted())
            {
                return(false);
            }

            return((_flags & ~dp._flags) == 0);
        }
Пример #6
0
        public override bool IsSubsetOf(IPermission target)
        {
            bool flag;

            if (target == null)
            {
                return(this.m_flags == DataProtectionPermissionFlags.NoFlags);
            }
            try
            {
                DataProtectionPermission      permission = (DataProtectionPermission)target;
                DataProtectionPermissionFlags flags      = this.m_flags;
                DataProtectionPermissionFlags flags2     = permission.m_flags;
                flag = (flags & flags2) == flags;
            }
            catch (InvalidCastException)
            {
                throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, SecurityResources.GetResourceString("Argument_WrongType"), new object[] { base.GetType().FullName }));
            }
            return(flag);
        }
Пример #7
0
        //
        // IPermission implementation
        //

        public override IPermission Union(IPermission target)
        {
            if (target == null)
            {
                return(this.Copy());
            }

            try {
                DataProtectionPermission      operand    = (DataProtectionPermission)target;
                DataProtectionPermissionFlags flag_union = m_flags | operand.m_flags;
                if (flag_union == DataProtectionPermissionFlags.NoFlags)
                {
                    return(null);
                }
                else
                {
                    return(new DataProtectionPermission(flag_union));
                }
            }
            catch (InvalidCastException) {
                throw new ArgumentException(String.Format(CultureInfo.CurrentCulture, SecurityResources.GetResourceString("Argument_WrongType"), this.GetType().FullName));
            }
        }
 public override IPermission Intersect(IPermission target)
 {
     IPermission permission2;
     if (target == null)
     {
         return null;
     }
     try
     {
         DataProtectionPermission permission = (DataProtectionPermission) target;
         DataProtectionPermissionFlags flag = permission.m_flags & this.m_flags;
         if (flag == DataProtectionPermissionFlags.NoFlags)
         {
             return null;
         }
         permission2 = new DataProtectionPermission(flag);
     }
     catch (InvalidCastException)
     {
         throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, SecurityResources.GetResourceString("Argument_WrongType"), new object[] { base.GetType().FullName }));
     }
     return permission2;
 }
        public override IPermission Intersect(IPermission target)
        {
            DataProtectionPermission dp = Cast(target);

            if (dp == null)
            {
                return(null);
            }

            if (this.IsUnrestricted() && dp.IsUnrestricted())
            {
                return(new DataProtectionPermission(PermissionState.Unrestricted));
            }
            if (this.IsUnrestricted())
            {
                return(dp.Copy());
            }
            if (dp.IsUnrestricted())
            {
                return(this.Copy());
            }
            return(new DataProtectionPermission(_flags & dp._flags));
        }
Пример #10
0
        public override IPermission Intersect(IPermission target)
        {
            IPermission permission2;

            if (target == null)
            {
                return(null);
            }
            try
            {
                DataProtectionPermission      permission = (DataProtectionPermission)target;
                DataProtectionPermissionFlags flag       = permission.m_flags & this.m_flags;
                if (flag == DataProtectionPermissionFlags.NoFlags)
                {
                    return(null);
                }
                permission2 = new DataProtectionPermission(flag);
            }
            catch (InvalidCastException)
            {
                throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, SecurityResources.GetResourceString("Argument_WrongType"), new object[] { base.GetType().FullName }));
            }
            return(permission2);
        }
		public override IPermission CreatePermission ()
		{
			DataProtectionPermission perm = null;
			if (this.Unrestricted)
				perm = new DataProtectionPermission (PermissionState.Unrestricted);
			else
				perm = new DataProtectionPermission (_flags);
			return perm;
		}
Пример #12
0
        internal static int SystemFunction041 (
            [In,Out] byte[]     pDataIn,
            [In]     uint       cbDataIn,   // multiple of RTL_ENCRYPT_MEMORY_SIZE
            [In]     uint       dwFlags) {
            // Semi-trusted callers are not allowed to use DPAPI since it uses the user/machine credentials.
            DataProtectionPermission dp = new DataProtectionPermission(DataProtectionPermissionFlags.UnprotectMemory);
            dp.Demand();

            return CAPIUnsafe.SystemFunction041(pDataIn, cbDataIn, dwFlags);
        }
Пример #13
0
        internal static bool CryptUnprotectData (
            [In]     IntPtr pDataIn,
            [In]     IntPtr ppszDataDescr,
            [In]     IntPtr pOptionalEntropy,
            [In]     IntPtr pvReserved,
            [In]     IntPtr pPromptStruct,
            [In]     uint   dwFlags,
            [In,Out] IntPtr pDataBlob) {
            // Semi-trusted callers are not allowed to use DPAPI since it uses the user/machine credentials.
            DataProtectionPermission dp = new DataProtectionPermission(DataProtectionPermissionFlags.UnprotectData);
            dp.Demand();

            return CAPIUnsafe.CryptUnprotectData(pDataIn, ppszDataDescr, pOptionalEntropy, pvReserved, pPromptStruct, dwFlags, pDataBlob);
        }