public virtual XmlElement CreateWsspIssuedTokenAssertion(MetadataExporter exporter, IssuedSecurityTokenParameters parameters)
 {
     XmlElement result = CreateWsspAssertion(IssuedTokenName);
     SetIncludeTokenValue(result, parameters.InclusionMode);
     XmlElement issuerAssertion = CreateWsspIssuerElement(parameters.IssuerAddress, parameters.IssuerMetadataAddress);
     if (issuerAssertion != null)
     {
         result.AppendChild(issuerAssertion);
     }
     XmlElement tokenTemplate = CreateWsspAssertion(RequestSecurityTokenTemplateName);
     TrustDriver driver = this.TrustDriver;
     foreach (XmlElement p in parameters.CreateRequestParameters(driver))
     {
         tokenTemplate.AppendChild(doc.ImportNode(p, true));
     }
     result.AppendChild(tokenTemplate);
     result.AppendChild(
         CreateWspPolicyWrapper(
             exporter,
             CreateWsspRequireDerivedKeysAssertion(parameters.RequireDerivedKeys),
             CreateReferenceStyleAssertion(parameters.ReferenceStyle)
     ));
     return result;
 }
		public void CreateRequestParameters ()
		{
			IssuedSecurityTokenParameters p =
				new IssuedSecurityTokenParameters ();
			p.ClaimTypeRequirements.Add (new ClaimTypeRequirement (ClaimTypes.Name, true));
			p.AdditionalRequestParameters.Add (new XmlDocument ()
				.CreateElement ("AdditionalFoo"));
			Collection<XmlElement> c = p.CreateRequestParameters (
				MessageSecurityVersion.Default,
				WSSecurityTokenSerializer.DefaultInstance);
			StringWriter sw = new StringWriter ();
			XmlWriterSettings settings = new XmlWriterSettings ();
			settings.OmitXmlDeclaration = true;
			foreach (XmlElement el in c) {
				XmlWriter w = XmlWriter.Create (sw, settings);
				el.WriteTo (w);
				w.Close ();
			}

			string expected = @"<t:KeyType xmlns:t='http://schemas.xmlsoap.org/ws/2005/02/trust'>http://schemas.xmlsoap.org/ws/2005/02/trust/SymmetricKey</t:KeyType><t:Claims xmlns:t='http://schemas.xmlsoap.org/ws/2005/02/trust'><wsid:ClaimType Uri='http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name' Optional='true' xmlns:wsid='http://schemas.xmlsoap.org/ws/2005/05/identity' /></t:Claims><AdditionalFoo />";
			Assert.AreEqual (expected.Replace ('\'', '"'), sw.ToString ());
		}
 public virtual XmlElement CreateWsspIssuedTokenAssertion(MetadataExporter exporter, IssuedSecurityTokenParameters parameters)
 {
     XmlElement tokenAssertion = this.CreateWsspAssertion("IssuedToken");
     this.SetIncludeTokenValue(tokenAssertion, parameters.InclusionMode);
     XmlElement newChild = this.CreateWsspIssuerElement(parameters.IssuerAddress, parameters.IssuerMetadataAddress);
     if (newChild != null)
     {
         tokenAssertion.AppendChild(newChild);
     }
     XmlElement element3 = this.CreateWsspAssertion("RequestSecurityTokenTemplate");
     System.ServiceModel.Security.TrustDriver trustDriver = this.TrustDriver;
     foreach (XmlElement element4 in parameters.CreateRequestParameters(trustDriver))
     {
         element3.AppendChild(doc.ImportNode(element4, true));
     }
     tokenAssertion.AppendChild(element3);
     tokenAssertion.AppendChild(this.CreateWspPolicyWrapper(exporter, new XmlElement[] { this.CreateWsspRequireDerivedKeysAssertion(parameters.RequireDerivedKeys), this.CreateReferenceStyleAssertion(parameters.ReferenceStyle) }));
     return tokenAssertion;
 }