diff options
author | Sebastien Pouliot <sebastien@ximian.com> | 2003-12-30 07:07:48 +0300 |
---|---|---|
committer | Sebastien Pouliot <sebastien@ximian.com> | 2003-12-30 07:07:48 +0300 |
commit | 24c965fc2f40cbabb4d486a2f96fb7c572c7d4b5 (patch) | |
tree | 81404c23327c098a5f9f91a53be967646d80c14b /mcs/class/corlib/System.Security.Permissions | |
parent | 1eb7770a063761db26fc968827cc7440cf611324 (diff) |
2003-12-29 Sebastien Pouliot <spouliot@videotron.ca>
* EnvironmentPermission.cs: Fixed return value to match unit tests.
* EnvironmentPermissionAttribute.cs: Updated CreatePermission for
Unrestricted permission. Updated AttributeUsage using 1.2 documentation.
* FileDialogPermissionAttribute.cs: Updated CreatePermission for
Unrestricted permission. Updated AttributeUsage using 1.2 documentation.
* FileIOPermissionAttribute.cs: Updated CreatePermission for
Unrestricted permission. Updated AttributeUsage using 1.2 documentation.
* IsolatedStorageFilePermissionAttribute.cs: Implemented
CreatePermission method. Updated AttributeUsage using 1.2 documentation.
* IsolatedStoragePermissionAttribute.cs: Updated AttributeUsage using
1.2 documentation.
* PermissionSetAttribute.cs: Prepared CreatePermissionSet. Updated
AttributeUsage using 1.2 documentation.
* PrincipalPermissionAttribute.cs: Updated CreatePermission for
Unrestricted permission. Fixed AttributeUsage (more limited than others).
* PublisherIdentityPermissionAttribute.cs: Updated CreatePermission to
throw ArgumentException for Unrestricted permission. Updated
AttributeUsage using 1.2 documentation.
* ReflectionPermissionAttribute.cs: Updated CreatePermission for
Unrestricted permission. Updated AttributeUsage using 1.2 documentation.
* RegistryPermission.cs: Implemented IsUnrestricted for unit tests.
* RegistryPermissionAttribute.cs: Implemented CreatePermission method.
Updated AttributeUsage using 1.2 documentation.
* SecurityAttribute.cs: m_Action is now assigned in constructor.
* SecurityPermission.cs: Completed class.
* SecurityPermissionAttribute.cs: Updated CreatePermission for
Unrestricted permission. Added missing [Serializable] attribute and
UnmanagedCode property. Changed -= to &= to preserve flags (e.g.
setting a flags to false more than one time).
* SecurityPermissionFlag.cs: Cleanup unused XML tags.
* SiteIdentityPermission.cs: Fixed exception for constructor and Site
property to match unit tests.
* SiteIdentityPermissionAttribute.cs: Updated CreatePermission for
Unrestricted permission. Updated AttributeUsage using 1.2 documentation.
* StrongNameIdentityPermission.cs: Fixed default values for Name and
Version to match unit tests.
* StrongNamePermissionAttribute.cs: Updated CreatePermission to
throw ArgumentException for Unrestricted permission. Updated
AttributeUsage using 1.2 documentation.
* UIPermission.cs: Fixed default values in constructor to match unit
tests.
* UIPermissionAttribute.cs: Updated CreatePermission to throw
ArgumentException for Unrestricted permission. Fixed strange case for
null URL. Updated AttributeUsage using 1.2 documentation.
* UrlIdentityPermission.cs: Url property now throws an exception to
match unit tests.
* UrlIdentityPermissionAttribute.cs: Updated CreatePermission to throw
ArgumentException for Unrestricted permission. Updated AttributeUsage
using 1.2 documentation.
* ZoneIdentityPermissionAttribute.cs: Updated CreatePermission to throw
ArgumentException for Unrestricted permission. Updated AttributeUsage
using 1.2 documentation.
svn path=/trunk/mcs/; revision=21543
Diffstat (limited to 'mcs/class/corlib/System.Security.Permissions')
26 files changed, 672 insertions, 446 deletions
diff --git a/mcs/class/corlib/System.Security.Permissions/ChangeLog b/mcs/class/corlib/System.Security.Permissions/ChangeLog index 3e03538cc09..71a6e43c2cb 100644 --- a/mcs/class/corlib/System.Security.Permissions/ChangeLog +++ b/mcs/class/corlib/System.Security.Permissions/ChangeLog @@ -1,3 +1,58 @@ +2003-12-29 Sebastien Pouliot <spouliot@videotron.ca> + + * EnvironmentPermission.cs: Fixed return value to match unit tests. + * EnvironmentPermissionAttribute.cs: Updated CreatePermission for + Unrestricted permission. Updated AttributeUsage using 1.2 documentation. + * FileDialogPermissionAttribute.cs: Updated CreatePermission for + Unrestricted permission. Updated AttributeUsage using 1.2 documentation. + * FileIOPermissionAttribute.cs: Updated CreatePermission for + Unrestricted permission. Updated AttributeUsage using 1.2 documentation. + * IsolatedStorageFilePermissionAttribute.cs: Implemented + CreatePermission method. Updated AttributeUsage using 1.2 documentation. + * IsolatedStoragePermissionAttribute.cs: Updated AttributeUsage using + 1.2 documentation. + * PermissionSetAttribute.cs: Prepared CreatePermissionSet. Updated + AttributeUsage using 1.2 documentation. + * PrincipalPermissionAttribute.cs: Updated CreatePermission for + Unrestricted permission. Fixed AttributeUsage (more limited than others). + * PublisherIdentityPermissionAttribute.cs: Updated CreatePermission to + throw ArgumentException for Unrestricted permission. Updated + AttributeUsage using 1.2 documentation. + * ReflectionPermissionAttribute.cs: Updated CreatePermission for + Unrestricted permission. Updated AttributeUsage using 1.2 documentation. + * RegistryPermission.cs: Implemented IsUnrestricted for unit tests. + * RegistryPermissionAttribute.cs: Implemented CreatePermission method. + Updated AttributeUsage using 1.2 documentation. + * SecurityAttribute.cs: m_Action is now assigned in constructor. + * SecurityPermission.cs: Completed class. + * SecurityPermissionAttribute.cs: Updated CreatePermission for + Unrestricted permission. Added missing [Serializable] attribute and + UnmanagedCode property. Changed -= to &= to preserve flags (e.g. + setting a flags to false more than one time). + * SecurityPermissionFlag.cs: Cleanup unused XML tags. + * SiteIdentityPermission.cs: Fixed exception for constructor and Site + property to match unit tests. + * SiteIdentityPermissionAttribute.cs: Updated CreatePermission for + Unrestricted permission. Updated AttributeUsage using 1.2 documentation. + * StrongNameIdentityPermission.cs: Fixed default values for Name and + Version to match unit tests. + * StrongNamePermissionAttribute.cs: Updated CreatePermission to + throw ArgumentException for Unrestricted permission. Updated + AttributeUsage using 1.2 documentation. + * UIPermission.cs: Fixed default values in constructor to match unit + tests. + * UIPermissionAttribute.cs: Updated CreatePermission to throw + ArgumentException for Unrestricted permission. Fixed strange case for + null URL. Updated AttributeUsage using 1.2 documentation. + * UrlIdentityPermission.cs: Url property now throws an exception to + match unit tests. + * UrlIdentityPermissionAttribute.cs: Updated CreatePermission to throw + ArgumentException for Unrestricted permission. Updated AttributeUsage + using 1.2 documentation. + * ZoneIdentityPermissionAttribute.cs: Updated CreatePermission to throw + ArgumentException for Unrestricted permission. Updated AttributeUsage + using 1.2 documentation. + 2003-08-05 Duncan Mak <duncan@ximian.com> * FileIOPermission.cs (GetTokenIndex): Add implementation for diff --git a/mcs/class/corlib/System.Security.Permissions/EnvironmentPermission.cs b/mcs/class/corlib/System.Security.Permissions/EnvironmentPermission.cs index 2e0ea8bb10f..175251958ef 100644 --- a/mcs/class/corlib/System.Security.Permissions/EnvironmentPermission.cs +++ b/mcs/class/corlib/System.Security.Permissions/EnvironmentPermission.cs @@ -152,7 +152,7 @@ namespace System.Security.Permissions { int n = result.Length; if (n > 0) return result.Substring (0, n - 1); - return null; + return ((_state == PermissionState.Unrestricted) ? String.Empty : null); } public override IPermission Intersect (IPermission target) diff --git a/mcs/class/corlib/System.Security.Permissions/EnvironmentPermissionAttribute.cs b/mcs/class/corlib/System.Security.Permissions/EnvironmentPermissionAttribute.cs index 2b541f5c105..036928b52cf 100644 --- a/mcs/class/corlib/System.Security.Permissions/EnvironmentPermissionAttribute.cs +++ b/mcs/class/corlib/System.Security.Permissions/EnvironmentPermissionAttribute.cs @@ -10,13 +10,12 @@ // using System; -using System.Security.Permissions; namespace System.Security.Permissions { [AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Constructor | - AttributeTargets.Method)] + AttributeTargets.Method, AllowMultiple=true, Inherited=false)] [Serializable] public sealed class EnvironmentPermissionAttribute : CodeAccessSecurityAttribute { @@ -51,12 +50,17 @@ namespace System.Security.Permissions { // Methods public override IPermission CreatePermission () { - EnvironmentPermission p = new EnvironmentPermission (PermissionState.None); - if (read != null) - p.AddPathList (EnvironmentPermissionAccess.Read, read); - if (write != null) - p.AddPathList (EnvironmentPermissionAccess.Write, write); - return p; + EnvironmentPermission perm = null; + if (this.Unrestricted) + perm = new EnvironmentPermission (PermissionState.Unrestricted); + else { + perm = new EnvironmentPermission (PermissionState.None); + if (read != null) + perm.AddPathList (EnvironmentPermissionAccess.Read, read); + if (write != null) + perm.AddPathList (EnvironmentPermissionAccess.Write, write); + } + return perm; } } } diff --git a/mcs/class/corlib/System.Security.Permissions/FileDialogPermissionAttribute.cs b/mcs/class/corlib/System.Security.Permissions/FileDialogPermissionAttribute.cs index b67607b7827..90939160d8e 100644 --- a/mcs/class/corlib/System.Security.Permissions/FileDialogPermissionAttribute.cs +++ b/mcs/class/corlib/System.Security.Permissions/FileDialogPermissionAttribute.cs @@ -10,13 +10,12 @@ // using System; -using System.Security.Permissions; namespace System.Security.Permissions { [AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Constructor | - AttributeTargets.Method)] + AttributeTargets.Method, AllowMultiple=true, Inherited=false)] [Serializable] public sealed class FileDialogPermissionAttribute : CodeAccessSecurityAttribute { @@ -41,12 +40,18 @@ namespace System.Security.Permissions { // Methods public override IPermission CreatePermission () { - FileDialogPermissionAccess access = FileDialogPermissionAccess.None; - if (canOpen) - access |= FileDialogPermissionAccess.Open; - if (canSave) - access |= FileDialogPermissionAccess.Save; - return new FileDialogPermission (access); + FileDialogPermission perm = null; + if (this.Unrestricted) + perm = new FileDialogPermission (PermissionState.Unrestricted); + else { + FileDialogPermissionAccess access = FileDialogPermissionAccess.None; + if (canOpen) + access |= FileDialogPermissionAccess.Open; + if (canSave) + access |= FileDialogPermissionAccess.Save; + perm = new FileDialogPermission (access); + } + return perm; } } } diff --git a/mcs/class/corlib/System.Security.Permissions/FileIOPermissionAttribute.cs b/mcs/class/corlib/System.Security.Permissions/FileIOPermissionAttribute.cs index 76f8785278f..a16b1656e47 100644 --- a/mcs/class/corlib/System.Security.Permissions/FileIOPermissionAttribute.cs +++ b/mcs/class/corlib/System.Security.Permissions/FileIOPermissionAttribute.cs @@ -10,13 +10,12 @@ // using System; -using System.Security.Permissions; namespace System.Security.Permissions { [AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Constructor | - AttributeTargets.Method)] + AttributeTargets.Method, AllowMultiple=true, Inherited=false)] [Serializable] public sealed class FileIOPermissionAttribute : CodeAccessSecurityAttribute { @@ -70,16 +69,21 @@ namespace System.Security.Permissions { // Methods public override IPermission CreatePermission () { - FileIOPermission p = new FileIOPermission (PermissionState.None); - if (append != null) - p.AddPathList (FileIOPermissionAccess.Append, append); - if (path != null) - p.AddPathList (FileIOPermissionAccess.PathDiscovery, path); - if (read != null) - p.AddPathList (FileIOPermissionAccess.Read, read); - if (write != null) - p.AddPathList (FileIOPermissionAccess.Write, write); - return p; + FileIOPermission perm = null; + if (this.Unrestricted) + perm = new FileIOPermission (PermissionState.Unrestricted); + else { + perm = new FileIOPermission (PermissionState.None); + if (append != null) + perm.AddPathList (FileIOPermissionAccess.Append, append); + if (path != null) + perm.AddPathList (FileIOPermissionAccess.PathDiscovery, path); + if (read != null) + perm.AddPathList (FileIOPermissionAccess.Read, read); + if (write != null) + perm.AddPathList (FileIOPermissionAccess.Write, write); + } + return perm; } } } diff --git a/mcs/class/corlib/System.Security.Permissions/IsolatedStorageFilePermissionAttribute.cs b/mcs/class/corlib/System.Security.Permissions/IsolatedStorageFilePermissionAttribute.cs index a9a879f06fc..691701c844b 100644 --- a/mcs/class/corlib/System.Security.Permissions/IsolatedStorageFilePermissionAttribute.cs +++ b/mcs/class/corlib/System.Security.Permissions/IsolatedStorageFilePermissionAttribute.cs @@ -1,20 +1,21 @@ // // System.Security.Permissions.IsolatedStorageFilePermissionAttribute.cs // -// Duncan Mak <duncan@ximian.com> +// Authors +// Duncan Mak <duncan@ximian.com> +// Sebastien Pouliot (spouliot@motus.com) // // (C) 2002 Ximian, Inc. http://www.ximian.com +// Portions (C) 2002 Motus Technologies Inc. (http://www.motus.com) // using System; -using System.Security.Permissions; -namespace System.Security.Permissions -{ +namespace System.Security.Permissions { [AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Constructor | - AttributeTargets.Method)] + AttributeTargets.Method, AllowMultiple=true, Inherited=false)] [Serializable] public sealed class IsolatedStorageFilePermissionAttribute : IsolatedStoragePermissionAttribute { @@ -25,10 +26,17 @@ namespace System.Security.Permissions } // Methods - [MonoTODO] public override IPermission CreatePermission () { - return null; + IsolatedStorageFilePermission perm = null; + if (this.Unrestricted) + perm = new IsolatedStorageFilePermission (PermissionState.Unrestricted); + else { + perm = new IsolatedStorageFilePermission (PermissionState.None); + perm.UsageAllowed = this.UsageAllowed; + perm.UserQuota = this.UserQuota; + } + return perm; } } } diff --git a/mcs/class/corlib/System.Security.Permissions/IsolatedStoragePermissionAttribute.cs b/mcs/class/corlib/System.Security.Permissions/IsolatedStoragePermissionAttribute.cs index c6da340b529..c99c088ccc4 100644 --- a/mcs/class/corlib/System.Security.Permissions/IsolatedStoragePermissionAttribute.cs +++ b/mcs/class/corlib/System.Security.Permissions/IsolatedStoragePermissionAttribute.cs @@ -1,39 +1,38 @@ -//
-// System.Security.Permissions.IsolatedStoragePermissionAttributes.cs
-//
-// Author:
-// Dan Lewis (dihlewis@yahoo.co.uk)
-//
-// (C) 2002
-//
-
-using System;
-using System.Security.Permissions;
-
-namespace System.Security.Permissions {
-
- [AttributeUsage ( AttributeTargets.Assembly | AttributeTargets.Class |
- AttributeTargets.Struct | AttributeTargets.Constructor |
- AttributeTargets.Method)]
- [Serializable]
- public abstract class IsolatedStoragePermissionAttribute : CodeAccessSecurityAttribute {
-
- public IsolatedStoragePermissionAttribute (SecurityAction action) : base (action) {
- }
-
- public IsolatedStorageContainment UsageAllowed {
- get { return usage_allowed; }
- set { usage_allowed = value; }
- }
-
- public long UserQuota {
- get { return user_quota; }
- set { user_quota = value; }
- }
-
- // private
-
- private IsolatedStorageContainment usage_allowed;
- private long user_quota;
- }
-}
+// +// System.Security.Permissions.IsolatedStoragePermissionAttributes.cs +// +// Author: +// Dan Lewis (dihlewis@yahoo.co.uk) +// +// (C) 2002 +// + +using System; + +namespace System.Security.Permissions { + + [AttributeUsage ( AttributeTargets.Assembly | AttributeTargets.Class | + AttributeTargets.Struct | AttributeTargets.Constructor | + AttributeTargets.Method, AllowMultiple=true, Inherited=false)] + [Serializable] + public abstract class IsolatedStoragePermissionAttribute : CodeAccessSecurityAttribute { + + public IsolatedStoragePermissionAttribute (SecurityAction action) : base (action) { + } + + public IsolatedStorageContainment UsageAllowed { + get { return usage_allowed; } + set { usage_allowed = value; } + } + + public long UserQuota { + get { return user_quota; } + set { user_quota = value; } + } + + // private + + private IsolatedStorageContainment usage_allowed; + private long user_quota; + } +} diff --git a/mcs/class/corlib/System.Security.Permissions/PermissionSetAttribute.cs b/mcs/class/corlib/System.Security.Permissions/PermissionSetAttribute.cs index ee654f7e00b..2d91a1dd10d 100644 --- a/mcs/class/corlib/System.Security.Permissions/PermissionSetAttribute.cs +++ b/mcs/class/corlib/System.Security.Permissions/PermissionSetAttribute.cs @@ -7,16 +7,15 @@ // using System; -using System.Security.Permissions; -namespace System.Security.Permissions -{ +namespace System.Security.Permissions { + [AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Constructor | - AttributeTargets.Method)] + AttributeTargets.Method, AllowMultiple=true, Inherited=false)] [Serializable] - public sealed class PermissionSetAttribute : CodeAccessSecurityAttribute - { + public sealed class PermissionSetAttribute : CodeAccessSecurityAttribute { + // Fields private string file; private string name; @@ -52,7 +51,7 @@ namespace System.Security.Permissions { get { return xml; } set { xml = value; } - } + } // Methods public override IPermission CreatePermission () @@ -63,7 +62,19 @@ namespace System.Security.Permissions [MonoTODO] public PermissionSet CreatePermissionSet () { - return null; + PermissionSet pset = null; + if (this.Unrestricted) + pset = new PermissionSet (PermissionState.Unrestricted); + else { + pset = new PermissionSet (PermissionState.None); + if (name != null) { + } + else if (file != null) { + } + else if (xml != null) { + } + } + return pset; } } } diff --git a/mcs/class/corlib/System.Security.Permissions/PrincipalPermissionAttribute.cs b/mcs/class/corlib/System.Security.Permissions/PrincipalPermissionAttribute.cs index 85dcca5faf9..bd7609488c4 100644 --- a/mcs/class/corlib/System.Security.Permissions/PrincipalPermissionAttribute.cs +++ b/mcs/class/corlib/System.Security.Permissions/PrincipalPermissionAttribute.cs @@ -7,13 +7,10 @@ // using System; -using System.Security.Permissions; namespace System.Security.Permissions { - [AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class | - AttributeTargets.Struct | AttributeTargets.Constructor | - AttributeTargets.Method)] + [AttributeUsage (AttributeTargets.Class | AttributeTargets.Method, AllowMultiple=true, Inherited=false)] [Serializable] public sealed class PrincipalPermissionAttribute : CodeAccessSecurityAttribute { @@ -26,6 +23,7 @@ namespace System.Security.Permissions { public PrincipalPermissionAttribute (SecurityAction action) : base (action) { + authenticated = true; // strange but true ;) } // Properties @@ -50,7 +48,12 @@ namespace System.Security.Permissions { // Method public override IPermission CreatePermission () { - return new PrincipalPermission (name, role, authenticated); + PrincipalPermission perm = null; + if (this.Unrestricted) + perm = new PrincipalPermission (PermissionState.Unrestricted); + else + perm = new PrincipalPermission (name, role, authenticated); + return perm; } } } diff --git a/mcs/class/corlib/System.Security.Permissions/PublisherIdentityPermissionAttribute.cs b/mcs/class/corlib/System.Security.Permissions/PublisherIdentityPermissionAttribute.cs index 3d516dd5899..998c20a3e81 100644 --- a/mcs/class/corlib/System.Security.Permissions/PublisherIdentityPermissionAttribute.cs +++ b/mcs/class/corlib/System.Security.Permissions/PublisherIdentityPermissionAttribute.cs @@ -8,14 +8,13 @@ // using System; -using System.Security.Permissions; using System.Security.Cryptography.X509Certificates; namespace System.Security.Permissions { [AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Constructor | - AttributeTargets.Method)] + AttributeTargets.Method, AllowMultiple=true, Inherited=false)] [Serializable] public sealed class PublisherIdentityPermissionAttribute : CodeAccessSecurityAttribute { @@ -53,6 +52,9 @@ namespace System.Security.Permissions { public override IPermission CreatePermission () { + if (this.Unrestricted) + throw new ArgumentException ("Unsupported PermissionState.Unrestricted"); + X509Certificate x509 = null; if (x509data != null) { byte[] rawcert = new byte [x509data.Length >> 1]; diff --git a/mcs/class/corlib/System.Security.Permissions/ReflectionPermissionAttribute.cs b/mcs/class/corlib/System.Security.Permissions/ReflectionPermissionAttribute.cs index c17667b7ed7..9c9ef24c397 100644 --- a/mcs/class/corlib/System.Security.Permissions/ReflectionPermissionAttribute.cs +++ b/mcs/class/corlib/System.Security.Permissions/ReflectionPermissionAttribute.cs @@ -10,13 +10,12 @@ // using System; -using System.Security.Permissions; namespace System.Security.Permissions { [AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Constructor | - AttributeTargets.Method)] + AttributeTargets.Method, AllowMultiple=true, Inherited=false)] [Serializable] public sealed class ReflectionPermissionAttribute : CodeAccessSecurityAttribute { @@ -80,7 +79,12 @@ namespace System.Security.Permissions { // Methods public override IPermission CreatePermission () { - return new ReflectionPermission (flags); + ReflectionPermission perm = null; + if (this.Unrestricted) + perm = new ReflectionPermission (PermissionState.Unrestricted); + else + perm = new ReflectionPermission (flags); + return perm; } } } diff --git a/mcs/class/corlib/System.Security.Permissions/RegistryPermission.cs b/mcs/class/corlib/System.Security.Permissions/RegistryPermission.cs index 8a81942ba38..068296ad2d1 100644 --- a/mcs/class/corlib/System.Security.Permissions/RegistryPermission.cs +++ b/mcs/class/corlib/System.Security.Permissions/RegistryPermission.cs @@ -16,6 +16,7 @@ namespace System.Security.Permissions { public sealed class RegistryPermission : CodeAccessPermission, IUnrestrictedPermission, IBuiltInPermission { + private PermissionState _state; private RegistryPermissionAccess _access; private string _pathList; @@ -23,10 +24,13 @@ namespace System.Security.Permissions { public RegistryPermission (PermissionState state) { + _state = state; } public RegistryPermission (RegistryPermissionAccess access, string pathList) { + _state = PermissionState.None; + AddPathList (access, pathList); } // Properties @@ -41,6 +45,16 @@ namespace System.Security.Permissions { [MonoTODO] public string GetPathList (RegistryPermissionAccess access) { + switch (access) { + case RegistryPermissionAccess.Create: + break; + case RegistryPermissionAccess.Read: + break; + case RegistryPermissionAccess.Write: + break; + default: + throw new ArgumentException ("Invalid flag"); + } return null; } @@ -101,10 +115,9 @@ namespace System.Security.Permissions { return false; } - [MonoTODO] public bool IsUnrestricted () { - return false; + return (_state == PermissionState.Unrestricted); } public override SecurityElement ToXml () diff --git a/mcs/class/corlib/System.Security.Permissions/RegistryPermissionAttribute.cs b/mcs/class/corlib/System.Security.Permissions/RegistryPermissionAttribute.cs index ce8fc5a8e3c..18c3dfcb283 100644 --- a/mcs/class/corlib/System.Security.Permissions/RegistryPermissionAttribute.cs +++ b/mcs/class/corlib/System.Security.Permissions/RegistryPermissionAttribute.cs @@ -1,24 +1,25 @@ // // System.Security.Permissions.RegistryPermissionAttribute.cs // -// Duncan Mak <duncan@ximian.com> +// Authors +// Duncan Mak <duncan@ximian.com> +// Sebastien Pouliot <spouliot@motus.com> // // (C) 2002 Ximian, Inc. http://www.ximian.com +// Portions Copyright (C) 2003 Motus Technologies (http://www.motus.com) // using System; -using System.Security.Permissions; -namespace System.Security.Permissions -{ +namespace System.Security.Permissions { + [AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Constructor | - AttributeTargets.Method)] + AttributeTargets.Method, AllowMultiple=true, Inherited=false)] [Serializable] - public sealed class RegistryPermissionAttribute : CodeAccessSecurityAttribute - { + public sealed class RegistryPermissionAttribute : CodeAccessSecurityAttribute { + // Fields - private string all; private string create; private string read; private string write; @@ -29,8 +30,14 @@ namespace System.Security.Permissions // Properties public string All { - set { all = value; } - get { return all; } +#if ! NET_1_0 + get { throw new NotSupportedException ("All"); } +#endif + set { + create = value; + read = value; + write = value; + } } public string Create @@ -52,10 +59,21 @@ namespace System.Security.Permissions } // Methods - [MonoTODO] public override IPermission CreatePermission () { - return null; + RegistryPermission perm = null; + if (this.Unrestricted) + perm = new RegistryPermission (PermissionState.Unrestricted); + else { + perm = new RegistryPermission (PermissionState.None); + if (create != null) + perm.AddPathList (RegistryPermissionAccess.Create, create); + if (read != null) + perm.AddPathList (RegistryPermissionAccess.Read, read); + if (write != null) + perm.AddPathList (RegistryPermissionAccess.Write, write); + } + return perm; } } } diff --git a/mcs/class/corlib/System.Security.Permissions/SecurityAttribute.cs b/mcs/class/corlib/System.Security.Permissions/SecurityAttribute.cs index d914835f140..b1844508118 100644 --- a/mcs/class/corlib/System.Security.Permissions/SecurityAttribute.cs +++ b/mcs/class/corlib/System.Security.Permissions/SecurityAttribute.cs @@ -1,59 +1,60 @@ -//------------------------------------------------------------------------------
-//
-// System.Security.Permissions.SecurityPermissionAttribute.cs
-//
-// Copyright (C) 2001 Nick Drochak, All Rights Reserved
-//
-// Author: Nick Drochak, ndrochak@gol.com
-// Created: 2002-01-06
-//
-//------------------------------------------------------------------------------
-
-using System;
-using System.Security;
-using System.Security.Permissions;
-
-namespace System.Security.Permissions {
- [System.AttributeUsage(
- System.AttributeTargets.Assembly
- | System.AttributeTargets.Class
- | System.AttributeTargets.Struct
- | System.AttributeTargets.Constructor
- | System.AttributeTargets.Method,
- AllowMultiple=true,
- Inherited=false)
- ]
-
- [Serializable]
- public abstract class SecurityAttribute : Attribute {
-
- private SecurityAction m_Action;
- private bool m_Unrestricted;
-
- public SecurityAttribute(SecurityAction action) {
- if (!SecurityAction.IsDefined(typeof(SecurityAction), action)) {
- throw new System.ArgumentException();
- }
- }
-
- public abstract IPermission CreatePermission();
-
- public bool Unrestricted {
- get {
- return m_Unrestricted;
- }
- set {
- m_Unrestricted = value;
- }
- }
-
- public SecurityAction Action {
- get {
- return m_Action;
- }
- set {
- m_Action = value;
- }
- }
- } // public abstract class SecurityAttribute
-} // namespace System.Security.Permissions
+//------------------------------------------------------------------------------ +// +// System.Security.Permissions.SecurityAttribute.cs +// +// Copyright (C) 2001 Nick Drochak, All Rights Reserved +// +// Author: Nick Drochak, ndrochak@gol.com +// Created: 2002-01-06 +// +//------------------------------------------------------------------------------ + +using System; +using System.Security; + +namespace System.Security.Permissions { + [System.AttributeUsage( + System.AttributeTargets.Assembly + | System.AttributeTargets.Class + | System.AttributeTargets.Struct + | System.AttributeTargets.Constructor + | System.AttributeTargets.Method, + AllowMultiple=true, + Inherited=false) + ] + + [Serializable] + public abstract class SecurityAttribute : Attribute { + + private SecurityAction m_Action; + private bool m_Unrestricted; + + public SecurityAttribute (SecurityAction action) + { + Action = action; + } + + public abstract IPermission CreatePermission (); + + public bool Unrestricted { + get { + return m_Unrestricted; + } + set { + m_Unrestricted = value; + } + } + + public SecurityAction Action { + get { + return m_Action; + } + set { + if (!SecurityAction.IsDefined(typeof(SecurityAction), value)) { + throw new System.ArgumentException(); + } + m_Action = value; + } + } + } // public abstract class SecurityAttribute +} // namespace System.Security.Permissions diff --git a/mcs/class/corlib/System.Security.Permissions/SecurityPermission.cs b/mcs/class/corlib/System.Security.Permissions/SecurityPermission.cs index 26175e7cb36..265684848b5 100644 --- a/mcs/class/corlib/System.Security.Permissions/SecurityPermission.cs +++ b/mcs/class/corlib/System.Security.Permissions/SecurityPermission.cs @@ -1,17 +1,16 @@ // // System.Security.Permissions.SecurityPermission.cs // -// Author: -// Dan Lewis (dihlewis@yahoo.co.uk) +// Authors: +// Dan Lewis (dihlewis@yahoo.co.uk) +// Sebastien Pouliot (spouliot@motus.com) // // (C) 2002 -// -// Stubbed. +// Portions (C) 2003 Motus Technologies Inc. (http://www.motus.com) // using System; using System.Globalization; -using System.Security.Permissions; namespace System.Security.Permissions { @@ -19,10 +18,16 @@ namespace System.Security.Permissions { public sealed class SecurityPermission : CodeAccessPermission, IUnrestrictedPermission, IBuiltInPermission { - [MonoTODO] - public SecurityPermission (PermissionState state) + private SecurityPermissionFlag flags; + + // constructors + + public SecurityPermission (PermissionState state) { - this.flags = SecurityPermissionFlag.NoFlags; + if (state == PermissionState.Unrestricted) + flags = SecurityPermissionFlag.AllFlags; + else + flags = SecurityPermissionFlag.NoFlags; } public SecurityPermission (SecurityPermissionFlag flags) @@ -35,10 +40,9 @@ namespace System.Security.Permissions { set { flags = value; } } - [MonoTODO] public bool IsUnrestricted () { - return false; + return (flags == SecurityPermissionFlag.AllFlags); } public override IPermission Copy () @@ -46,22 +50,53 @@ namespace System.Security.Permissions { return new SecurityPermission (flags); } - [MonoTODO] + internal SecurityPermission Cast (IPermission target) + { + SecurityPermission perm = (target as SecurityPermission); + if (perm == null) + throw new ArgumentException ("wrong type for target"); + return perm; + } + public override IPermission Intersect (IPermission target) { - return null; + if (target == null) + return null; + + SecurityPermission perm = Cast (target); + if (this.IsUnrestricted () && perm.IsUnrestricted ()) + return new SecurityPermission (PermissionState.Unrestricted); + if (this.IsUnrestricted ()) + return perm.Copy (); + if (perm.IsUnrestricted ()) + return this.Copy (); + return new SecurityPermission (flags & perm.flags); } - [MonoTODO] public override IPermission Union (IPermission target) { - return null; + if (target == null) + return this.Copy (); + + SecurityPermission perm = Cast (target); + if (this.IsUnrestricted () || perm.IsUnrestricted ()) + return new SecurityPermission (PermissionState.Unrestricted); + + return new SecurityPermission (flags | perm.flags); } - [MonoTODO] public override bool IsSubsetOf (IPermission target) { - return false; + if (target == null) + return (flags == SecurityPermissionFlag.NoFlags); + + SecurityPermission perm = Cast (target); + if (perm.IsUnrestricted ()) + return true; + if (this.IsUnrestricted ()) + return false; + + return ((flags & ~perm.flags) == 0); } public override void FromXml (SecurityElement e) @@ -93,10 +128,6 @@ namespace System.Security.Permissions { return e; } - // private - - private SecurityPermissionFlag flags; - // IBuiltInPermission int IBuiltInPermission.GetTokenIndex () { diff --git a/mcs/class/corlib/System.Security.Permissions/SecurityPermissionAttribute.cs b/mcs/class/corlib/System.Security.Permissions/SecurityPermissionAttribute.cs index 868b199f267..c09437208a3 100644 --- a/mcs/class/corlib/System.Security.Permissions/SecurityPermissionAttribute.cs +++ b/mcs/class/corlib/System.Security.Permissions/SecurityPermissionAttribute.cs @@ -1,216 +1,235 @@ -//------------------------------------------------------------------------------
-//
-// System.Security.Permissions.SecurityPermissionAttribute.cs
-//
-// Copyright (C) 2001 Nick Drochak, All Rights Reserved
-//
-// Author: Nick Drochak, ndrochak@gol.com
-// Created: 2002-01-06
-//
-//------------------------------------------------------------------------------
-
-using System;
-using System.Security;
-using System.Security.Permissions;
-
-namespace System.Security.Permissions {
- [System.AttributeUsage(
- System.AttributeTargets.Assembly
- | System.AttributeTargets.Class
- | System.AttributeTargets.Struct
- | System.AttributeTargets.Constructor
- | System.AttributeTargets.Method,
- AllowMultiple=true,
- Inherited=false)
- ]
- public sealed class SecurityPermissionAttribute : CodeAccessSecurityAttribute {
- private SecurityPermissionFlag m_Flags = SecurityPermissionFlag.NoFlags;
-
- public SecurityPermissionAttribute(SecurityAction action) : base(action) {
- if (!SecurityAction.IsDefined(typeof(SecurityAction), action)) {
- throw new System.ArgumentException();
- }
- }
-
- public bool Assertion {
- get{
- return ((m_Flags & SecurityPermissionFlag.Assertion) != 0);
- }
- set{
- if (value){
- m_Flags |= SecurityPermissionFlag.Assertion;
- }
- else{
- m_Flags -= SecurityPermissionFlag.Assertion;
- }
- }
- }
-
- public bool ControlAppDomain {
- get{
- return ((m_Flags & SecurityPermissionFlag.ControlAppDomain) != 0);
- }
- set{
- if (value){
- m_Flags |= SecurityPermissionFlag.ControlAppDomain;
- }
- else{
- m_Flags -= SecurityPermissionFlag.ControlAppDomain;
- }
- }
- }
-
- public bool ControlDomainPolicy {
- get{
- return ((m_Flags & SecurityPermissionFlag.ControlDomainPolicy) != 0);
- }
- set{
- if (value){
- m_Flags |= SecurityPermissionFlag.ControlDomainPolicy;
- }
- else{
- m_Flags -= SecurityPermissionFlag.ControlDomainPolicy;
- }
- }
- }
-
- public bool ControlEvidence {
- get{
- return ((m_Flags & SecurityPermissionFlag.ControlEvidence) != 0);
- }
- set{
- if (value){
- m_Flags |= SecurityPermissionFlag.ControlEvidence;
- }
- else{
- m_Flags -= SecurityPermissionFlag.ControlEvidence;
- }
- }
- }
-
- public bool ControlPolicy {
- get{
- return ((m_Flags & SecurityPermissionFlag.ControlPolicy) != 0);
- }
- set{
- if (value){
- m_Flags |= SecurityPermissionFlag.ControlPolicy;
- }
- else{
- m_Flags -= SecurityPermissionFlag.ControlPolicy;
- }
- }
- }
-
- public bool ControlPrincipal {
- get{
- return ((m_Flags & SecurityPermissionFlag.ControlPrincipal) != 0);
- }
- set{
- if (value){
- m_Flags |= SecurityPermissionFlag.ControlPrincipal;
- }
- else{
- m_Flags -= SecurityPermissionFlag.ControlPrincipal;
- }
- }
- }
-
- public bool ControlThread {
- get{
- return ((m_Flags & SecurityPermissionFlag.ControlThread) != 0);
- }
- set{
- if (value){
- m_Flags |= SecurityPermissionFlag.ControlThread;
- }
- else{
- m_Flags -= SecurityPermissionFlag.ControlThread;
- }
- }
- }
-
- public bool Execution {
- get{
- return ((m_Flags & SecurityPermissionFlag.Execution) != 0);
- }
- set{
- if (value){
- m_Flags |= SecurityPermissionFlag.Execution;
- }
- else{
- m_Flags -= SecurityPermissionFlag.Execution;
- }
- }
- }
-
- public bool Infrastructure {
- get{
- return ((m_Flags & SecurityPermissionFlag.Infrastructure) != 0);
- }
- set{
- if (value){
- m_Flags |= SecurityPermissionFlag.Infrastructure;
- }
- else{
- m_Flags -= SecurityPermissionFlag.Infrastructure;
- }
- }
- }
-
- public bool RemotingConfiguration {
- get{
- return ((m_Flags & SecurityPermissionFlag.RemotingConfiguration) != 0);
- }
- set{
- if (value){
- m_Flags |= SecurityPermissionFlag.RemotingConfiguration;
- }
- else{
- m_Flags -= SecurityPermissionFlag.RemotingConfiguration;
- }
- }
- }
-
- public bool SerializationFormatter {
- get{
- return ((m_Flags & SecurityPermissionFlag.SerializationFormatter) != 0);
- }
- set{
- if (value){
- m_Flags |= SecurityPermissionFlag.SerializationFormatter;
- }
- else{
- m_Flags -= SecurityPermissionFlag.SerializationFormatter;
- }
- }
- }
-
- public bool SkipVerification {
- get{
- return ((m_Flags & SecurityPermissionFlag.SkipVerification) != 0);
- }
- set{
- if (value){
- m_Flags |= SecurityPermissionFlag.SkipVerification;
- }
- else{
- m_Flags -= SecurityPermissionFlag.SkipVerification;
- }
- }
- }
-
- public override IPermission CreatePermission() {
- return new SecurityPermission(m_Flags);
- }
-
- public SecurityPermissionFlag Flags {
- get {
- return m_Flags;
- }
- set {
- m_Flags = value;
- }
- }
- } // public sealed class SecurityPermissionAttribute
-} // namespace System.Security.Permissions
+//------------------------------------------------------------------------------ +// +// System.Security.Permissions.SecurityPermissionAttribute.cs +// +// Copyright (C) 2001 Nick Drochak, All Rights Reserved +// +// Author: Nick Drochak, ndrochak@gol.com +// Created: 2002-01-06 +// +//------------------------------------------------------------------------------ + +using System; +using System.Security; + +namespace System.Security.Permissions { + [System.AttributeUsage( + System.AttributeTargets.Assembly + | System.AttributeTargets.Class + | System.AttributeTargets.Struct + | System.AttributeTargets.Constructor + | System.AttributeTargets.Method, + AllowMultiple=true, + Inherited=false) + ] + [Serializable] + public sealed class SecurityPermissionAttribute : CodeAccessSecurityAttribute { + private SecurityPermissionFlag m_Flags; + + public SecurityPermissionAttribute (SecurityAction action) : base(action) + { + m_Flags = SecurityPermissionFlag.NoFlags; + } + + public bool Assertion { + get { + return ((m_Flags & SecurityPermissionFlag.Assertion) != 0); + } + set { + if (value) { + m_Flags |= SecurityPermissionFlag.Assertion; + } + else{ + m_Flags &= SecurityPermissionFlag.Assertion; + } + } + } + + public bool ControlAppDomain { + get { + return ((m_Flags & SecurityPermissionFlag.ControlAppDomain) != 0); + } + set { + if (value) { + m_Flags |= SecurityPermissionFlag.ControlAppDomain; + } + else { + m_Flags &= SecurityPermissionFlag.ControlAppDomain; + } + } + } + + public bool ControlDomainPolicy { + get { + return ((m_Flags & SecurityPermissionFlag.ControlDomainPolicy) != 0); + } + set { + if (value) { + m_Flags |= SecurityPermissionFlag.ControlDomainPolicy; + } + else { + m_Flags &= SecurityPermissionFlag.ControlDomainPolicy; + } + } + } + + public bool ControlEvidence { + get { + return ((m_Flags & SecurityPermissionFlag.ControlEvidence) != 0); + } + set { + if (value) { + m_Flags |= SecurityPermissionFlag.ControlEvidence; + } + else { + m_Flags &= SecurityPermissionFlag.ControlEvidence; + } + } + } + + public bool ControlPolicy { + get { + return ((m_Flags & SecurityPermissionFlag.ControlPolicy) != 0); + } + set { + if (value) { + m_Flags |= SecurityPermissionFlag.ControlPolicy; + } + else { + m_Flags &= SecurityPermissionFlag.ControlPolicy; + } + } + } + + public bool ControlPrincipal { + get { + return ((m_Flags & SecurityPermissionFlag.ControlPrincipal) != 0); + } + set { + if (value) { + m_Flags |= SecurityPermissionFlag.ControlPrincipal; + } + else { + m_Flags &= SecurityPermissionFlag.ControlPrincipal; + } + } + } + + public bool ControlThread { + get { + return ((m_Flags & SecurityPermissionFlag.ControlThread) != 0); + } + set { + if (value) { + m_Flags |= SecurityPermissionFlag.ControlThread; + } + else { + m_Flags &= SecurityPermissionFlag.ControlThread; + } + } + } + + public bool Execution { + get { + return ((m_Flags & SecurityPermissionFlag.Execution) != 0); + } + set { + if (value) { + m_Flags |= SecurityPermissionFlag.Execution; + } + else { + m_Flags &= SecurityPermissionFlag.Execution; + } + } + } + + public bool Infrastructure { + get { + return ((m_Flags & SecurityPermissionFlag.Infrastructure) != 0); + } + set { + if (value) { + m_Flags |= SecurityPermissionFlag.Infrastructure; + } + else { + m_Flags &= SecurityPermissionFlag.Infrastructure; + } + } + } + + public bool RemotingConfiguration { + get { + return ((m_Flags & SecurityPermissionFlag.RemotingConfiguration) != 0); + } + set { + if (value) { + m_Flags |= SecurityPermissionFlag.RemotingConfiguration; + } + else { + m_Flags &= SecurityPermissionFlag.RemotingConfiguration; + } + } + } + + public bool SerializationFormatter { + get { + return ((m_Flags & SecurityPermissionFlag.SerializationFormatter) != 0); + } + set { + if (value) { + m_Flags |= SecurityPermissionFlag.SerializationFormatter; + } + else { + m_Flags &= SecurityPermissionFlag.SerializationFormatter; + } + } + } + + public bool SkipVerification { + get { + return ((m_Flags & SecurityPermissionFlag.SkipVerification) != 0); + } + set { + if (value) { + m_Flags |= SecurityPermissionFlag.SkipVerification; + } + else { + m_Flags &= SecurityPermissionFlag.SkipVerification; + } + } + } + + public bool UnmanagedCode { + get { + return ((m_Flags & SecurityPermissionFlag.UnmanagedCode) != 0); + } + set { + if (value) { + m_Flags |= SecurityPermissionFlag.UnmanagedCode; + } + else { + m_Flags &= SecurityPermissionFlag.UnmanagedCode; + } + } + } + + public override IPermission CreatePermission () + { + SecurityPermission perm = null; + if (this.Unrestricted) + perm = new SecurityPermission (PermissionState.Unrestricted); + else + perm = new SecurityPermission (m_Flags); + return perm; + } + + public SecurityPermissionFlag Flags { + get { + return m_Flags; + } + set { + m_Flags = value; + } + } + } // public sealed class SecurityPermissionAttribute +} // namespace System.Security.Permissions diff --git a/mcs/class/corlib/System.Security.Permissions/SecurityPermissionFlag.cs b/mcs/class/corlib/System.Security.Permissions/SecurityPermissionFlag.cs index 156ab76ecb3..38170f53b88 100755 --- a/mcs/class/corlib/System.Security.Permissions/SecurityPermissionFlag.cs +++ b/mcs/class/corlib/System.Security.Permissions/SecurityPermissionFlag.cs @@ -9,37 +9,22 @@ // // (C) 2001 Ximian, Inc. http://www.ximian.com - namespace System.Security.Permissions { - - /// <summary> - /// </summary> [Flags] + [Serializable] public enum SecurityPermissionFlag { - /// <summary> - /// </summary> NoFlags = 0x00000000, - /// <summary> - /// </summary> Assertion = 0x00000001, - /// <summary> - /// </summary> UnmanagedCode = 0x00000002, - /// <summary> - /// </summary> SkipVerification = 0x00000004, - /// <summary> - /// </summary> Execution = 0x00000008, - /// <summary> - /// </summary> ControlThread = 0x00000010, ControlEvidence = 0x00000020, @@ -57,12 +42,9 @@ namespace System.Security.Permissions { RemotingConfiguration = 0x00000800, Infrastructure = 0x00001000, - #if ! NET_1_0 BindingRedirects = 0x00002000, #endif - /// <summary> - /// </summary> AllFlags = Assertion | UnmanagedCode | SkipVerification | Execution | ControlThread | ControlAppDomain | ControlDomainPolicy | ControlEvidence | ControlPolicy | ControlPrincipal | Infrastructure | RemotingConfiguration | SerializationFormatter diff --git a/mcs/class/corlib/System.Security.Permissions/SiteIdentityPermission.cs b/mcs/class/corlib/System.Security.Permissions/SiteIdentityPermission.cs index af087373588..3a496ad4a59 100644 --- a/mcs/class/corlib/System.Security.Permissions/SiteIdentityPermission.cs +++ b/mcs/class/corlib/System.Security.Permissions/SiteIdentityPermission.cs @@ -21,6 +21,8 @@ namespace System.Security.Permissions { public SiteIdentityPermission (PermissionState state) { + if (state == PermissionState.Unrestricted) + throw new ArgumentException ("Unsupported PermissionState.Unrestricted for Identity Permission"); } public SiteIdentityPermission (string site) @@ -31,7 +33,11 @@ namespace System.Security.Permissions { // Properties public string Site { - get { return _site; } + get { + if (_site == null) + throw new NullReferenceException ("Site"); + return _site; + } set { _site = value; } } diff --git a/mcs/class/corlib/System.Security.Permissions/SiteIdentityPermissionAttribute.cs b/mcs/class/corlib/System.Security.Permissions/SiteIdentityPermissionAttribute.cs index 8300cde7712..8e836e69bf2 100644 --- a/mcs/class/corlib/System.Security.Permissions/SiteIdentityPermissionAttribute.cs +++ b/mcs/class/corlib/System.Security.Permissions/SiteIdentityPermissionAttribute.cs @@ -7,13 +7,12 @@ // using System; -using System.Security.Permissions; namespace System.Security.Permissions { [AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Constructor | - AttributeTargets.Method)] + AttributeTargets.Method, AllowMultiple=true, Inherited=false)] [Serializable] public sealed class SiteIdentityPermissionAttribute : CodeAccessSecurityAttribute { @@ -34,7 +33,15 @@ namespace System.Security.Permissions { // Methods public override IPermission CreatePermission () { - return new SiteIdentityPermission (site); + if (this.Unrestricted) + throw new ArgumentException ("Unsupported PermissionState.Unrestricted"); + + SiteIdentityPermission perm = null; + if (site == null) + perm = new SiteIdentityPermission (PermissionState.None); + else + perm = new SiteIdentityPermission (site); + return perm; } } } diff --git a/mcs/class/corlib/System.Security.Permissions/StrongNameIdentityPermission.cs b/mcs/class/corlib/System.Security.Permissions/StrongNameIdentityPermission.cs index 0fb4bdeff6b..c6ea67a95f5 100644 --- a/mcs/class/corlib/System.Security.Permissions/StrongNameIdentityPermission.cs +++ b/mcs/class/corlib/System.Security.Permissions/StrongNameIdentityPermission.cs @@ -4,7 +4,7 @@ // Author: // Sebastien Pouliot (spouliot@motus.com) // -// (C) 2002 Motus Technologies Inc. (http://www.motus.com) +// (C) 2002, 2003 Motus Technologies Inc. (http://www.motus.com) // using System; @@ -22,6 +22,8 @@ namespace System.Security.Permissions { { if (state == PermissionState.Unrestricted) throw new ArgumentException ("state"); + name = String.Empty; + version = new Version (0, 0); } public StrongNameIdentityPermission (StrongNamePublicKeyBlob blob, string name, Version version) diff --git a/mcs/class/corlib/System.Security.Permissions/StrongNamePermissionAttribute.cs b/mcs/class/corlib/System.Security.Permissions/StrongNamePermissionAttribute.cs index 6f5c2cb0da8..55509fb3060 100644 --- a/mcs/class/corlib/System.Security.Permissions/StrongNamePermissionAttribute.cs +++ b/mcs/class/corlib/System.Security.Permissions/StrongNamePermissionAttribute.cs @@ -12,7 +12,7 @@ namespace System.Security.Permissions { [AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Constructor | - AttributeTargets.Method)] + AttributeTargets.Method, AllowMultiple=true, Inherited=false)] [Serializable] public sealed class StrongNameIdentityPermissionAttribute : CodeAccessSecurityAttribute { @@ -46,10 +46,31 @@ namespace System.Security.Permissions { // Methods public override IPermission CreatePermission () { - byte[] keyblob = Convert.FromBase64String (key); - StrongNamePublicKeyBlob blob = new StrongNamePublicKeyBlob (keyblob); - Version v = new Version (version); - return new StrongNameIdentityPermission (blob, name, v); + if (this.Unrestricted) + throw new ArgumentException ("Unsupported PermissionState.Unrestricted"); + + StrongNameIdentityPermission perm = null; + if ((name == null) && (key == null) && (version == null)) + perm = new StrongNameIdentityPermission (PermissionState.None); + else { + if (key == null) + throw new ArgumentException ("PublicKey is required"); + + byte[] keyblob = Convert.FromBase64String (key); + StrongNamePublicKeyBlob blob = new StrongNamePublicKeyBlob (keyblob); + + Version v = null; + if (version != null) + v = new Version (version); + else + v = new Version (); + + if (name == null) + name = String.Empty; + + perm = new StrongNameIdentityPermission (blob, name, v); + } + return perm; } } } diff --git a/mcs/class/corlib/System.Security.Permissions/UIPermission.cs b/mcs/class/corlib/System.Security.Permissions/UIPermission.cs index cc1f9d0611e..87c4a15bdfb 100644 --- a/mcs/class/corlib/System.Security.Permissions/UIPermission.cs +++ b/mcs/class/corlib/System.Security.Permissions/UIPermission.cs @@ -22,6 +22,10 @@ namespace System.Security.Permissions { public UIPermission (PermissionState state) { + if (state == PermissionState.Unrestricted) { + _clipboard = UIPermissionClipboard.AllClipboard; + _window = UIPermissionWindow.AllWindows; + } } public UIPermission (UIPermissionClipboard clipboardFlag) diff --git a/mcs/class/corlib/System.Security.Permissions/UIPermissionAttribute.cs b/mcs/class/corlib/System.Security.Permissions/UIPermissionAttribute.cs index 94e742327af..f6a11fb4af6 100644 --- a/mcs/class/corlib/System.Security.Permissions/UIPermissionAttribute.cs +++ b/mcs/class/corlib/System.Security.Permissions/UIPermissionAttribute.cs @@ -12,7 +12,7 @@ namespace System.Security.Permissions { [AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Constructor | - AttributeTargets.Method)] + AttributeTargets.Method, AllowMultiple=true, Inherited=false)] [Serializable] public sealed class UIPermissionAttribute : CodeAccessSecurityAttribute { @@ -39,7 +39,12 @@ namespace System.Security.Permissions { // Methods public override IPermission CreatePermission () { - return new UIPermission (window, clipboard); + UIPermission perm = null; + if (this.Unrestricted) + perm = new UIPermission (PermissionState.Unrestricted); + else + perm = new UIPermission (window, clipboard); + return perm; } } } diff --git a/mcs/class/corlib/System.Security.Permissions/UrlIdentityPermission.cs b/mcs/class/corlib/System.Security.Permissions/UrlIdentityPermission.cs index 06a4e67f039..ee85299999b 100644 --- a/mcs/class/corlib/System.Security.Permissions/UrlIdentityPermission.cs +++ b/mcs/class/corlib/System.Security.Permissions/UrlIdentityPermission.cs @@ -31,7 +31,11 @@ namespace System.Security.Permissions { } public string Url { - get { return url; } + get { + if (url == null) + throw new NullReferenceException ("Url"); + return url; + } set { url = value; } } diff --git a/mcs/class/corlib/System.Security.Permissions/UrlIdentityPermissionAttribute.cs b/mcs/class/corlib/System.Security.Permissions/UrlIdentityPermissionAttribute.cs index 7a25d6b2a47..8ffc5129822 100644 --- a/mcs/class/corlib/System.Security.Permissions/UrlIdentityPermissionAttribute.cs +++ b/mcs/class/corlib/System.Security.Permissions/UrlIdentityPermissionAttribute.cs @@ -1,22 +1,24 @@ // // System.Security.Permissions.UrlIdentityPermissionAttribute.cs // -// Duncan Mak <duncan@ximian.com> +// Authors: +// Duncan Mak <duncan@ximian.com> +// Sebastien Pouliot (spouliot@motus.com) // // (C) 2002 Ximian, Inc. http://www.ximian.com +// Portions (C) 2003 Motus Technologies Inc. (http://www.motus.com) // using System; -using System.Security.Permissions; -namespace System.Security.Permissions -{ +namespace System.Security.Permissions { + [AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Constructor | - AttributeTargets.Method)] + AttributeTargets.Method, AllowMultiple=true, Inherited=false)] [Serializable] - public sealed class UrlIdentityPermissionAttribute : CodeAccessSecurityAttribute - { + public sealed class UrlIdentityPermissionAttribute : CodeAccessSecurityAttribute { + // Fields private string url; @@ -33,7 +35,15 @@ namespace System.Security.Permissions // Methods public override IPermission CreatePermission () { - return new UrlIdentityPermission (url); + if (this.Unrestricted) + throw new ArgumentException ("Unsupported PermissionState.Unrestricted for Identity Permissions"); + + // Note: It is possible to create a permission with a + // null URL but not to create a UrlIdentityPermission (null) + if (url == null) + return new UrlIdentityPermission (PermissionState.None); + else + return new UrlIdentityPermission (url); } } } diff --git a/mcs/class/corlib/System.Security.Permissions/ZoneIdentityPermissionAttribute.cs b/mcs/class/corlib/System.Security.Permissions/ZoneIdentityPermissionAttribute.cs index 6cea70c2f4a..2bcc1008eab 100644 --- a/mcs/class/corlib/System.Security.Permissions/ZoneIdentityPermissionAttribute.cs +++ b/mcs/class/corlib/System.Security.Permissions/ZoneIdentityPermissionAttribute.cs @@ -1,19 +1,21 @@ // // System.Security.Permissions.ZoneIdentityPermissionAttribute.cs // -// Duncan Mak <duncan@ximian.com> +// Author: +// Duncan Mak <duncan@ximian.com> +// Sebastien Pouliot (spouliot@motus.com) // // (C) 2002 Ximian, Inc. http://www.ximian.com +// Portions (C) 2003 Motus Technologies Inc. (http://www.motus.com) // using System; -using System.Security.Permissions; namespace System.Security.Permissions { [AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Constructor | - AttributeTargets.Method)] + AttributeTargets.Method, AllowMultiple=true, Inherited=false)] [Serializable] public sealed class ZoneIdentityPermissionAttribute : CodeAccessSecurityAttribute { @@ -21,7 +23,10 @@ namespace System.Security.Permissions { private SecurityZone zone; // Constructor - public ZoneIdentityPermissionAttribute (SecurityAction action) : base (action) {} + public ZoneIdentityPermissionAttribute (SecurityAction action) : base (action) + { + zone = SecurityZone.NoZone; + } // Properties public SecurityZone Zone @@ -33,6 +38,9 @@ namespace System.Security.Permissions { // Methods public override IPermission CreatePermission () { + if (this.Unrestricted) + throw new ArgumentException ("Unsupported PermissionState.Unrestricted"); + return new ZoneIdentityPermission (zone); } } |