예제 #1
0
        public ApplicationProxyInternal Initialize()
        {
            SecurityHelper.DemandUIWindowPermission();
            this._context = ActivationContext.CreatePartialActivationContext(this.GetApplicationIdentity(), new string[]
            {
                this._deploymentManifestPath,
                this._applicationManifestPath
            });
            ApplicationTrust trust = new ApplicationTrust(this.GetApplicationIdentity());

            ApplicationSecurityManager.UserApplicationTrusts.Remove(trust);
            PresentationAppDomainManager.IsDebug = true;
            PresentationAppDomainManager.DebugSecurityZoneURL = this._debugSecurityZoneURL.Value;
            PresentationAppDomainManager.SaveAppDomain        = true;
            ObjectHandle objectHandle = Activator.CreateInstance(this._context);

            if (PresentationAppDomainManager.SaveAppDomain)
            {
                AppDomain newAppDomain = objectHandle.Unwrap() as AppDomain;
                PresentationAppDomainManager.NewAppDomain = newAppDomain;
            }
            PresentationAppDomainManager presentationAppDomainManager = PresentationAppDomainManager.NewAppDomain.DomainManager as PresentationAppDomainManager;
            ApplicationProxyInternal     applicationProxyInternal     = presentationAppDomainManager.CreateApplicationProxyInternal();

            applicationProxyInternal.SetDebugSecurityZoneURL(this._debugSecurityZoneURL.Value);
            PresentationAppDomainManager.SaveAppDomain = false;
            return(applicationProxyInternal);
        }
예제 #2
0
        internal static Evidence MergeApplicationEvidence(Evidence evidence,
                                                          ApplicationIdentity applicationIdentity,
                                                          ActivationContext activationContext,
                                                          string[] activationData,
                                                          ApplicationTrust applicationTrust)
        {
            Evidence appEvidence = new Evidence();

            ActivationArguments activationArgs = (activationContext == null ? new ActivationArguments(applicationIdentity, activationData) : new ActivationArguments(activationContext, activationData));

            appEvidence = new Evidence();
            appEvidence.AddHostEvidence(activationArgs);

            if (applicationTrust != null)
            {
                appEvidence.AddHostEvidence(applicationTrust);
            }

            if (activationContext != null)
            {
                Evidence asiEvidence = new ApplicationSecurityInfo(activationContext).ApplicationEvidence;
                if (asiEvidence != null)
                {
                    appEvidence.MergeWithNoDuplicates(asiEvidence);
                }
            }

            if (evidence != null)
            {
                appEvidence.MergeWithNoDuplicates(evidence);
            }

            return(appEvidence);
        }
예제 #3
0
        public void ExtraInfo_NotSerializable()
        {
            ApplicationTrust at = new ApplicationTrust();

            at.ExtraInfo = this;
            SecurityElement se = at.ToXml();
        }
예제 #4
0
        // Called from the VM to do a pre-domain initialization check of the security state of the
        // AppDomain.  This method looks at the state of the security of an AppDomain before it is
        // completely initialized - so the output of this method does not always match what will be true
        // when the domain is completely initialized.  Instead, it is used to read what the input parameters
        // to the domain setup say about the domain.
        private static void PreResolve(out bool isFullyTrusted, out bool isHomogeneous)
        {
            //
            // There are three main cases:
            //   1. The AppDomain has an explict ApplicationTrust - we can use this to read the input state
            //      of the AppDomain.
            //   2. The AppDomain is using legacy CAS policy - this means we can't tell much about the
            //      domain itself without a full policy resolution.
            //   3. The domain is a standard v4+ AppDomain - these are always full trust and homogenous by
            //      default.
            //

            // If the AppDomain is setup with an ApplicationTrust then it is always homogenous and we can
            // tell its grant set right from the ApplicaitonTrust
            ApplicationTrust domainTrust = AppDomain.CurrentDomain.SetupInformation.ApplicationTrust;

            if (domainTrust != null)
            {
                isFullyTrusted = domainTrust.DefaultGrantSet.PermissionSet.IsUnrestricted();
                isHomogeneous  = true;
                return;
            }

            // Otherwise, see if the domain is being configured on input to use legacy CAS policy
            if (CompatibilitySwitches.IsNetFx40LegacySecurityPolicy || AppDomain.CurrentDomain.IsLegacyCasPolicyEnabled)
            {
                isFullyTrusted = false;
                isHomogeneous  = false;
                return;
            }

            // If none of the above is true, then we must be a standard AppDomain
            isFullyTrusted = true;
            isHomogeneous  = true;
        }
