mscorlib(4.0.0.0) API with additions
KeyContainerPermissionAccessEntry.cs
3 
5 {
8  [ComVisible(true)]
10  {
11  private string m_keyStore;
12 
13  private string m_providerName;
14 
15  private int m_providerType;
16 
17  private string m_keyContainerName;
18 
19  private int m_keySpec;
20 
21  private KeyContainerPermissionFlags m_flags;
22 
26  public string KeyStore
27  {
28  get
29  {
30  return m_keyStore;
31  }
32  set
33  {
34  if (IsUnrestrictedEntry(value, ProviderName, ProviderType, KeyContainerName, KeySpec))
35  {
36  throw new ArgumentException(Environment.GetResourceString("Arg_InvalidAccessEntry"));
37  }
38  if (value == null)
39  {
40  m_keyStore = "*";
41  return;
42  }
43  if (value != "User" && value != "Machine" && value != "*")
44  {
45  throw new ArgumentException(Environment.GetResourceString("Argument_InvalidKeyStore", value), "value");
46  }
47  m_keyStore = value;
48  }
49  }
50 
54  public string ProviderName
55  {
56  get
57  {
58  return m_providerName;
59  }
60  set
61  {
62  if (IsUnrestrictedEntry(KeyStore, value, ProviderType, KeyContainerName, KeySpec))
63  {
64  throw new ArgumentException(Environment.GetResourceString("Arg_InvalidAccessEntry"));
65  }
66  if (value == null)
67  {
68  m_providerName = "*";
69  }
70  else
71  {
72  m_providerName = value;
73  }
74  }
75  }
76 
80  public int ProviderType
81  {
82  get
83  {
84  return m_providerType;
85  }
86  set
87  {
88  if (IsUnrestrictedEntry(KeyStore, ProviderName, value, KeyContainerName, KeySpec))
89  {
90  throw new ArgumentException(Environment.GetResourceString("Arg_InvalidAccessEntry"));
91  }
92  m_providerType = value;
93  }
94  }
95 
99  public string KeyContainerName
100  {
101  get
102  {
103  return m_keyContainerName;
104  }
105  set
106  {
107  if (IsUnrestrictedEntry(KeyStore, ProviderName, ProviderType, value, KeySpec))
108  {
109  throw new ArgumentException(Environment.GetResourceString("Arg_InvalidAccessEntry"));
110  }
111  if (value == null)
112  {
113  m_keyContainerName = "*";
114  }
115  else
116  {
117  m_keyContainerName = value;
118  }
119  }
120  }
121 
125  public int KeySpec
126  {
127  get
128  {
129  return m_keySpec;
130  }
131  set
132  {
133  if (IsUnrestrictedEntry(KeyStore, ProviderName, ProviderType, KeyContainerName, value))
134  {
135  throw new ArgumentException(Environment.GetResourceString("Arg_InvalidAccessEntry"));
136  }
137  m_keySpec = value;
138  }
139  }
140 
144  {
145  get
146  {
147  return m_flags;
148  }
149  set
150  {
151  KeyContainerPermission.VerifyFlags(value);
152  m_flags = value;
153  }
154  }
155 
157  : this(accessEntry.KeyStore, accessEntry.ProviderName, accessEntry.ProviderType, accessEntry.KeyContainerName, accessEntry.KeySpec, accessEntry.Flags)
158  {
159  }
160 
165  public KeyContainerPermissionAccessEntry(string keyContainerName, KeyContainerPermissionFlags flags)
166  : this(null, null, -1, keyContainerName, -1, flags)
167  {
168  }
169 
175  : this(((parameters.Flags & CspProviderFlags.UseMachineKeyStore) == CspProviderFlags.UseMachineKeyStore) ? "Machine" : "User", parameters.ProviderName, parameters.ProviderType, parameters.KeyContainerName, parameters.KeyNumber, flags)
176  {
177  }
178 
187  public KeyContainerPermissionAccessEntry(string keyStore, string providerName, int providerType, string keyContainerName, int keySpec, KeyContainerPermissionFlags flags)
188  {
189  m_providerName = ((providerName == null) ? "*" : providerName);
190  m_providerType = providerType;
191  m_keyContainerName = ((keyContainerName == null) ? "*" : keyContainerName);
192  m_keySpec = keySpec;
193  KeyStore = keyStore;
194  Flags = flags;
195  }
196 
201  public override bool Equals(object o)
202  {
203  KeyContainerPermissionAccessEntry keyContainerPermissionAccessEntry = o as KeyContainerPermissionAccessEntry;
204  if (keyContainerPermissionAccessEntry == null)
205  {
206  return false;
207  }
208  if (keyContainerPermissionAccessEntry.m_keyStore != m_keyStore)
209  {
210  return false;
211  }
212  if (keyContainerPermissionAccessEntry.m_providerName != m_providerName)
213  {
214  return false;
215  }
216  if (keyContainerPermissionAccessEntry.m_providerType != m_providerType)
217  {
218  return false;
219  }
220  if (keyContainerPermissionAccessEntry.m_keyContainerName != m_keyContainerName)
221  {
222  return false;
223  }
224  if (keyContainerPermissionAccessEntry.m_keySpec != m_keySpec)
225  {
226  return false;
227  }
228  return true;
229  }
230 
233  public override int GetHashCode()
234  {
235  int num = 0;
236  num |= (m_keyStore.GetHashCode() & 0xFF) << 24;
237  num |= (m_providerName.GetHashCode() & 0xFF) << 16;
238  num |= (m_providerType & 0xF) << 12;
239  num |= (m_keyContainerName.GetHashCode() & 0xFF) << 4;
240  return num | (m_keySpec & 0xF);
241  }
242 
243  internal bool IsSubsetOf(KeyContainerPermissionAccessEntry target)
244  {
245  if (target.m_keyStore != "*" && m_keyStore != target.m_keyStore)
246  {
247  return false;
248  }
249  if (target.m_providerName != "*" && m_providerName != target.m_providerName)
250  {
251  return false;
252  }
253  if (target.m_providerType != -1 && m_providerType != target.m_providerType)
254  {
255  return false;
256  }
257  if (target.m_keyContainerName != "*" && m_keyContainerName != target.m_keyContainerName)
258  {
259  return false;
260  }
261  if (target.m_keySpec != -1 && m_keySpec != target.m_keySpec)
262  {
263  return false;
264  }
265  return true;
266  }
267 
268  internal static bool IsUnrestrictedEntry(string keyStore, string providerName, int providerType, string keyContainerName, int keySpec)
269  {
270  if (keyStore != "*" && keyStore != null)
271  {
272  return false;
273  }
274  if (providerName != "*" && providerName != null)
275  {
276  return false;
277  }
278  if (providerType != -1)
279  {
280  return false;
281  }
282  if (keyContainerName != "*" && keyContainerName != null)
283  {
284  return false;
285  }
286  if (keySpec != -1)
287  {
288  return false;
289  }
290  return true;
291  }
292  }
293 }
KeyContainerPermissionAccessEntry(string keyContainerName, KeyContainerPermissionFlags flags)
Initializes a new instance of the T:System.Security.Permissions.KeyContainerPermissionAccessEntry cla...
Use key information from the computer's key store.
KeyContainerPermissionAccessEntry(string keyStore, string providerName, int providerType, string keyContainerName, int keySpec, KeyContainerPermissionFlags flags)
Initializes a new instance of the T:System.Security.Permissions.KeyContainerPermissionAccessEntry cla...
Definition: __Canon.cs:3
int KeySpec
Gets or sets the key specification.
Specifies access rights for specific key containers. This class cannot be inherited.
CspProviderFlags
Specifies flags that modify the behavior of the cryptographic service providers (CSP).
string ProviderName
Gets or sets the provider name.
Controls the ability to access key containers. This class cannot be inherited.
int ProviderType
Gets or sets the provider type.
Provides information about, and means to manipulate, the current environment and platform....
Definition: Environment.cs:21
override int GetHashCode()
Gets a hash code for the current instance that is suitable for use in hashing algorithms and data str...
string KeyContainerName
Gets or sets the key container name.
override bool Equals(object o)
Determines whether the specified T:System.Security.Permissions.KeyContainerPermissionAccessEntry obje...
Contains parameters that are passed to the cryptographic service provider (CSP) that performs cryptog...
Definition: CspParameters.cs:8
KeyContainerPermissionFlags
Specifies the type of key container access allowed.
The exception that is thrown when one of the arguments provided to a method is not valid.
KeyNumber
Specifies whether to create an asymmetric signature key or an asymmetric exchange key.
Definition: KeyNumber.cs:8
Specifies that the class can be serialized.
KeyContainerPermissionFlags Flags
Gets or sets the key container permissions.
string KeyStore
Gets or sets the name of the key store.