Inheritance: System.Attribute
        static void CompleteSecurityAttributeFields(SSP.SecurityAttribute security_attribute, SecurityAttribute attribute)
        {
            var type = security_attribute.GetType ();

            foreach (var named_argument in attribute.Fields)
                type.GetField (named_argument.Name).SetValue (security_attribute, named_argument.Argument.Value);
        }
        static void CompleteSecurityAttributeProperties(SSP.SecurityAttribute security_attribute, SecurityAttribute attribute)
        {
            var type = security_attribute.GetType ();

            foreach (var named_argument in attribute.Properties)
                type.GetProperty (named_argument.Name).SetValue (security_attribute, named_argument.Argument.Value, null);
        }
        private SSP.SecurityAttribute CreateSecurityAttribute(SecurityAction action, BinaryReader br, byte [] permset, int pos, out int start, bool resolve)
        {
            string cname   = SignatureReader.ReadUTF8String(permset, pos, out start);
            Type   secattr = null;

            // note: the SecurityAction parameter isn't important to generate the XML
            SSP.SecurityAttribute sa = null;
            try
            {
                secattr = Type.GetType(cname, false);
                if (secattr == null)
                {
                    return(null);
                }

                sa = Activator.CreateInstance(secattr, new object [] { (SSP.SecurityAction)action }) as SSP.SecurityAttribute;
            }
            catch {}

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

            // encoded length of all parameters (we don't need the value - except the updated pos)
            Utilities.ReadCompressedInteger(permset, start, out pos);
            int numparams = Utilities.ReadCompressedInteger(permset, pos, out start);

            if (numparams == 0)
            {
                return(sa);
            }

            br.BaseStream.Position = start;
            for (int j = 0; j < numparams; j++)
            {
                bool read = true;
                CustomAttrib.NamedArg na = sr.ReadNamedArg(permset, br, ref read, resolve);
                if (!read)
                {
                    return(null);
                }

                if (na.Field)
                {
                    FieldInfo fi = secattr.GetField(na.FieldOrPropName);
                    fi.SetValue(sa, na.FixedArg.Elems[0].Value);
                }
                else if (na.Property)
                {
                    PropertyInfo pi = secattr.GetProperty(na.FieldOrPropName);
                    pi.SetValue(sa, na.FixedArg.Elems[0].Value, null);
                }
            }

            start = (int)br.BaseStream.Position;

            return(sa);
        }
        static void CompleteSecurityAttribute(SSP.SecurityAttribute security_attribute, SecurityAttribute attribute)
        {
            if (attribute.HasFields)
                CompleteSecurityAttributeFields (security_attribute, attribute);

            if (attribute.HasProperties)
                CompleteSecurityAttributeProperties (security_attribute, attribute);
        }
Example #5
0
        static void CompleteSecurityAttributeProperties(SSP.SecurityAttribute security_attribute, SecurityAttribute attribute)
        {
            var type = security_attribute.GetType();

            foreach (var named_argument in attribute.Properties)
            {
                type.GetProperty(named_argument.Name).SetValue(security_attribute, named_argument.Argument.Value, null);
            }
        }
Example #6
0
        static void CompleteSecurityAttributeFields(SSP.SecurityAttribute security_attribute, SecurityAttribute attribute)
        {
            var type = security_attribute.GetType();

            foreach (var named_argument in attribute.Fields)
            {
                type.GetField(named_argument.Name).SetValue(security_attribute, named_argument.Argument.Value);
            }
        }
        private static void CompleteSecurityAttributeProperties(System.Security.Permissions.SecurityAttribute security_attribute, Mono.Cecil.SecurityAttribute attribute)
        {
            Type type = security_attribute.GetType();

            foreach (Mono.Cecil.CustomAttributeNamedArgument property in attribute.Properties)
            {
                type.GetProperty(property.Name).SetValue(security_attribute, property.Argument.Value, null);
            }
        }
        private static void CompleteSecurityAttributeFields(System.Security.Permissions.SecurityAttribute security_attribute, Mono.Cecil.SecurityAttribute attribute)
        {
            Type type = security_attribute.GetType();

            foreach (Mono.Cecil.CustomAttributeNamedArgument field in attribute.Fields)
            {
                type.GetField(field.Name).SetValue(security_attribute, field.Argument.Value);
            }
        }
 private static void CompleteSecurityAttribute(System.Security.Permissions.SecurityAttribute security_attribute, Mono.Cecil.SecurityAttribute attribute)
 {
     if (attribute.HasFields)
     {
         SecurityDeclarationRocks.CompleteSecurityAttributeFields(security_attribute, attribute);
     }
     if (attribute.HasProperties)
     {
         SecurityDeclarationRocks.CompleteSecurityAttributeProperties(security_attribute, attribute);
     }
 }