예제 #5
0
        public static Task<GetManifestCompletedEventArgs> DownloadManifestAsync(this InPlaceHostingManager manager) {
            var tcs = new TaskCompletionSource<GetManifestCompletedEventArgs>();

            manager.GetManifestCompleted += (sender, e) => {
                if(e.Error != null) {
                    tcs.SetException(e.Error);
                    return;
                }

                var trust = new ApplicationTrust();
                var permissions = new PermissionSet(PermissionState.Unrestricted);
                var statement = new PolicyStatement(permissions);

                trust.DefaultGrantSet = statement;
                trust.ApplicationIdentity = e.ApplicationIdentity;
                trust.IsApplicationTrustedToRun = true;

                ApplicationSecurityManager.UserApplicationTrusts.Add(trust);

                tcs.SetResult(e);
            };

            manager.GetManifestAsync();

            return tcs.Task;
        }
예제 #6
0
        protected static ObjectHandle CreateInstanceHelper(AppDomainSetup adSetup)
        {
            if (adSetup.ActivationArguments == null)
            {
                throw new ArgumentException(Environment.GetResourceString("Arg_MissingActivationArguments"));
            }
            adSetup.ActivationArguments.ActivateInstance = true;
            Evidence         evidence            = AppDomain.CurrentDomain.Evidence;
            Evidence         applicationEvidence = CmsUtils.MergeApplicationEvidence((Evidence)null, adSetup.ActivationArguments.ApplicationIdentity, adSetup.ActivationArguments.ActivationContext, adSetup.ActivationArguments.ActivationData);
            ApplicationTrust applicationTrust    = AppDomain.CurrentDomain.HostSecurityManager.DetermineApplicationTrust(applicationEvidence, evidence, new TrustManagerContext());

            if (applicationTrust == null || !applicationTrust.IsApplicationTrustedToRun)
            {
                throw new PolicyException(Environment.GetResourceString("Policy_NoExecutionPermission"), -2146233320, (Exception)null);
            }
            string         fullName             = adSetup.ActivationArguments.ApplicationIdentity.FullName;
            AppDomainSetup setup                = adSetup;
            Evidence       providedSecurityInfo = applicationEvidence;
            Evidence       creatorsSecurityInfo = providedSecurityInfo == null ? AppDomain.CurrentDomain.InternalEvidence : (Evidence)null;
            IntPtr         securityDescriptor   = AppDomain.CurrentDomain.GetSecurityDescriptor();
            ObjRef         instance             = AppDomain.nCreateInstance(fullName, setup, providedSecurityInfo, creatorsSecurityInfo, securityDescriptor);

            if (instance == null)
            {
                return((ObjectHandle)null);
            }
            return(RemotingServices.Unmarshal(instance) as ObjectHandle);
        }
예제 #7
0
        public static void ApplicationTrustCallMethods()
        {
            ApplicationTrust at = new ApplicationTrust();
            SecurityElement  se = new SecurityElement("");

            at.FromXml(se);
            se = at.ToXml();
        }
예제 #8
0
        public void FromXml_InvalidTag()
        {
            ApplicationTrust at = new ApplicationTrust();
            SecurityElement  se = at.ToXml();

            se.Tag = "MonoTrust";
            at.FromXml(se);
        }
예제 #9
0
        public void ApplicationIdentity_Null()
        {
            ApplicationTrust at = new ApplicationTrust();

            at.ApplicationIdentity = new ApplicationIdentity("Mono Unit Test");
            // once set it cannot be "unset" ...
            at.ApplicationIdentity = null;
        }
예제 #10
0
        public void ApplicationIdentity_Change()
        {
            ApplicationTrust at = new ApplicationTrust();

            at.ApplicationIdentity = new ApplicationIdentity("Mono Unit Test");
            // ... but it can be changed
            at.ApplicationIdentity = new ApplicationIdentity("Mono Unit Test Too");
        }
예제 #11
0
        internal ApplicationTrust InternalGetApplicationTrust()
        {
            if (_ApplicationTrust == null)
            {
                return(null);
            }
            ApplicationTrust grantSet = new ApplicationTrust();

            return(grantSet);
        }
