summaryrefslogtreecommitdiff
path: root/SecurityIdentifier.cs
diff options
context:
space:
mode:
authorJake Mannens <jake@asger.xyz>2023-10-06 19:00:57 +1100
committerJake Mannens <jake@asger.xyz>2023-10-06 19:00:57 +1100
commit36757ad31901cce4bb55f4911a28bb63ee1dee7a (patch)
tree0893771af5e973c45d05b6fb62f5bcde5280d75d /SecurityIdentifier.cs
parent2c6e3aa4456811a3d6412fc10019012a900eb6a0 (diff)
parent2c30354c4af308bf9856a3651d9ba3a686eed936 (diff)
Merge branch 'security' of gitlab.com:plasmicplexus/HyperBooru-Server into security
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;