Пример #1
0
        protected Ace(AceType aceType, PrincipalIdentifier principal, AccessMask accessMask)
        {
            Requires.Argument <PrincipalIdentifier>("principal", principal).NotNull();

            this.AceType    = aceType;
            this.Principal  = principal;
            this.AccessMask = accessMask;
        }
Пример #2
0
        internal static unsafe PrincipalIdentifier FromNative(NativeTypes.FABRIC_SECURITY_PRINCIPAL_IDENTIFIER *nativePtr)
        {
            PrincipalIdentifier principalIdentifier = null;

            switch (nativePtr->Kind)
            {
            case NativeTypes.FABRIC_SECURITY_PRINCIPAL_IDENTIFIER_KIND.FABRIC_SECURITY_PRINCIPAL_IDENTIFIER_KIND_X509:
            {
                principalIdentifier = X509PrincipalIdentifier.FromNative(
                    (NativeTypes.FABRIC_SECURITY_X509_PRINCIPAL_IDENTIFIER *)nativePtr->Value);
                break;
            }

            case NativeTypes.FABRIC_SECURITY_PRINCIPAL_IDENTIFIER_KIND.FABRIC_SECURITY_PRINCIPAL_IDENTIFIER_KIND_ROLE:
            {
                principalIdentifier = RolePrincipalIdentifier.FromNative(
                    (NativeTypes.FABRIC_SECURITY_ROLE_PRINCIPAL_IDENTIFIER *)nativePtr->Value);
                break;
            }

            case NativeTypes.FABRIC_SECURITY_PRINCIPAL_IDENTIFIER_KIND.FABRIC_SECURITY_PRINCIPAL_IDENTIFIER_KIND_CLAIM:
            {
                principalIdentifier = ClaimPrincipalIdentifier.FromNative(
                    (NativeTypes.FABRIC_SECURITY_CLAIM_PRINCIPAL_IDENTIFIER *)nativePtr->Value);
                break;
            }

            case NativeTypes.FABRIC_SECURITY_PRINCIPAL_IDENTIFIER_KIND.FABRIC_SECURITY_PRINCIPAL_IDENTIFIER_KIND_WINDOWS:
            {
                principalIdentifier = WindowsPrincipalIdentifier.FromNative(
                    (NativeTypes.FABRIC_SECURITY_WINDOWS_PRINCIPAL_IDENTIFIER *)nativePtr->Value);
                break;
            }

            default:
            {
                AppTrace.TraceSource.WriteError(
                    "PrincipalIdentifier.FromNative",
                    "Unknown FABRIC_SECURITY_PRINCIPAL_IDENTIFIER_KIND : {0}",
                    nativePtr->Kind);
                throw new ArgumentOutOfRangeException("FABRIC_SECURITY_PRINCIPAL_IDENTIFIER.Kind");
            }
            }

            return(principalIdentifier);
        }
Пример #3
0
        internal static unsafe Ace FromNative(NativeTypes.FABRIC_SECURITY_ACE nativeAce)
        {
            var principal  = PrincipalIdentifier.FromNative((NativeTypes.FABRIC_SECURITY_PRINCIPAL_IDENTIFIER *)nativeAce.Principal);
            var accessMask = (AccessMask)nativeAce.AccessMask;
            var aceType    = (AceType)nativeAce.AceType;

            if (aceType == AceType.Allowed)
            {
                return(new AllowedAce(principal, accessMask));
            }
            else
            {
                AppTrace.TraceSource.WriteError(
                    "Ace.FromNative",
                    "Unknown FABRIC_SECURITY_ACE_TYPE : {0}",
                    nativeAce.AceType);
                throw new ArgumentOutOfRangeException("FABRIC_SECURITY_ACE.AceType");
            }
        }
Пример #4
0
 protected Ace(AceType aceType, PrincipalIdentifier principal)
     : this(aceType, principal, AccessMask.None)
 {
 }