예제 #12
0
        public void ApplicationIdentity()
        {
            ApplicationTrust at = new ApplicationTrust();

            at.ApplicationIdentity = new ApplicationIdentity("Mono Unit Test");
            Assert.IsNotNull(at.ApplicationIdentity, "not null");
            string expected = AdjustLineEnds("<ApplicationTrust version=\"1\"\r\nFullName=\"Mono Unit Test, Culture=neutral\">\r\n<DefaultGrant>\r\n<PolicyStatement version=\"1\">\r\n<PermissionSet class=\"System.Security.PermissionSet\"\r\nversion=\"1\"/>\r\n</PolicyStatement>\r\n</DefaultGrant>\r\n</ApplicationTrust>\r\n");

            Assert.AreEqual(expected, AdjustLineEnds(at.ToXml().ToString()), "XML");
        }
예제 #13
0
        public void GetFullTrustAssembliesListTest()
        {
            // We can only set a full trust list via the AppDomain creation code path
            AppDomainSetup ads = new AppDomainSetup();

            ads.ApplicationBase = AppDomain.CurrentDomain.BaseDirectory;

            PermissionSet sandbox = new PermissionSet(PermissionState.None);

            sandbox.AddPermission(new SecurityPermission(SecurityPermissionFlag.Execution));

            StrongName[] fullTrustList = new StrongName[]
            {
                typeof(object).Assembly.GetStrongName(),
                typeof(System.Security.Cryptography.AesManaged).Assembly.GetStrongName(),
                typeof(System.Security.Cryptography.Xml.SignedXml).Assembly.GetStrongName()
            };

            AppDomain domain = AppDomainFactory.CreateHomogenousDomain(sandbox, fullTrustList);

            ApplicationTrust   domainTrust       = domain.ApplicationTrust;
            IList <StrongName> trustedAssemblies = domainTrust.GetFullTrustAssemblies();

            Assert.AreEqual(3, trustedAssemblies.Count);

            bool foundMscorlib       = false;
            bool foundSystemCore     = false;
            bool foundSystemSecurity = false;

            foreach (StrongName sn in trustedAssemblies)
            {
                if (String.Equals("mscorlib", sn.Name, StringComparison.OrdinalIgnoreCase) &&
                    String.Equals(s_ecmaPublicKey, sn.PublicKey.ToString(), StringComparison.OrdinalIgnoreCase) &&
                    sn.Version.Major >= 2)
                {
                    foundMscorlib = true;
                }
                else if (String.Equals("System.Core", sn.Name, StringComparison.OrdinalIgnoreCase) &&
                         String.Equals(s_ecmaPublicKey, sn.PublicKey.ToString(), StringComparison.OrdinalIgnoreCase) &&
                         sn.Version.Major >= 3)
                {
                    foundSystemCore = true;
                }
                else if (String.Equals("System.Security", sn.Name, StringComparison.OrdinalIgnoreCase) &&
                         String.Equals(s_microsoftPublicKey, sn.PublicKey.ToString(), StringComparison.OrdinalIgnoreCase) &&
                         sn.Version.Major >= 2)
                {
                    foundSystemSecurity = true;
                }
            }

            Assert.IsTrue(foundMscorlib);
            Assert.IsTrue(foundSystemCore);
            Assert.IsTrue(foundSystemSecurity);
        }
        /// <summary>
        ///     An ApplicationTrust object contains a default grant set as well as a list of assemblies which
        ///     are fully trusted. The GetFullTrustAssemblies method retrieves the strong names of assemblies
        ///     which the ApplicationTrust object considers to be fully trusted.
        /// </summary>
        public static IList <StrongName> GetFullTrustAssemblies(this ApplicationTrust applicationTrust)
        {
            List <StrongName> fullTrustAssemblies = new List <StrongName>();

            // ApplicationTrust does not expose the full trust list programatically.  To access this
            // information, we need to write out the ApplicationTrust XML and then pull out the strong names
            // from the serialized XML.
            SecurityElement applicationTrustXml = applicationTrust.ToXml();

            // First look for the FullTrustAssemblies node
            SecurityElement fullTrustAssembliesXml = null;

            if (applicationTrustXml.Children != null)
            {
                for (int i = 0; i < applicationTrustXml.Children.Count && fullTrustAssembliesXml == null; ++i)
                {
                    SecurityElement currentChild = applicationTrustXml.Children[i] as SecurityElement;
                    if (String.Equals(currentChild.Tag, "FullTrustAssemblies", StringComparison.Ordinal))
                    {
                        fullTrustAssembliesXml = currentChild;
                    }
                }
            }

            // If we found a FullTrustAssemblies node, each child will represent the strong name of one
            // fully trusted assembly
            if (fullTrustAssembliesXml != null &&
                fullTrustAssembliesXml.Children != null)
            {
                foreach (SecurityElement fullTrustAssemblyXml in fullTrustAssembliesXml.Children)
                {
                    // We only know how to parse v1 StrongName XML
                    if (String.Equals(fullTrustAssemblyXml.Tag, "StrongName", StringComparison.Ordinal) &&
                        String.Equals(fullTrustAssemblyXml.Attribute("version"), "1", StringComparison.Ordinal))
                    {
                        string assemblyName = fullTrustAssemblyXml.Attribute("Name");
                        assemblyName = assemblyName != null ? assemblyName : String.Empty;

                        string  assemblyVersionString = fullTrustAssemblyXml.Attribute("Version");
                        Version assemblyVersion       = assemblyVersionString != null ? new Version(assemblyVersionString) : new Version();

                        string assemblyKeyString = fullTrustAssemblyXml.Attribute("Key");
                        byte[] assemblyKey       = assemblyKeyString != null?HexToBytes(assemblyKeyString) : new byte[0];

                        StrongName fullTrustAssembly = new StrongName(new StrongNamePublicKeyBlob(assemblyKey),
                                                                      assemblyName,
                                                                      assemblyVersion);

                        fullTrustAssemblies.Add(fullTrustAssembly);
                    }
                }
            }

            return(fullTrustAssemblies.AsReadOnly());
        }
