HighTechTalks DotNet Forums  

Failure decoding embedded permission set object

Dotnet Security microsoft.public.dotnet.security


Discuss Failure decoding embedded permission set object in the Dotnet Security forum.



Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old   
Vijay
 
Posts: n/a

Default Failure decoding embedded permission set object - 06-16-2004 , 11:53 PM






I am trying to implement a custom CAS Permission/Attribute
pair (The code is at the end of the message). The DLL that
contains this is strong named and is registered in the GAC.

I assert this permission on a method in an exe:
class Class1 {
[STAThread]
[A.XPermission
(System.Security.Permissions.SecurityAction.Assert )]
static void Main(string[] args) {
Console.ReadLine();
}
}

permview /decl on the exe shows:

Method CustomAttrTester.Class1::Main() Assert permission
set:
<PermissionSet class="System.Security.PermissionSet"
version="1">
<IPermission class="A.XPermission, CustomAttr,
Version=1.0.0.0, Culture=neutral,
PublicKeyToken=xxxxxxxxxxxx"
version="1"/>
</PermissionSet>

However, when I try to run the exe, I get:
Unhandled Exception: System.Security.SecurityException:
Failure decoding embedded permission set object.
at CustomAttrTester.Class1.Main(String[] args) in
C:\CustomAttrTester\class1.cs:line 16

Also, my WriteLines in the Permission class etc never get
printed on the command line!

Any help appreciated!
Vijay

------------custom attribute/permission implementation-----
using System.Security.Permissions;
using System.Security;
using System.Reflection;
using System;

namespace A {
[AttributeUsage(System.AttributeTargets.Method,
AllowMultiple=false, Inherited=false)]
[Serializable]
public sealed class XPermissionAttribute :
CodeAccessSecurityAttribute {

public XPermissionAttribute (SecurityAction action):
base(action) {
Console.WriteLine("Constructing attr");
}

public override IPermission CreatePermission() {
Console.WriteLine("Creating new XPermission");
return new XPermission();
}

}

[Serializable]
public sealed class XPermission : CodeAccessPermission {
public XPermission() {
Console.WriteLine("Constructing XPermission");
}

public override IPermission Copy() {
return new XPermission();
}

public override void FromXml(SecurityElement elem) {
Console.WriteLine(elem);
}

public override SecurityElement ToXml() {
SecurityElement elem = new SecurityElement
("IPermission");
String name = typeof
(XPermission).AssemblyQualifiedName;
elem.AddAttribute("class", name);
elem.AddAttribute("version", "1");
return elem;
}

public override IPermission Intersect(IPermission
permission) {
if (permission == null) {
return null;
}
if (permission is XPermission) {
return Copy();
}
return null;
}

public override IPermission Union(IPermission
permission) {
if (permission == null) {
return null;
}
if (permission is XPermission) {
return Copy();
}
return null;
}

public override bool IsSubsetOf(IPermission
permission) {
if (permission is XPermission) {
return true;
}
return false;
}
}
}

Reply With Quote
Reply




Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.