Merge pull request #4621 from alexanderkyte/strdup_env
[mono.git] / mcs / class / System.Security / System.Security.Permissions / DataProtectionPermission.cs
index 5cae49d6afb987c9657fb661d84142cf39603bd2..43560cd40cf6933fdd32f71bf8d21c705ec6c177 100644 (file)
@@ -4,7 +4,7 @@
 // Author:
 //     Sebastien Pouliot  <sebastien@ximian.com>
 //
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_2_0
 
 using System.Globalization;
 
 namespace System.Security.Permissions {
        
        [Serializable]
-       public sealed class DataProtectionPermission : CodeAccessPermission, IUnrestrictedPermission, IBuiltInPermission {
+       public sealed class DataProtectionPermission : CodeAccessPermission, IUnrestrictedPermission {
 
                private const int version = 1;
 
@@ -42,23 +41,21 @@ namespace System.Security.Permissions {
 
                public DataProtectionPermission (PermissionState state)
                {
-                       if (CheckPermissionState (state, true) == PermissionState.Unrestricted)
+                       if (PermissionHelper.CheckPermissionState (state, true) == PermissionState.Unrestricted)
                                _flags = DataProtectionPermissionFlags.AllFlags;
-                       else
-                               _flags = DataProtectionPermissionFlags.NoFlags;
                }
 
-               public DataProtectionPermission (DataProtectionPermissionFlags flags
+               public DataProtectionPermission (DataProtectionPermissionFlags flag) 
                {
                        // reuse validation by the Flags property
-                       Flags = flags;
+                       Flags = flag;
                }
 
 
                public DataProtectionPermissionFlags Flags {
                        get { return _flags; }
                        set {
-                               if (!Enum.IsDefined (typeof (DataProtectionPermissionFlags), value)) {
+                               if ((value & ~DataProtectionPermissionFlags.AllFlags) != 0) {
                                        string msg = String.Format (Locale.GetText ("Invalid enum {0}"), value);
                                        throw new ArgumentException (msg, "DataProtectionPermissionFlags");
                                }
@@ -117,30 +114,24 @@ namespace System.Security.Permissions {
                        return ((_flags & ~dp._flags) == 0);
                }
 
-               public override void FromXml (SecurityElement e
+               public override void FromXml (SecurityElement securityElement
                {
                        // General validation in CodeAccessPermission
-                       CheckSecurityElement (e, "e", version, version);
+                       PermissionHelper.CheckSecurityElement (securityElement, "securityElement", version, version);
                        // Note: we do not (yet) care about the return value 
                        // as we only accept version 1 (min/max values)
 
                        _flags = (DataProtectionPermissionFlags) Enum.Parse (
-                               typeof (DataProtectionPermissionFlags), e.Attribute ("Flags"));
+                               typeof (DataProtectionPermissionFlags), securityElement.Attribute ("Flags"));
                }
 
                public override SecurityElement ToXml () 
                {
-                       SecurityElement e = Element (version);
+                       SecurityElement e = PermissionHelper.Element (typeof (DataProtectionPermission), version);
                        e.AddAttribute ("Flags", _flags.ToString ());
                        return e;
                }
 
-               // IBuiltInPermission
-               int IBuiltInPermission.GetTokenIndex ()
-               {
-                       return (int) BuiltInToken.DataProtection;
-               }
-
                // helpers
 
                private DataProtectionPermission Cast (IPermission target)
@@ -150,7 +141,7 @@ namespace System.Security.Permissions {
 
                        DataProtectionPermission dp = (target as DataProtectionPermission);
                        if (dp == null) {
-                               ThrowInvalidPermission (target, typeof (DataProtectionPermission));
+                               PermissionHelper.ThrowInvalidPermission (target, typeof (DataProtectionPermission));
                        }
 
                        return dp;
@@ -158,4 +149,3 @@ namespace System.Security.Permissions {
        }
 }
 
-#endif