예제 #15
0
        public void FromXml_NoVersion()
        {
            ApplicationTrust at = new ApplicationTrust();
            SecurityElement  se = at.ToXml();

            SecurityElement w = new SecurityElement(se.Tag);

            foreach (SecurityElement child in se.Children)
            {
                w.AddChild(child);
            }

            at.FromXml(w);
        }
예제 #16
0
        public void Persist()
        {
            ApplicationTrust at = new ApplicationTrust();

            at.Persist = true;
            Assert.IsTrue(at.Persist, "true");

            string expected = AdjustLineEnds("<ApplicationTrust version=\"1\"\r\nPersist=\"true\">\r\n<DefaultGrant>\r\n<PolicyStatement version=\"1\">\r\n<PermissionSet class=\"System.Security.PermissionSet\"\r\nversion=\"1\"/>\r\n</PolicyStatement>\r\n</DefaultGrant>\r\n</ApplicationTrust>\r\n");

            Assert.AreEqual(expected, AdjustLineEnds(at.ToXml().ToString()), "XML");

            at.Persist = false;
            Assert.IsFalse(at.Persist, "false");
        }
예제 #17
0
        public void ExtraInfo()
        {
            ApplicationTrust at = new ApplicationTrust();

            at.ExtraInfo = "Mono";
            Assert.IsNotNull(at.ExtraInfo, "not null");

            string expected = AdjustLineEnds("<ApplicationTrust version=\"1\">\r\n<DefaultGrant>\r\n<PolicyStatement version=\"1\">\r\n<PermissionSet class=\"System.Security.PermissionSet\"\r\nversion=\"1\"/>\r\n</PolicyStatement>\r\n</DefaultGrant>\r\n<ExtraInfo Data=\"0001000000FFFFFFFF01000000000000000601000000044D6F6E6F0B\"/>\r\n</ApplicationTrust>\r\n");

            Assert.AreEqual(expected, AdjustLineEnds(at.ToXml().ToString()), "XML");

            at.ExtraInfo = null;
            Assert.IsNull(at.ExtraInfo, "null");
        }
예제 #18
0
        public void FromXml_InvalidVersion()
        {
            ApplicationTrust at = new ApplicationTrust();
            SecurityElement  se = at.ToXml();

            SecurityElement w = new SecurityElement(se.Tag);

            w.AddAttribute("version", "2");
            foreach (SecurityElement child in se.Children)
            {
                w.AddChild(child);
            }

            at.FromXml(w);
        }
