summaryrefslogtreecommitdiff
path: root/SecurityIdentifier.cs
diff options
context:
space:
mode:
authorJake Mannens <jake@asger.xyz>2023-10-06 16:18:30 +1100
committerJake Mannens <jake@asger.xyz>2023-10-06 16:18:30 +1100
commit2c30354c4af308bf9856a3651d9ba3a686eed936 (patch)
tree74fe8ee40fb519feb5a865622fc32531b94220f7 /SecurityIdentifier.cs
parent3d5f6e47bd74ce77d5ec253f51b7cef1b42099ef (diff)
More work on AclDialog
Diffstat (limited to 'SecurityIdentifier.cs')
-rw-r--r--SecurityIdentifier.cs18
1 files changed, 12 insertions, 6 deletions
diff --git a/SecurityIdentifier.cs b/SecurityIdentifier.cs
index 075788d..8ffaa1b 100644
--- a/SecurityIdentifier.cs
+++ b/SecurityIdentifier.cs
@@ -15,6 +15,7 @@ public static class WellKnownSid {
public static readonly SecurityIdentifier CreatorGroupSid = new("S-1-3-1");
private static readonly (string name, SecurityIdentifier sid)[] nameMap = new[] {
+ ( "Nobody", NullSid ),
( "Everyone", WorldSid ),
( "LOCAL", LocalSid ),
( "CREATOR OWNER", CreatorGroupSid ),
@@ -106,14 +107,19 @@ public class SecurityIdentifier {
}
}
- public override string ToString() {
- var identifierAuthority = new BigInteger(SidStruct.IdentifierAuthority, true, true);
- var subAuthorities = string.Join('-',SidStruct.SubAuthorities.Select(sa => sa.ToString()));
- if(!string.IsNullOrEmpty(subAuthorities))
- subAuthorities = "-" + subAuthorities;
- return $"S-{SidStruct.Revision}-{identifierAuthority}{subAuthorities}";
+ public string SddlForm {
+ get {
+ var identifierAuthority = new BigInteger(SidStruct.IdentifierAuthority, true, true);
+ var subAuthorities = string.Join('-',SidStruct.SubAuthorities.Select(sa => sa.ToString()));
+ if(!string.IsNullOrEmpty(subAuthorities))
+ subAuthorities = "-" + subAuthorities;
+ return $"S-{SidStruct.Revision}-{identifierAuthority}{subAuthorities}";
+ }
}
+ public override string ToString() =>
+ WellKnownSid.TranslateSid(this) ?? SddlForm;
+
public static bool operator ==(SecurityIdentifier? x, SecurityIdentifier? y) =>
x?.SidStruct.Equals(y?.SidStruct) ?? false;