Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
SecurityIdentifier.cs
Go to the documentation of this file.
5
7
8public sealed class SecurityIdentifier : IdentityReference, IComparable<SecurityIdentifier>
9{
10 public static readonly int MinBinaryLength = 8;
11
12 public static readonly int MaxBinaryLength = 68;
13
15
16 private int[] _subAuthorities;
17
18 private byte[] _binaryForm;
19
21
23
24 private string _sddlForm;
25
26 internal static byte Revision => 1;
27
28 internal byte[] BinaryForm => _binaryForm;
29
31
32 internal int SubAuthorityCount => _subAuthorities.Length;
33
34 public int BinaryLength => _binaryForm.Length;
35
48
49 public override string Value => ToString().ToUpperInvariant();
50
51 [MemberNotNull("_binaryForm")]
52 [MemberNotNull("_subAuthorities")]
53 private void CreateFromParts(IdentifierAuthority identifierAuthority, ReadOnlySpan<int> subAuthorities)
54 {
55 if (subAuthorities.Length > 15)
56 {
57 throw new ArgumentOutOfRangeException("subAuthorities.Length", subAuthorities.Length, System.SR.Format(System.SR.IdentityReference_InvalidNumberOfSubauthorities, 15));
58 }
59 if (identifierAuthority < IdentifierAuthority.NullAuthority || identifierAuthority > (IdentifierAuthority)281474976710655L)
60 {
61 throw new ArgumentOutOfRangeException("identifierAuthority", identifierAuthority, System.SR.IdentityReference_IdentifierAuthorityTooLarge);
62 }
63 _identifierAuthority = identifierAuthority;
64 _subAuthorities = subAuthorities.ToArray();
65 _binaryForm = new byte[8 + 4 * _subAuthorities.Length];
67 _binaryForm[1] = (byte)_subAuthorities.Length;
68 for (int i = 0; i < 6; i++)
69 {
70 _binaryForm[2 + i] = (byte)(((ulong)_identifierAuthority >> (5 - i) * 8) & 0xFF);
71 }
72 for (int j = 0; j < _subAuthorities.Length; j++)
73 {
74 for (byte b = 0; b < 4; b++)
75 {
76 _binaryForm[8 + 4 * j + b] = (byte)((ulong)_subAuthorities[j] >> b * 8);
77 }
78 }
79 }
80
81 [MemberNotNull("_binaryForm")]
82 [MemberNotNull("_subAuthorities")]
83 private void CreateFromBinaryForm(byte[] binaryForm, int offset)
84 {
85 if (binaryForm == null)
86 {
87 throw new ArgumentNullException("binaryForm");
88 }
89 if (offset < 0)
90 {
92 }
93 if (binaryForm.Length - offset < MinBinaryLength)
94 {
96 }
97 if (binaryForm[offset] != Revision)
98 {
100 }
101 int num = binaryForm[offset + 1];
102 if (num > 15)
103 {
105 }
106 int num2 = 8 + 4 * num;
107 if (binaryForm.Length - offset < num2)
108 {
110 }
111 Span<int> span = stackalloc int[15];
112 IdentifierAuthority identifierAuthority = (IdentifierAuthority)(((ulong)binaryForm[offset + 2] << 40) + ((ulong)binaryForm[offset + 3] << 32) + ((ulong)binaryForm[offset + 4] << 24) + ((ulong)binaryForm[offset + 5] << 16) + ((ulong)binaryForm[offset + 6] << 8) + binaryForm[offset + 7]);
113 for (int i = 0; i < num; i++)
114 {
115 span[i] = binaryForm[offset + 8 + 4 * i] + (binaryForm[offset + 8 + 4 * i + 1] << 8) + (binaryForm[offset + 8 + 4 * i + 2] << 16) + (binaryForm[offset + 8 + 4 * i + 3] << 24);
116 }
117 CreateFromParts(identifierAuthority, span.Slice(0, num));
118 }
119
120 public SecurityIdentifier(string sddlForm)
121 {
122 if (sddlForm == null)
123 {
124 throw new ArgumentNullException("sddlForm");
125 }
126 byte[] resultSid;
127 int num = Win32.CreateSidFromString(sddlForm, out resultSid);
128 switch (num)
129 {
130 case 1337:
131 throw new ArgumentException(System.SR.Argument_InvalidValue, "sddlForm");
132 case 8:
133 throw new OutOfMemoryException();
134 default:
135 throw new Win32Exception(num);
136 case 0:
137 CreateFromBinaryForm(resultSid, 0);
138 break;
139 }
140 }
141
142 public SecurityIdentifier(byte[] binaryForm, int offset)
143 {
144 if (binaryForm == null)
145 {
146 throw new ArgumentNullException("binaryForm");
147 }
148 CreateFromBinaryForm(binaryForm, offset);
149 }
150
151 public SecurityIdentifier(IntPtr binaryForm)
152 : this(Win32.ConvertIntPtrSidToByteArraySid(binaryForm), 0)
153 {
154 }
155
157 {
158 int windowsAccountDomainSid;
159 switch (sidType)
160 {
161 case WellKnownSidType.LogonIdsSid:
163 default:
164 throw new ArgumentException(System.SR.Argument_InvalidValue, "sidType");
165 case WellKnownSidType.AccountAdministratorSid:
166 case WellKnownSidType.AccountGuestSid:
167 case WellKnownSidType.AccountKrbtgtSid:
168 case WellKnownSidType.AccountDomainAdminsSid:
169 case WellKnownSidType.AccountDomainUsersSid:
170 case WellKnownSidType.AccountDomainGuestsSid:
171 case WellKnownSidType.AccountComputersSid:
172 case WellKnownSidType.AccountControllersSid:
173 case WellKnownSidType.AccountCertAdminsSid:
174 case WellKnownSidType.AccountSchemaAdminsSid:
175 case WellKnownSidType.AccountEnterpriseAdminsSid:
176 case WellKnownSidType.AccountPolicyAdminsSid:
177 case WellKnownSidType.AccountRasAndIasServersSid:
178 {
179 if (domainSid == null)
180 {
182 }
183 windowsAccountDomainSid = Win32.GetWindowsAccountDomainSid(domainSid, out var resultSid);
184 switch (windowsAccountDomainSid)
185 {
186 case 122:
187 throw new OutOfMemoryException();
188 case 1257:
190 default:
191 throw new Win32Exception(windowsAccountDomainSid);
192 case 0:
193 break;
194 }
195 if (resultSid != domainSid)
196 {
198 }
199 break;
200 }
201 case WellKnownSidType.NullSid:
202 case WellKnownSidType.WorldSid:
203 case WellKnownSidType.LocalSid:
204 case WellKnownSidType.CreatorOwnerSid:
205 case WellKnownSidType.CreatorGroupSid:
206 case WellKnownSidType.CreatorOwnerServerSid:
207 case WellKnownSidType.CreatorGroupServerSid:
208 case WellKnownSidType.NTAuthoritySid:
209 case WellKnownSidType.DialupSid:
210 case WellKnownSidType.NetworkSid:
211 case WellKnownSidType.BatchSid:
212 case WellKnownSidType.InteractiveSid:
213 case WellKnownSidType.ServiceSid:
214 case WellKnownSidType.AnonymousSid:
215 case WellKnownSidType.ProxySid:
216 case WellKnownSidType.EnterpriseControllersSid:
217 case WellKnownSidType.SelfSid:
218 case WellKnownSidType.AuthenticatedUserSid:
219 case WellKnownSidType.RestrictedCodeSid:
220 case WellKnownSidType.TerminalServerSid:
221 case WellKnownSidType.RemoteLogonIdSid:
222 case WellKnownSidType.LocalSystemSid:
223 case WellKnownSidType.LocalServiceSid:
224 case WellKnownSidType.NetworkServiceSid:
225 case WellKnownSidType.BuiltinDomainSid:
226 case WellKnownSidType.BuiltinAdministratorsSid:
227 case WellKnownSidType.BuiltinUsersSid:
228 case WellKnownSidType.BuiltinGuestsSid:
229 case WellKnownSidType.BuiltinPowerUsersSid:
230 case WellKnownSidType.BuiltinAccountOperatorsSid:
231 case WellKnownSidType.BuiltinSystemOperatorsSid:
232 case WellKnownSidType.BuiltinPrintOperatorsSid:
233 case WellKnownSidType.BuiltinBackupOperatorsSid:
234 case WellKnownSidType.BuiltinReplicatorSid:
235 case WellKnownSidType.BuiltinPreWindows2000CompatibleAccessSid:
236 case WellKnownSidType.BuiltinRemoteDesktopUsersSid:
237 case WellKnownSidType.BuiltinNetworkConfigurationOperatorsSid:
238 case WellKnownSidType.NtlmAuthenticationSid:
239 case WellKnownSidType.DigestAuthenticationSid:
240 case WellKnownSidType.SChannelAuthenticationSid:
241 case WellKnownSidType.ThisOrganizationSid:
242 case WellKnownSidType.OtherOrganizationSid:
243 case WellKnownSidType.BuiltinIncomingForestTrustBuildersSid:
244 case WellKnownSidType.BuiltinPerformanceMonitoringUsersSid:
245 case WellKnownSidType.BuiltinPerformanceLoggingUsersSid:
246 case WellKnownSidType.BuiltinAuthorizationAccessSid:
247 case WellKnownSidType.WinBuiltinTerminalServerLicenseServersSid:
248 case WellKnownSidType.WinBuiltinDCOMUsersSid:
249 case WellKnownSidType.WinBuiltinIUsersSid:
250 case WellKnownSidType.WinIUserSid:
251 case WellKnownSidType.WinBuiltinCryptoOperatorsSid:
252 case WellKnownSidType.WinUntrustedLabelSid:
253 case WellKnownSidType.WinLowLabelSid:
254 case WellKnownSidType.WinMediumLabelSid:
255 case WellKnownSidType.WinHighLabelSid:
256 case WellKnownSidType.WinSystemLabelSid:
257 case WellKnownSidType.WinWriteRestrictedCodeSid:
258 case WellKnownSidType.WinCreatorOwnerRightsSid:
259 case WellKnownSidType.WinCacheablePrincipalsGroupSid:
260 case WellKnownSidType.WinNonCacheablePrincipalsGroupSid:
261 case WellKnownSidType.WinEnterpriseReadonlyControllersSid:
262 case WellKnownSidType.WinAccountReadonlyControllersSid:
263 case WellKnownSidType.WinBuiltinEventLogReadersGroup:
264 case WellKnownSidType.WinNewEnterpriseReadonlyControllersSid:
265 case WellKnownSidType.WinBuiltinCertSvcDComAccessGroup:
266 case WellKnownSidType.WinMediumPlusLabelSid:
267 case WellKnownSidType.WinLocalLogonSid:
268 case WellKnownSidType.WinConsoleLogonSid:
269 case WellKnownSidType.WinThisOrganizationCertificateSid:
270 case WellKnownSidType.WinApplicationPackageAuthoritySid:
271 case WellKnownSidType.WinBuiltinAnyPackageSid:
272 case WellKnownSidType.WinCapabilityInternetClientSid:
273 case WellKnownSidType.WinCapabilityInternetClientServerSid:
274 case WellKnownSidType.WinCapabilityPrivateNetworkClientServerSid:
275 case WellKnownSidType.WinCapabilityPicturesLibrarySid:
276 case WellKnownSidType.WinCapabilityVideosLibrarySid:
277 case WellKnownSidType.WinCapabilityMusicLibrarySid:
278 case WellKnownSidType.WinCapabilityDocumentsLibrarySid:
279 case WellKnownSidType.WinCapabilitySharedUserCertificatesSid:
280 case WellKnownSidType.WinCapabilityEnterpriseAuthenticationSid:
281 case WellKnownSidType.WinCapabilityRemovableStorageSid:
282 break;
283 }
284 windowsAccountDomainSid = Win32.CreateWellKnownSid(sidType, domainSid, out var resultSid2);
285 switch (windowsAccountDomainSid)
286 {
287 case 87:
288 throw new ArgumentException(new Win32Exception(windowsAccountDomainSid).Message, "sidType/domainSid");
289 default:
290 throw new Win32Exception(windowsAccountDomainSid);
291 case 0:
292 CreateFromBinaryForm(resultSid2, 0);
293 break;
294 }
295 }
296
297 internal SecurityIdentifier(IdentifierAuthority identifierAuthority, ReadOnlySpan<int> subAuthorities)
298 {
299 CreateFromParts(identifierAuthority, subAuthorities);
300 }
301
302 public override bool Equals([NotNullWhen(true)] object? o)
303 {
304 return this == o as SecurityIdentifier;
305 }
306
307 public bool Equals(SecurityIdentifier sid)
308 {
309 return this == sid;
310 }
311
312 public override int GetHashCode()
313 {
314 int num = ((long)IdentifierAuthority).GetHashCode();
315 for (int i = 0; i < SubAuthorityCount; i++)
316 {
317 num ^= GetSubAuthority(i);
318 }
319 return num;
320 }
321
322 public override string ToString()
323 {
324 if (_sddlForm == null)
325 {
326 Span<char> span = stackalloc char[189];
327 span[0] = 'S';
328 span[1] = '-';
329 span[2] = '1';
330 span[3] = '-';
331 int num = 4;
332 ulong identifierAuthority = (ulong)_identifierAuthority;
333 identifierAuthority.TryFormat(span.Slice(num), out var charsWritten);
334 num += charsWritten;
335 int[] subAuthorities = _subAuthorities;
336 for (int i = 0; i < subAuthorities.Length; i++)
337 {
338 span[num] = '-';
339 num++;
340 uint num2 = (uint)subAuthorities[i];
341 num2.TryFormat(span.Slice(num), out charsWritten);
342 num += charsWritten;
343 }
344 _sddlForm = span.Slice(0, num).ToString();
345 }
346 return _sddlForm;
347 }
348
349 internal static bool IsValidTargetTypeStatic(Type targetType)
350 {
351 if (targetType == typeof(NTAccount))
352 {
353 return true;
354 }
355 if (targetType == typeof(SecurityIdentifier))
356 {
357 return true;
358 }
359 return false;
360 }
361
362 public override bool IsValidTargetType(Type targetType)
363 {
364 return IsValidTargetTypeStatic(targetType);
365 }
366
368 {
369 SecurityIdentifier resultSid;
370 int windowsAccountDomainSid = Win32.GetWindowsAccountDomainSid(this, out resultSid);
371 return windowsAccountDomainSid switch
372 {
373 122 => throw new OutOfMemoryException(),
374 1257 => null,
375 0 => resultSid,
376 _ => throw new Win32Exception(windowsAccountDomainSid),
377 };
378 }
379
380 public bool IsAccountSid()
381 {
383 {
386 }
387 if (_accountDomainSid == null)
388 {
389 return false;
390 }
391 return true;
392 }
393
394 public override IdentityReference Translate(Type targetType)
395 {
396 if (targetType == null)
397 {
398 throw new ArgumentNullException("targetType");
399 }
400 if (targetType == typeof(SecurityIdentifier))
401 {
402 return this;
403 }
404 if (targetType == typeof(NTAccount))
405 {
406 IdentityReferenceCollection identityReferenceCollection = new IdentityReferenceCollection(1);
407 identityReferenceCollection.Add(this);
408 IdentityReferenceCollection identityReferenceCollection2 = Translate(identityReferenceCollection, targetType, forceSuccess: true);
409 return identityReferenceCollection2[0];
410 }
412 }
413
414 public static bool operator ==(SecurityIdentifier? left, SecurityIdentifier? right)
415 {
416 if ((object)left == right)
417 {
418 return true;
419 }
420 if ((object)left == null || (object)right == null)
421 {
422 return false;
423 }
424 return left.CompareTo(right) == 0;
425 }
426
427 public static bool operator !=(SecurityIdentifier? left, SecurityIdentifier? right)
428 {
429 return !(left == right);
430 }
431
433 {
434 if (sid == null)
435 {
436 throw new ArgumentNullException("sid");
437 }
439 {
440 return -1;
441 }
443 {
444 return 1;
445 }
447 {
448 return -1;
449 }
451 {
452 return 1;
453 }
454 for (int i = 0; i < SubAuthorityCount; i++)
455 {
456 int num = GetSubAuthority(i) - sid.GetSubAuthority(i);
457 if (num != 0)
458 {
459 return num;
460 }
461 }
462 return 0;
463 }
464
465 internal int GetSubAuthority(int index)
466 {
467 return _subAuthorities[index];
468 }
469
471 {
472 return Win32.IsWellKnownSid(this, type);
473 }
474
475 public void GetBinaryForm(byte[] binaryForm, int offset)
476 {
477 _binaryForm.CopyTo(binaryForm, offset);
478 }
479
481 {
482 return Win32.IsEqualDomainSid(this, sid);
483 }
484
486 {
487 if (sourceSids == null)
488 {
489 throw new ArgumentNullException("sourceSids");
490 }
491 if (sourceSids.Count == 0)
492 {
493 throw new ArgumentException(System.SR.Arg_EmptyCollection, "sourceSids");
494 }
495 IntPtr[] array = new IntPtr[sourceSids.Count];
496 GCHandle[] array2 = new GCHandle[sourceSids.Count];
497 SafeLsaPolicyHandle safeLsaPolicyHandle = null;
498 SafeLsaMemoryHandle referencedDomains = null;
499 SafeLsaMemoryHandle names = null;
500 try
501 {
502 int num = 0;
503 foreach (IdentityReference sourceSid in sourceSids)
504 {
505 if (!(sourceSid is SecurityIdentifier securityIdentifier))
506 {
507 throw new ArgumentException(System.SR.Argument_ImproperType, "sourceSids");
508 }
509 array2[num] = GCHandle.Alloc(securityIdentifier.BinaryForm, GCHandleType.Pinned);
510 array[num] = array2[num].AddrOfPinnedObject();
511 num++;
512 }
513 safeLsaPolicyHandle = Win32.LsaOpenPolicy(null, PolicyRights.POLICY_LOOKUP_NAMES);
514 someFailed = false;
515 uint num2 = global::Interop.Advapi32.LsaLookupSids(safeLsaPolicyHandle, sourceSids.Count, array, out referencedDomains, out names);
516 switch (num2)
517 {
518 case 3221225495u:
519 case 3221225626u:
520 throw new OutOfMemoryException();
521 case 3221225506u:
522 throw new UnauthorizedAccessException();
523 case 3221225587u:
524 case 263u:
525 someFailed = true;
526 break;
527 default:
528 {
529 uint error = global::Interop.Advapi32.LsaNtStatusToWinError(num2);
530 throw new Win32Exception((int)error);
531 }
532 case 0u:
533 break;
534 }
535 names.Initialize((uint)sourceSids.Count, (uint)Marshal.SizeOf<global::Interop.LSA_TRANSLATED_NAME>());
536 Win32.InitializeReferencedDomainsPointer(referencedDomains);
537 IdentityReferenceCollection identityReferenceCollection = new IdentityReferenceCollection(sourceSids.Count);
538 if (num2 == 0 || num2 == 263)
539 {
540 global::Interop.LSA_REFERENCED_DOMAIN_LIST lSA_REFERENCED_DOMAIN_LIST = referencedDomains.Read<global::Interop.LSA_REFERENCED_DOMAIN_LIST>(0uL);
541 string[] array3 = new string[lSA_REFERENCED_DOMAIN_LIST.Entries];
542 for (int i = 0; i < lSA_REFERENCED_DOMAIN_LIST.Entries; i++)
543 {
544 global::Interop.LSA_TRUST_INFORMATION lSA_TRUST_INFORMATION = Marshal.PtrToStructure<global::Interop.LSA_TRUST_INFORMATION>(new IntPtr((long)lSA_REFERENCED_DOMAIN_LIST.Domains + i * Marshal.SizeOf<global::Interop.LSA_TRUST_INFORMATION>()));
545 array3[i] = Marshal.PtrToStringUni(lSA_TRUST_INFORMATION.Name.Buffer, lSA_TRUST_INFORMATION.Name.Length / 2);
546 }
547 global::Interop.LSA_TRANSLATED_NAME[] array4 = new global::Interop.LSA_TRANSLATED_NAME[sourceSids.Count];
548 names.ReadArray(0uL, array4, 0, array4.Length);
549 for (int j = 0; j < sourceSids.Count; j++)
550 {
551 global::Interop.LSA_TRANSLATED_NAME lSA_TRANSLATED_NAME = array4[j];
552 switch ((SidNameUse)lSA_TRANSLATED_NAME.Use)
553 {
554 case SidNameUse.User:
555 case SidNameUse.Group:
556 case SidNameUse.Alias:
557 case SidNameUse.WellKnownGroup:
558 case SidNameUse.Computer:
559 {
560 string accountName = Marshal.PtrToStringUni(lSA_TRANSLATED_NAME.Name.Buffer, lSA_TRANSLATED_NAME.Name.Length / 2);
561 string domainName = array3[lSA_TRANSLATED_NAME.DomainIndex];
562 identityReferenceCollection.Add(new NTAccount(domainName, accountName));
563 break;
564 }
565 default:
566 someFailed = true;
567 identityReferenceCollection.Add(sourceSids[j]);
568 break;
569 }
570 }
571 }
572 else
573 {
574 for (int k = 0; k < sourceSids.Count; k++)
575 {
576 identityReferenceCollection.Add(sourceSids[k]);
577 }
578 }
579 return identityReferenceCollection;
580 }
581 finally
582 {
583 for (int l = 0; l < sourceSids.Count; l++)
584 {
585 if (array2[l].IsAllocated)
586 {
587 array2[l].Free();
588 }
589 }
590 safeLsaPolicyHandle?.Dispose();
591 referencedDomains?.Dispose();
592 names?.Dispose();
593 }
594 }
595
596 internal static IdentityReferenceCollection Translate(IdentityReferenceCollection sourceSids, Type targetType, bool forceSuccess)
597 {
598 bool someFailed;
599 IdentityReferenceCollection identityReferenceCollection = Translate(sourceSids, targetType, out someFailed);
600 if (forceSuccess && someFailed)
601 {
602 IdentityReferenceCollection identityReferenceCollection2 = new IdentityReferenceCollection();
603 foreach (IdentityReference item in identityReferenceCollection)
604 {
605 if (item.GetType() != targetType)
606 {
607 identityReferenceCollection2.Add(item);
608 }
609 }
610 throw new IdentityNotMappedException(System.SR.IdentityReference_IdentityNotMapped, identityReferenceCollection2);
611 }
612 return identityReferenceCollection;
613 }
614
615 internal static IdentityReferenceCollection Translate(IdentityReferenceCollection sourceSids, Type targetType, out bool someFailed)
616 {
617 if (sourceSids == null)
618 {
619 throw new ArgumentNullException("sourceSids");
620 }
621 if (targetType == typeof(NTAccount))
622 {
623 return TranslateToNTAccounts(sourceSids, out someFailed);
624 }
626 }
627}
static unsafe? string PtrToStringUni(IntPtr ptr)
Definition Marshal.cs:652
static ? object PtrToStructure(IntPtr ptr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors|DynamicallyAccessedMemberTypes.NonPublicConstructors)] Type structureType)
Definition Marshal.cs:1164
static int SizeOf(object structure)
Definition Marshal.cs:697
static string IdentityReference_IdentityNotMapped
Definition SR.cs:44
static string Argument_InvalidValue
Definition SR.cs:24
static string IdentityReference_IdentifierAuthorityTooLarge
Definition SR.cs:42
static string Format(string resourceFormat, object p1)
Definition SR.cs:118
static string IdentityReference_InvalidNumberOfSubauthorities
Definition SR.cs:46
static string IdentityReference_CannotCreateLogonIdsSid
Definition SR.cs:36
static string Argument_ImproperType
Definition SR.cs:20
static string IdentityReference_MustBeIdentityReference
Definition SR.cs:50
static string ArgumentOutOfRange_ArrayTooSmall
Definition SR.cs:74
static string IdentityReference_DomainSidRequired
Definition SR.cs:40
static string IdentityReference_NotAWindowsDomain
Definition SR.cs:52
static string Arg_EmptyCollection
Definition SR.cs:14
static string ArgumentOutOfRange_NeedNonNegNum
Definition SR.cs:32
static string IdentityReference_InvalidSidRevision
Definition SR.cs:48
Definition SR.cs:7
void CreateFromBinaryForm(byte[] binaryForm, int offset)
SecurityIdentifier(WellKnownSidType sidType, SecurityIdentifier? domainSid)
static IdentityReferenceCollection Translate(IdentityReferenceCollection sourceSids, Type targetType, out bool someFailed)
void CreateFromParts(IdentifierAuthority identifierAuthority, ReadOnlySpan< int > subAuthorities)
override bool Equals([NotNullWhen(true)] object? o)
static bool IsValidTargetTypeStatic(Type targetType)
static IdentityReferenceCollection Translate(IdentityReferenceCollection sourceSids, Type targetType, bool forceSuccess)
static IdentityReferenceCollection TranslateToNTAccounts(IdentityReferenceCollection sourceSids, out bool someFailed)
void GetBinaryForm(byte[] binaryForm, int offset)
SecurityIdentifier(IdentifierAuthority identifierAuthority, ReadOnlySpan< int > subAuthorities)
override IdentityReference Translate(Type targetType)
static bool operator==(SecurityIdentifier? left, SecurityIdentifier? right)
SecurityIdentifier(byte[] binaryForm, int offset)
override bool IsValidTargetType(Type targetType)
static bool operator!=(SecurityIdentifier? left, SecurityIdentifier? right)
static unsafe void InitializeReferencedDomainsPointer(SafeLsaMemoryHandle referencedDomains)
Definition Win32.cs:101
static int CreateWellKnownSid(WellKnownSidType sidType, SecurityIdentifier domainSid, out byte[] resultSid)
Definition Win32.cs:72
static int CreateSidFromString(string stringSid, out byte[] resultSid)
Definition Win32.cs:49
static int GetWindowsAccountDomainSid(SecurityIdentifier sid, out SecurityIdentifier resultSid)
Definition Win32.cs:126
static bool IsWellKnownSid(SecurityIdentifier sid, WellKnownSidType type)
Definition Win32.cs:141
static bool IsEqualDomainSid(SecurityIdentifier sid1, SecurityIdentifier sid2)
Definition Win32.cs:84
static SafeLsaPolicyHandle LsaOpenPolicy(string systemName, PolicyRights rights)
Definition Win32.cs:9
static GCHandle Alloc(object? value)
Definition GCHandle.cs:81
Span< T > Slice(int start)
Definition Span.cs:271