예제 #19
0
        public void Constructor_Empty()
        {
            ApplicationTrust at = new ApplicationTrust();

            Assert.IsNull(at.ApplicationIdentity, "ApplicationIdentity");
            Assert.AreEqual(PolicyStatementAttribute.Nothing, at.DefaultGrantSet.Attributes, "DefaultGrantSet.Attributes");
            Assert.AreEqual(String.Empty, at.DefaultGrantSet.AttributeString, "DefaultGrantSet.AttributeString");
            Assert.IsTrue(at.DefaultGrantSet.PermissionSet.IsEmpty(), "DefaultGrantSet.PermissionSet.IsEmpty");
            Assert.IsFalse(at.DefaultGrantSet.PermissionSet.IsUnrestricted(), "DefaultGrantSet.PermissionSet.IsUnrestricted");
            Assert.IsNull(at.ExtraInfo, "ExtraInfo");
            Assert.IsFalse(at.IsApplicationTrustedToRun, "IsApplicationTrustedToRun");
            Assert.IsFalse(at.Persist, "Persist");
            string expected = AdjustLineEnds("<ApplicationTrust version=\"1\">\r\n<DefaultGrant>\r\n<PolicyStatement version=\"1\">\r\n<PermissionSet class=\"System.Security.PermissionSet\"\r\nversion=\"1\"/>\r\n</PolicyStatement>\r\n</DefaultGrant>\r\n</ApplicationTrust>\r\n");

            Assert.AreEqual(expected, AdjustLineEnds(at.ToXml().ToString()), "XML");
        }
예제 #20
0
        public static void ApplicationTrustCollectionCallMethods()
        {
            ApplicationTrustCollection atc = (ApplicationTrustCollection)FormatterServices.GetUninitializedObject(typeof(ApplicationTrustCollection));
            ApplicationTrust           at  = new ApplicationTrust();
            int testint = atc.Add(at);

            ApplicationTrust[] atarray = new ApplicationTrust[1];
            atc.AddRange(atarray);
            atc.AddRange(atc);
            atc.Clear();
            atc.CopyTo(atarray, 0);
            ApplicationTrustEnumerator ate = atc.GetEnumerator();

            atc.Remove(at);
            atc.RemoveRange(atarray);
            atc.RemoveRange(atc);
        }
예제 #21
0
        private static void FixTrust(ApplicationDeployment currentDeployment)
        {
            //Create the appropriate Trust settings so the Application can do
            //Click-Once Related updating
            var deploymentFullName = currentDeployment.UpdatedApplicationFullName;
            var appId      = new ApplicationIdentity(deploymentFullName);
            var everything = new PermissionSet(PermissionState.Unrestricted);

            var trust = new ApplicationTrust(appId)
            {
                DefaultGrantSet           = new PolicyStatement(everything),
                IsApplicationTrustedToRun = true,
                Persist = true
            };

            ApplicationSecurityManager.UserApplicationTrusts.Add(trust);
        }
