**** Merged from MCS ****
[mono-project.git] / mcs / class / corlib / System.Security.Policy / ApplicationSecurityInfo.cs
blobd8f22f2ca5f29bcce5e8873d8f2fed2b31535b45
1 //
2 // System.Security.Policy.ApplicationSecurityInfo class
3 //
4 // Author:
5 // Sebastien Pouliot <sebastien@ximian.com>
6 //
7 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
8 //
9 // Permission is hereby granted, free of charge, to any person obtaining
10 // a copy of this software and associated documentation files (the
11 // "Software"), to deal in the Software without restriction, including
12 // without limitation the rights to use, copy, modify, merge, publish,
13 // distribute, sublicense, and/or sell copies of the Software, and to
14 // permit persons to whom the Software is furnished to do so, subject to
15 // the following conditions:
16 //
17 // The above copyright notice and this permission notice shall be
18 // included in all copies or substantial portions of the Software.
19 //
20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29 #if NET_2_0
31 using System.Collections;
32 using System.Globalization;
33 using System.Security.Permissions;
35 namespace System.Security.Policy {
37 public sealed class ApplicationSecurityInfo : ISecurityEncodable, ISecurityPolicyEncodable {
39 private ActivationContext _context;
40 private Evidence _evidence;
41 private ApplicationId _appid;
42 private Hashtable _requests;
43 private PermissionSet _defaultSet;
44 private ApplicationId _deployid;
46 public ApplicationSecurityInfo (ActivationContext activationContext)
48 if (activationContext == null)
49 throw new ArgumentNullException ("activationContext");
50 _context = activationContext;
53 public Evidence ApplicationEvidence {
54 get { return _evidence; }
55 set {
56 if (value == null)
57 throw new ArgumentNullException ("ApplicationEvidence");
58 _evidence = value;
62 public ApplicationId ApplicationId {
63 get { return _appid; }
64 set {
65 if (value == null)
66 throw new ArgumentNullException ("ApplicationId");
67 _appid = value;
71 public IDictionary AssemblyRequests {
72 get { return (IDictionary) _requests; }
73 set {
74 if (value == null)
75 throw new ArgumentNullException ("AssemblyRequests");
76 if (!(value is Hashtable))
77 throw new ArgumentException (Locale.GetText ("wrong type"));
79 _requests = (Hashtable) value;
83 public PermissionSet DefaultRequestSet {
84 get {
85 if (_defaultSet == null)
86 return new PermissionSet (PermissionState.None);
87 return _defaultSet; // FIXME: copy or reference ?
89 set {
90 if (value == null)
91 throw new ArgumentNullException ("DefaultRequestSet");
92 _defaultSet = value;
96 public ApplicationId DeploymentId {
97 get { return _deployid; }
98 set {
99 if (value == null)
100 throw new ArgumentNullException ("DeploymentId");
101 _deployid = value;
105 // methods
107 [MonoTODO]
108 public override bool Equals (object obj)
110 if (obj == null)
111 return false;
112 ApplicationSecurityInfo asi = (obj as ApplicationSecurityInfo);
113 if (asi == null)
114 return false;
115 // TODO
116 return false;
119 public void FromXml (SecurityElement element)
121 FromXml (element, null);
124 [MonoTODO]
125 public void FromXml (SecurityElement element, PolicyLevel level)
127 throw new NotImplementedException ();
130 [MonoTODO]
131 public override int GetHashCode ()
133 return base.GetHashCode ();
136 [MonoTODO]
137 public bool IsInApplication (Evidence evidence)
139 if (evidence == null)
140 return false; // ???
142 IEnumerator e = evidence.GetHostEnumerator ();
143 while (e.MoveNext ()) {
146 e = evidence.GetAssemblyEnumerator ();
147 while (e.MoveNext ()) {
150 // we found them all!
151 return true;
154 public SecurityElement ToXml ()
156 return ToXml (null);
159 [MonoTODO]
160 public SecurityElement ToXml (PolicyLevel level)
162 throw new NotImplementedException ();
167 #endif