Example #10
0
        static void CompleteSecurityAttribute(SSP.SecurityAttribute security_attribute, SecurityAttribute attribute)
        {
            if (attribute.HasFields)
            {
                CompleteSecurityAttributeFields(security_attribute, attribute);
            }

            if (attribute.HasProperties)
            {
                CompleteSecurityAttributeProperties(security_attribute, attribute);
            }
        }
Example #11
0
        public SecurityDeclaration FromByteArray(SecurityAction action, byte [] declaration, bool resolve)
        {
            SecurityDeclaration dec = new SecurityDeclaration(action);

#if !CF_1_0 && !CF_2_0
            dec.PermissionSet = new PermissionSet(SSP.PermissionState.None);

            if (declaration == null || declaration.Length == 0)
            {
                return(dec);
            }

            if (declaration[0] == 0x2e)
            {
                // new binary format introduced in 2.0
                int pos = 1;
                int start;
                int numattr = Utilities.ReadCompressedInteger(declaration, pos, out start);
                if (numattr == 0)
                {
                    return(dec);
                }

                BinaryReader br = new BinaryReader(new MemoryStream(declaration));
                for (int i = 0; i < numattr; i++)
                {
                    pos = start;
                    SSP.SecurityAttribute sa = CreateSecurityAttribute(action, br, declaration, pos, out start, resolve);
                    if (sa == null)
                    {
                        dec.Resolved = false;
                        dec.Blob     = declaration;
                        return(dec);
                    }

                    IPermission p = sa.CreatePermission();
                    dec.PermissionSet.AddPermission(p);
                }
            }
            else
            {
                Parser.LoadXml(Encoding.Unicode.GetString(declaration));
                try {
                    dec.PermissionSet.FromXml(Parser.ToXml());
                    dec.PermissionSet.ToXml();
                } catch {
                    dec.Resolved = false;
                    dec.Blob     = declaration;
                }
            }
#endif
            return(dec);
        }
		static IPermission CreatePermission (SecurityDeclaration declaration, SecurityAttribute attribute)
		{
			var attribute_type = Type.GetType (attribute.AttributeType.FullName);
			if (attribute_type == null)
				throw new ArgumentException ("attribute");

			var security_attribute = CreateSecurityAttribute (attribute_type, declaration);
			if (security_attribute == null)
				throw new InvalidOperationException ();

			CompleteSecurityAttribute (security_attribute, attribute);

			return security_attribute.CreatePermission ();
		}
        private static IPermission CreatePermission(SecurityDeclaration declaration, Mono.Cecil.SecurityAttribute attribute)
        {
            Type type = Type.GetType(attribute.AttributeType.FullName);

            if (type == null)
            {
                throw new ArgumentException("attribute");
            }
            System.Security.Permissions.SecurityAttribute securityAttribute = SecurityDeclarationRocks.CreateSecurityAttribute(type, declaration);
            if (securityAttribute == null)
            {
                throw new InvalidOperationException();
            }
            SecurityDeclarationRocks.CompleteSecurityAttribute(securityAttribute, attribute);
            return(securityAttribute.CreatePermission());
        }
Example #14
0
        public static SecurityDeclaration ToSecurityDeclaration(this PermissionSet self, SecurityAction action, ModuleDefinition module)
        {
            if (self == null)
                throw new ArgumentNullException ("self");
            if (module == null)
                throw new ArgumentNullException ("module");

            var declaration = new SecurityDeclaration (action);

            var attribute = new SecurityAttribute (
                module.TypeSystem.LookupType ("System.Security.Permissions", "PermissionSetAttribute"));

            attribute.Properties.Add (
                new CustomAttributeNamedArgument (
                    "XML",
                    new CustomAttributeArgument (
                        module.TypeSystem.String, self.ToXml ().ToString ())));

            declaration.SecurityAttributes.Add (attribute);

            return declaration;
        }
Example #15
0
File: API.cs Project: 3guy/testRe
		public static extern IntPtr CreateFile(string lpFileName, int dwDesAccess, int dwShareMode, SecurityAttribute lpSecurityAttributes, int dwCreationDisposition, int dwFlagsAndAttributes, IntPtr hTemplateFile);