diff options
author | Sebastien Pouliot <sebastien@ximian.com> | 2004-08-05 19:58:54 +0400 |
---|---|---|
committer | Sebastien Pouliot <sebastien@ximian.com> | 2004-08-05 19:58:54 +0400 |
commit | 30efeb9bcdecd2cd5aed41847ad89026958df422 (patch) | |
tree | 40a41e14b3c2b9cab4d74ed00ecf32204cece3dc /mcs/class/corlib/System.Security.Permissions | |
parent | b02c2793e307301463c4ed1e5ddfd047b5ab0b32 (diff) |
2004-08-05 Sebastien Pouliot <sebastien@ximian.com>
* PrincipalPermission.cs: Added Equals/GetHashCode for NET_2_0.
* SecurityPermissionAttribute.cs: Added new BindingRedirects property
for NET_2_0.
svn path=/trunk/mcs/; revision=31938
Diffstat (limited to 'mcs/class/corlib/System.Security.Permissions')
3 files changed, 63 insertions, 7 deletions
diff --git a/mcs/class/corlib/System.Security.Permissions/ChangeLog b/mcs/class/corlib/System.Security.Permissions/ChangeLog index 41f536b5745..205de4d9c38 100644 --- a/mcs/class/corlib/System.Security.Permissions/ChangeLog +++ b/mcs/class/corlib/System.Security.Permissions/ChangeLog @@ -1,3 +1,9 @@ +2004-08-05 Sebastien Pouliot <sebastien@ximian.com> + + * PrincipalPermission.cs: Added Equals/GetHashCode for NET_2_0. + * SecurityPermissionAttribute.cs: Added new BindingRedirects property + for NET_2_0. + 2004-08-04 Sebastien Pouliot <sebastien@ximian.com> * GacIdentityPermission.cs: New. for NET_2_0 diff --git a/mcs/class/corlib/System.Security.Permissions/PrincipalPermission.cs b/mcs/class/corlib/System.Security.Permissions/PrincipalPermission.cs index d1f23c091a5..c4e27c19dd5 100644 --- a/mcs/class/corlib/System.Security.Permissions/PrincipalPermission.cs +++ b/mcs/class/corlib/System.Security.Permissions/PrincipalPermission.cs @@ -2,12 +2,9 @@ // System.Security.Permissions.PrincipalPermission.cs // // Author -// Sebastien Pouliot <spouliot@motus.com> +// Sebastien Pouliot <sebastien@ximian.com> // // Copyright (C) 2003 Motus Technologies. http://www.motus.com -// - -// // Copyright (C) 2004 Novell, Inc (http://www.novell.com) // // Permission is hereby granted, free of charge, to any person obtaining @@ -47,7 +44,8 @@ namespace System.Security.Permissions { private string _role; private bool _isAuthenticated; - public PrincipalInfo (string name, string role, bool isAuthenticated) { + public PrincipalInfo (string name, string role, bool isAuthenticated) + { _name = name; _role = role; _isAuthenticated = isAuthenticated; @@ -278,10 +276,48 @@ namespace System.Security.Permissions { return union; } +#if NET_2_0 + public override bool Equals (object obj) + { + if (obj == null) + return false; + PrincipalPermission pp = (obj as PrincipalPermission); + if (pp == null) + return false; + + // same number of principals ? + if (principals.Count != pp.principals.Count) + return false; + + // then all principals in "this" should be in "pp" + foreach (PrincipalInfo pi in principals) { + bool thisItem = false; + foreach (PrincipalInfo opi in pp.principals) { + if (((pi.Name == opi.Name) || (opi.Name == null)) && + ((pi.Role == opi.Role) || (opi.Role == null)) && + (pi.IsAuthenticated == opi.IsAuthenticated)) { + thisItem = true; + break; + } + } + if (!thisItem) + return false; + } + return true; + } + + // according to documentation (fx 2.0 beta 1) we can have + // different hash code even if both a Equals + public override int GetHashCode () + { + return base.GetHashCode (); + } +#endif + // IBuiltInPermission int IBuiltInPermission.GetTokenIndex () { return 8; } } -}
\ No newline at end of file +} diff --git a/mcs/class/corlib/System.Security.Permissions/SecurityPermissionAttribute.cs b/mcs/class/corlib/System.Security.Permissions/SecurityPermissionAttribute.cs index a6ce8caadd4..d251aa7a5c3 100644 --- a/mcs/class/corlib/System.Security.Permissions/SecurityPermissionAttribute.cs +++ b/mcs/class/corlib/System.Security.Permissions/SecurityPermissionAttribute.cs @@ -67,7 +67,21 @@ namespace System.Security.Permissions { } } } - +#if NET_2_0 + public bool BindingRedirects { + get { + return ((m_Flags & SecurityPermissionFlag.BindingRedirects) != 0); + } + set { + if (value) { + m_Flags |= SecurityPermissionFlag.BindingRedirects; + } + else{ + m_Flags &= SecurityPermissionFlag.BindingRedirects; + } + } + } +#endif public bool ControlAppDomain { get { return ((m_Flags & SecurityPermissionFlag.ControlAppDomain) != 0); |