예제 #22
0
        public static void ApplicationTrustCollectionCallMethods()
        {
            ApplicationTrustCollection atc = (ApplicationTrustCollection)Activator.CreateInstance(typeof(ApplicationTrustCollection), true);
            ApplicationTrust           at  = new ApplicationTrust();
            int testint = atc.Add(at);

            ApplicationTrust[] atarray = new ApplicationTrust[1];
            atc.AddRange(atarray);
            atc.AddRange(atc);
            atc.Clear();
            atc.CopyTo(atarray, 0);
            ApplicationTrustEnumerator ate = atc.GetEnumerator();

            atc.Remove(at);
            atc.RemoveRange(atarray);
            atc.RemoveRange(atc);
        }
        static void Main(string[] args)
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            if (args.Length > 0 && args[0] == "startui")
            {
                Application.Run(new Form1());
            }
            else
            {
                PermissionSet              permissions          = new PermissionSet(PermissionState.Unrestricted);
                string                     AppName              = Assembly.GetEntryAssembly().GetName().Name;
                string                     AppExe               = $"{AppName}.exe";
                string                     DebugSecurityZoneURL = $"{AppExe}.manifest";
                string                     AppManifestPath      = $"{AppName}.application";
                string                     appType              = "win32";
                AssemblyIdentity           ca = AssemblyIdentity.FromManifest(AppManifestPath);
                string                     appIdentitySubString = $"Version={ca.Version}, Culture={ca.Culture}, PublicKeyToken={ca.PublicKeyToken}, ProcessorArchitecture={ca.ProcessorArchitecture}";
                string                     assemblyIdentity     = $"http://tempuri.org/{AppManifestPath}#{AppManifestPath}, {appIdentitySubString}/{AppExe}, {appIdentitySubString},Type={appType}";
                System.ApplicationIdentity applicationIdentity  = new System.ApplicationIdentity(assemblyIdentity);

                ApplicationTrust appTrust = new ApplicationTrust();
                appTrust.DefaultGrantSet           = new PolicyStatement(permissions, PolicyStatementAttribute.Nothing);
                appTrust.IsApplicationTrustedToRun = true;
                appTrust.ApplicationIdentity       = applicationIdentity;

                AppDomainSetup adSetup = new AppDomainSetup
                {
                    ApplicationBase     = AppDomain.CurrentDomain.BaseDirectory,
                    ActivationArguments = new ActivationArguments(
                        ActivationContext.CreatePartialActivationContext(
                            applicationIdentity,
                            new string[] { AppManifestPath, DebugSecurityZoneURL })
                        ),
                    ApplicationTrust = appTrust
                };

                Evidence e = new Evidence();
                e.AddHostEvidence(appTrust);

                AppDomain a = AppDomain.CreateDomain("Internet Security Zone AppDomain", e, adSetup, permissions);
                a.ExecuteAssembly(AppExe, e, new string[] { "startui" });
            }
        }
        public override ApplicationTrust DetermineApplicationTrust(Evidence applicationEvidence, Evidence activatorEvidence, TrustManagerContext context)
        {
            if (applicationEvidence == null)
            {
                throw new ArgumentNullException("applicationEvidence");
            }

            // Get the activation context from the application evidence.
            // This HostSecurityManager does not examine the activator evidence
            // nor is it concerned with the TrustManagerContext;
            // it simply grants the requested grant in the application manifest.

            IEnumerator         enumerator     = applicationEvidence.GetHostEnumerator();
            ActivationArguments activationArgs = null;

            while (enumerator.MoveNext())
            {
                activationArgs = enumerator.Current as ActivationArguments;
                if (activationArgs != null)
                {
                    break;
                }
            }

            if (activationArgs == null)
            {
                return(null);
            }

            ActivationContext activationContext = activationArgs.ActivationContext;

            if (activationContext == null)
            {
                return(null);
            }

            //<Snippet4>
            ApplicationTrust        trust = new ApplicationTrust(activationContext.Identity);
            ApplicationSecurityInfo asi   = new ApplicationSecurityInfo(activationContext);

            trust.DefaultGrantSet           = new PolicyStatement(asi.DefaultRequestSet, PolicyStatementAttribute.Nothing);
            trust.IsApplicationTrustedToRun = true;
            //</Snippet4>
            return(trust);
        }
예제 #25
0
        public void DefaultGrantSet()
        {
            ApplicationTrust at = new ApplicationTrust();

            at.DefaultGrantSet = new PolicyStatement(new PermissionSet(PermissionState.Unrestricted));
            Assert.IsNotNull(at.DefaultGrantSet, "not null");
            string expected = AdjustLineEnds("<ApplicationTrust version=\"1\">\r\n<DefaultGrant>\r\n<PolicyStatement version=\"1\">\r\n<PermissionSet class=\"System.Security.PermissionSet\"\r\nversion=\"1\"\r\nUnrestricted=\"true\"/>\r\n</PolicyStatement>\r\n</DefaultGrant>\r\n</ApplicationTrust>\r\n");

            Assert.AreEqual(expected, AdjustLineEnds(at.ToXml().ToString()), "XML");

            at.DefaultGrantSet = null;
            // returns to defaults
            Assert.IsNotNull(at.DefaultGrantSet, "null");
            Assert.AreEqual(PolicyStatementAttribute.Nothing, at.DefaultGrantSet.Attributes, "DefaultGrantSet.Attributes");
            Assert.AreEqual(String.Empty, at.DefaultGrantSet.AttributeString, "DefaultGrantSet.AttributeString");
            Assert.IsTrue(at.DefaultGrantSet.PermissionSet.IsEmpty(), "DefaultGrantSet.PermissionSet.IsEmpty");
            Assert.IsFalse(at.DefaultGrantSet.PermissionSet.IsUnrestricted(), "DefaultGrantSet.PermissionSet.IsUnrestricted");
        }
