public virtual bool TryImportWsspIssuedTokenAssertion(MetadataImporter importer, PolicyConversionContext policyContext, XmlElement assertion, out SecurityTokenParameters parameters)
        {
            parameters = null;

            SecurityTokenInclusionMode inclusionMode;
            Collection<Collection<XmlElement>> alternatives;
            EndpointAddress issuer;
            EndpointAddress issuerMetadata;
            Collection<XmlElement> requestSecurityTokenTemplate;

            if (IsWsspAssertion(assertion, IssuedTokenName)
                && TryGetIncludeTokenValue(assertion, out inclusionMode)
                && TryGetIssuer(assertion, out issuer, out issuerMetadata)
                && TryGetRequestSecurityTokenTemplate(assertion, out requestSecurityTokenTemplate))
            {
                if (TryGetNestedPolicyAlternatives(importer, assertion, out alternatives))
                {
                    foreach (Collection<XmlElement> alternative in alternatives)
                    {
                        IssuedSecurityTokenParameters issued = new IssuedSecurityTokenParameters();
                        parameters = issued;
                        if (TryImportWsspRequireDerivedKeysAssertion(alternative, issued)
                            && TryImportReferenceStyleAssertion(alternative, issued)
                            && alternative.Count == 0)
                        {
                            issued.InclusionMode = inclusionMode;
                            issued.IssuerAddress = issuer;
                            issued.IssuerMetadataAddress = issuerMetadata;
                            issued.SetRequestParameters(requestSecurityTokenTemplate, this.TrustDriver);

                            TokenIssuerPolicyResolver policyResolver = new TokenIssuerPolicyResolver(this.TrustDriver);
                            policyResolver.ResolveTokenIssuerPolicy(importer, policyContext, issued);

                            break;
                        }
                        else
                        {
                            parameters = null;
                        }
                    }
                }
                else
                {
                    IssuedSecurityTokenParameters issued = new IssuedSecurityTokenParameters();
                    parameters = issued;
                    issued.InclusionMode = inclusionMode;
                    issued.IssuerAddress = issuer;
                    issued.IssuerMetadataAddress = issuerMetadata;
                    issued.SetRequestParameters(requestSecurityTokenTemplate, this.TrustDriver);
                    issued.RequireDerivedKeys = false;
                }
            }

            return parameters != null;
        }
 public virtual bool TryImportWsspIssuedTokenAssertion(MetadataImporter importer, PolicyConversionContext policyContext, XmlElement assertion, out SecurityTokenParameters parameters)
 {
     SecurityTokenInclusionMode mode;
     EndpointAddress address;
     EndpointAddress address2;
     Collection<XmlElement> collection2;
     parameters = null;
     if ((this.IsWsspAssertion(assertion, "IssuedToken") && this.TryGetIncludeTokenValue(assertion, out mode)) && (this.TryGetIssuer(assertion, out address, out address2) && this.TryGetRequestSecurityTokenTemplate(assertion, out collection2)))
     {
         Collection<Collection<XmlElement>> collection;
         if (this.TryGetNestedPolicyAlternatives(importer, assertion, out collection))
         {
             foreach (Collection<XmlElement> collection3 in collection)
             {
                 IssuedSecurityTokenParameters parameters2 = new IssuedSecurityTokenParameters();
                 parameters = parameters2;
                 if ((this.TryImportWsspRequireDerivedKeysAssertion(collection3, parameters2) && this.TryImportReferenceStyleAssertion(collection3, parameters2)) && (collection3.Count == 0))
                 {
                     parameters2.InclusionMode = mode;
                     parameters2.IssuerAddress = address;
                     parameters2.IssuerMetadataAddress = address2;
                     parameters2.SetRequestParameters(collection2, this.TrustDriver);
                     new TokenIssuerPolicyResolver(this.TrustDriver).ResolveTokenIssuerPolicy(importer, policyContext, parameters2);
                     break;
                 }
                 parameters = null;
             }
         }
         else
         {
             IssuedSecurityTokenParameters parameters3 = new IssuedSecurityTokenParameters();
             parameters = parameters3;
             parameters3.InclusionMode = mode;
             parameters3.IssuerAddress = address;
             parameters3.IssuerMetadataAddress = address2;
             parameters3.SetRequestParameters(collection2, this.TrustDriver);
             parameters3.RequireDerivedKeys = false;
         }
     }
     return (parameters != null);
 }