Пример #1
0
 public DeclSecurityEntry(PEFile module, DeclarativeSecurityAttributeHandle handle)
 {
     this.metadataOffset = module.Reader.PEHeaders.MetadataStartOffset;
     this.module         = module;
     this.metadata       = module.Metadata;
     this.handle         = handle;
     this.declSecAttr    = metadata.GetDeclarativeSecurityAttribute(handle);
 }
Пример #2
0
        public void AddSecurityAttributes(DeclarativeSecurityAttribute secDecl)
        {
            var securityActionType = module.Compilation.FindType(new TopLevelTypeName("System.Security.Permissions", "SecurityAction"));
            var securityAction     = new CustomAttributeTypedArgument <IType>(securityActionType, (int)secDecl.Action);
            var metadata           = module.metadata;
            var reader             = metadata.GetBlobReader(secDecl.PermissionSet);

            if (reader.ReadByte() == '.')
            {
                // binary attribute
                int attributeCount = reader.ReadCompressedInteger();
                for (int i = 0; i < attributeCount; i++)
                {
                    Add(ReadBinarySecurityAttribute(ref reader, securityAction));
                }
            }
            else
            {
                // for backward compatibility with .NET 1.0: XML-encoded attribute
                reader.Reset();
                Add(ReadXmlSecurityAttribute(ref reader, securityAction));
            }
        }
Пример #3
0
 public static string ToString(this MetadataReader reader, DeclarativeSecurityAttribute x) => $"{{DeclSecAttr[{RowId(x):X}]: {reader.ToString( x.PermissionSet)}}}";