예제 #26
0
        // Token: 0x06001C6B RID: 7275 RVA: 0x00061834 File Offset: 0x0005FA34
        private static void PreResolve(out bool isFullyTrusted, out bool isHomogeneous)
        {
            ApplicationTrust applicationTrust = AppDomain.CurrentDomain.SetupInformation.ApplicationTrust;

            if (applicationTrust != null)
            {
                isFullyTrusted = applicationTrust.DefaultGrantSet.PermissionSet.IsUnrestricted();
                isHomogeneous  = true;
                return;
            }
            if (CompatibilitySwitches.IsNetFx40LegacySecurityPolicy || AppDomain.CurrentDomain.IsLegacyCasPolicyEnabled)
            {
                isFullyTrusted = false;
                isHomogeneous  = false;
                return;
            }
            isFullyTrusted = true;
            isHomogeneous  = true;
        }
        public virtual ApplicationTrust DetermineApplicationTrust(Evidence applicationEvidence, Evidence activatorEvidence, TrustManagerContext context)
        {
            if (applicationEvidence == null)
            {
                throw new ArgumentNullException("applicationEvidence");
            }
            ActivationArguments hostEvidence = applicationEvidence.GetHostEvidence <ActivationArguments>();

            if (hostEvidence == null)
            {
                throw new ArgumentException(Environment.GetResourceString("Policy_MissingActivationContextInAppEvidence"));
            }
            ActivationContext activationContext = hostEvidence.ActivationContext;

            if (activationContext == null)
            {
                throw new ArgumentException(Environment.GetResourceString("Policy_MissingActivationContextInAppEvidence"));
            }
            ApplicationTrust applicationTrust = applicationEvidence.GetHostEvidence <ApplicationTrust>();

            if ((applicationTrust != null) && !CmsUtils.CompareIdentities(applicationTrust.ApplicationIdentity, hostEvidence.ApplicationIdentity, ApplicationVersionMatch.MatchExactVersion))
            {
                applicationTrust = null;
            }
            if (applicationTrust == null)
            {
                if ((AppDomain.CurrentDomain.ApplicationTrust != null) && CmsUtils.CompareIdentities(AppDomain.CurrentDomain.ApplicationTrust.ApplicationIdentity, hostEvidence.ApplicationIdentity, ApplicationVersionMatch.MatchExactVersion))
                {
                    applicationTrust = AppDomain.CurrentDomain.ApplicationTrust;
                }
                else
                {
                    applicationTrust = ApplicationSecurityManager.DetermineApplicationTrustInternal(activationContext, context);
                }
            }
            ApplicationSecurityInfo info = new ApplicationSecurityInfo(activationContext);

            if (((applicationTrust != null) && applicationTrust.IsApplicationTrustedToRun) && !info.DefaultRequestSet.IsSubsetOf(applicationTrust.DefaultGrantSet.PermissionSet))
            {
                throw new InvalidOperationException(Environment.GetResourceString("Policy_AppTrustMustGrantAppRequest"));
            }
            return(applicationTrust);
        }
예제 #28
0
        private void DeserializeNonPrimitives()
        {
            lock (this) {
                if (serialized_non_primitives == null)
                {
                    return;
                }

                BinaryFormatter bf = new BinaryFormatter();
                MemoryStream    ms = new MemoryStream(serialized_non_primitives);

                object [] arr = (object [])bf.Deserialize(ms);

                _activationArguments = (ActivationArguments)arr [0];
                domain_initializer   = (AppDomainInitializer)arr [1];
                application_trust    = (ApplicationTrust)arr [2];

                serialized_non_primitives = null;
            }
        }
예제 #29
0
        public void FromXml_NoChild()
        {
            ApplicationTrust at = new ApplicationTrust();
            SecurityElement  se = at.ToXml();

            SecurityElement w = new SecurityElement(se.Tag);

            w.AddAttribute("version", "1");

            at.FromXml(w);

            Assert.IsNull(at.ApplicationIdentity, "ApplicationIdentity");
            Assert.AreEqual(PolicyStatementAttribute.Nothing, at.DefaultGrantSet.Attributes, "DefaultGrantSet.Attributes");
            Assert.AreEqual(String.Empty, at.DefaultGrantSet.AttributeString, "DefaultGrantSet.AttributeString");
            Assert.IsTrue(at.DefaultGrantSet.PermissionSet.IsEmpty(), "DefaultGrantSet.PermissionSet.IsEmpty");
            Assert.IsFalse(at.DefaultGrantSet.PermissionSet.IsUnrestricted(), "DefaultGrantSet.PermissionSet.IsUnrestricted");
            Assert.IsNull(at.ExtraInfo, "ExtraInfo");
            Assert.IsFalse(at.IsApplicationTrustedToRun, "IsApplicationTrustedToRun");
            Assert.IsFalse(at.Persist, "Persist");
        }
