Exemplo n.º 1
0
        //------------------------------------------------------
        //
        // IMEMBERSHIPCONDITION IMPLEMENTATION
        //
        //------------------------------------------------------

        /// <include file='doc\StrongNameMembershipCondition.uex' path='docs/doc[@for="StrongNameMembershipCondition.Check"]/*' />
        public bool Check(Evidence evidence)
        {
            if (evidence == null)
            {
                return(false);
            }

            IEnumerator enumerator = evidence.GetHostEnumerator();

            while (enumerator.MoveNext())
            {
                if (enumerator.Current is StrongName)
                {
                    StrongName name = (StrongName)enumerator.Current;

                    if ((this.PublicKey != null && this.PublicKey.Equals(name.PublicKey)) &&
                        (this.Name == null || (name.Name != null && StrongName.CompareNames(name.Name, this.Name))) &&
                        ((Object)this.Version == null || ((Object)name.Version != null && name.Version.CompareTo(this.Version) == 0)))
                    {
                        return(true);
                    }
                }
            }
            return(false);
        }
        bool IReportMatchMembershipCondition.Check(Evidence evidence, out object usedEvidence)
        {
            usedEvidence = null;

            if (evidence == null)
            {
                return(false);
            }

            StrongName name = evidence.GetDelayEvaluatedHostEvidence <StrongName>();

            if (name != null)
            {
                bool publicKeyMatch = PublicKey != null && PublicKey.Equals(name.PublicKey);
                bool nameMatch      = Name == null || (name.Name != null && StrongName.CompareNames(name.Name, Name));
                bool versionMatch   = (object)Version == null || ((object)name.Version != null && name.Version.CompareTo(Version) == 0);

                if (publicKeyMatch && nameMatch && versionMatch)
                {
                    // Note that we explicitly do not want to mark the strong name evidence as used at
                    // this point, since we could be a child code group where our parent provides more
                    // trust than we do.  For instance, if we're in a setup like this:
                    //
                    //   AllCode -> FullTrust
                    //     StrongName -> FullTrust
                    //
                    // the StrongName code group didn't add anything to the final grant set and therefore
                    // does not need to be evaluated.
                    usedEvidence = name;
                    return(true);
                }
            }

            return(false);
        }
 bool IReportMatchMembershipCondition.Check(Evidence evidence, out object usedEvidence)
 {
     usedEvidence = null;
     if (evidence != null)
     {
         StrongName delayEvaluatedHostEvidence = evidence.GetDelayEvaluatedHostEvidence <StrongName>();
         if (delayEvaluatedHostEvidence != null)
         {
             bool flag  = (this.PublicKey != null) && this.PublicKey.Equals(delayEvaluatedHostEvidence.PublicKey);
             bool flag2 = (this.Name == null) || ((delayEvaluatedHostEvidence.Name != null) && StrongName.CompareNames(delayEvaluatedHostEvidence.Name, this.Name));
             bool flag3 = (this.Version == null) || ((delayEvaluatedHostEvidence.Version != null) && (delayEvaluatedHostEvidence.Version.CompareTo(this.Version) == 0));
             if ((flag && flag2) && flag3)
             {
                 usedEvidence = delayEvaluatedHostEvidence;
                 return(true);
             }
         }
     }
     return(false);
 }
        bool IReportMatchMembershipCondition.Check(Evidence evidence, out object usedEvidence)
        {
            usedEvidence = (object)null;
            if (evidence == null)
            {
                return(false);
            }
            StrongName evaluatedHostEvidence = evidence.GetDelayEvaluatedHostEvidence <StrongName>();

            if (evaluatedHostEvidence != null)
            {
                int  num1  = this.PublicKey == null ? 0 : (this.PublicKey.Equals(evaluatedHostEvidence.PublicKey) ? 1 : 0);
                bool flag1 = this.Name == null || evaluatedHostEvidence.Name != null && StrongName.CompareNames(evaluatedHostEvidence.Name, this.Name);
                bool flag2 = this.Version == null || evaluatedHostEvidence.Version != null && evaluatedHostEvidence.Version.CompareTo(this.Version) == 0;
                int  num2  = flag1 ? 1 : 0;
                if ((num1 & num2 & (flag2 ? 1 : 0)) != 0)
                {
                    usedEvidence = (object)evaluatedHostEvidence;
                    return(true);
                }
            }
            return(false);
        }