예제 #30
0
        private void SetupDomainSecurityForHomogeneousDomain(ApplicationTrust appTrust,
                                                             bool runtimeSuppliedHomogenousGrantSet)
        {
            // If the CLR has supplied the homogenous grant set (that is, this domain would have been
            // heterogenous in v2.0), then we need to strip the ApplicationTrust from the AppDomainSetup of
            // the current domain.  This prevents code which does:
            //   AppDomain.CreateDomain(..., AppDomain.CurrentDomain.SetupInformation);
            //
            // From looking like it is trying to create a homogenous domain intentionally, and therefore
            // having its evidence check bypassed.
            if (runtimeSuppliedHomogenousGrantSet)
            {
                BCLDebug.Assert(_FusionStore.ApplicationTrust != null, "Expected to find runtime supplied ApplicationTrust");
            }

            _applicationTrust = appTrust;

            // Set the homogeneous bit in the VM's ApplicationSecurityDescriptor.
            SetSecurityHomogeneousFlag(GetNativeHandle(),
                                       runtimeSuppliedHomogenousGrantSet);
        }
예제 #31
0
        public void ToFromXmlRoundtrip()
        {
            ApplicationTrust at = new ApplicationTrust();

            at.ApplicationIdentity       = new ApplicationIdentity("Mono Unit Test");
            at.DefaultGrantSet           = new PolicyStatement(new PermissionSet(PermissionState.Unrestricted));
            at.ExtraInfo                 = "Mono";
            at.IsApplicationTrustedToRun = true;
            at.Persist = true;

            SecurityElement se       = at.ToXml();
            string          expected = AdjustLineEnds("<ApplicationTrust version=\"1\"\r\nFullName=\"Mono Unit Test, Culture=neutral\"\r\nTrustedToRun=\"true\"\r\nPersist=\"true\">\r\n<DefaultGrant>\r\n<PolicyStatement version=\"1\">\r\n<PermissionSet class=\"System.Security.PermissionSet\"\r\nversion=\"1\"\r\nUnrestricted=\"true\"/>\r\n</PolicyStatement>\r\n</DefaultGrant>\r\n<ExtraInfo Data=\"0001000000FFFFFFFF01000000000000000601000000044D6F6E6F0B\"/>\r\n</ApplicationTrust>\r\n");

            Assert.AreEqual(expected, AdjustLineEnds(at.ToXml().ToString()), "XML");

            ApplicationTrust copy = new ApplicationTrust();

            copy.FromXml(se);
            se = copy.ToXml();
            Assert.AreEqual(expected, AdjustLineEnds(at.ToXml().ToString()), "Copy");
        }
	public void RemoveRange(ApplicationTrust[] trusts) {}
	public void CopyTo(ApplicationTrust[] array, int index) {}
예제 #34
0
 private void DeleteCachedApplicationTrust(ApplicationIdentity identity)
 {
     if (identity != null)
     {
         ApplicationTrust trust = new ApplicationTrust(identity);
         // This does not throw if the trust isn't there.
         ApplicationSecurityManager.UserApplicationTrusts.Remove(trust);
     }
 }
	// Methods
	public int Add(ApplicationTrust trust) {}
	public void AddRange(ApplicationTrust[] trusts) {}
	public void Remove(ApplicationTrust trust) {}
예제 #38
0
        private static void FixTrust(ApplicationDeployment currentDeployment)
        {
            //Create the appropriate Trust settings so the Application can do
            //Click-Once Related updating
            var deploymentFullName = currentDeployment.UpdatedApplicationFullName;
            var appId = new ApplicationIdentity(deploymentFullName);
            var everything = new PermissionSet(PermissionState.Unrestricted);

            var trust = new ApplicationTrust(appId)
                            {
                                DefaultGrantSet = new PolicyStatement(everything),
                                IsApplicationTrustedToRun = true,
                                Persist = true
                            };

            ApplicationSecurityManager.UserApplicationTrusts.Add(trust);
        }