public static void WriteKnownResponseElement(RequestSecurityTokenResponse rstr, XmlWriter writer, WSTrustSerializationContext context, WSTrustResponseSerializer responseSerializer, WSTrustConstantsAdapter trustConstants) { if (rstr == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("rstr"); } if (writer == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("writer"); } if (context == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("context"); } if (responseSerializer == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("responseSerializer"); } if (trustConstants == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("trustConstants"); } if (rstr.Entropy != null) { responseSerializer.WriteXmlElement(writer, trustConstants.Elements.Entropy, rstr.Entropy, rstr, context); } if (rstr.KeySizeInBits.HasValue) { responseSerializer.WriteXmlElement(writer, trustConstants.Elements.KeySize, rstr.KeySizeInBits, rstr, context); } if (rstr.Lifetime != null) { responseSerializer.WriteXmlElement(writer, trustConstants.Elements.Lifetime, rstr.Lifetime, rstr, context); } if (rstr.AppliesTo != null) { responseSerializer.WriteXmlElement(writer, WSPolicyConstants.ElementNames.AppliesTo, rstr.AppliesTo, rstr, context); } if (rstr.RequestedSecurityToken != null) { responseSerializer.WriteXmlElement(writer, trustConstants.Elements.RequestedSecurityToken, rstr.RequestedSecurityToken, rstr, context); } if (rstr.RequestedProofToken != null) { responseSerializer.WriteXmlElement(writer, trustConstants.Elements.RequestedProofToken, rstr.RequestedProofToken, rstr, context); } if (rstr.RequestedAttachedReference != null) { responseSerializer.WriteXmlElement(writer, trustConstants.Elements.RequestedAttachedReference, rstr.RequestedAttachedReference, rstr, context); } if (rstr.RequestedUnattachedReference != null) { responseSerializer.WriteXmlElement(writer, trustConstants.Elements.RequestedUnattachedReference, rstr.RequestedUnattachedReference, rstr, context); } if (!string.IsNullOrEmpty(rstr.SignWith)) { responseSerializer.WriteXmlElement(writer, trustConstants.Elements.SignWith, rstr.SignWith, rstr, context); } if (!string.IsNullOrEmpty(rstr.EncryptWith)) { responseSerializer.WriteXmlElement(writer, trustConstants.Elements.EncryptWith, rstr.EncryptWith, rstr, context); } if (!string.IsNullOrEmpty(rstr.TokenType)) { responseSerializer.WriteXmlElement(writer, trustConstants.Elements.TokenType, rstr.TokenType, rstr, context); } if (!string.IsNullOrEmpty(rstr.RequestType)) { responseSerializer.WriteXmlElement(writer, trustConstants.Elements.RequestType, rstr.RequestType, rstr, context); } if (!string.IsNullOrEmpty(rstr.KeyType)) { responseSerializer.WriteXmlElement(writer, trustConstants.Elements.KeyType, rstr.KeyType, rstr, context); } if (!string.IsNullOrEmpty(rstr.AuthenticationType)) { responseSerializer.WriteXmlElement(writer, trustConstants.Elements.AuthenticationType, rstr.AuthenticationType, rstr, context); } if (!string.IsNullOrEmpty(rstr.EncryptionAlgorithm)) { responseSerializer.WriteXmlElement(writer, trustConstants.Elements.EncryptionAlgorithm, rstr.EncryptionAlgorithm, rstr, context); } if (!string.IsNullOrEmpty(rstr.CanonicalizationAlgorithm)) { responseSerializer.WriteXmlElement(writer, trustConstants.Elements.CanonicalizationAlgorithm, rstr.CanonicalizationAlgorithm, rstr, context); } if (!string.IsNullOrEmpty(rstr.SignatureAlgorithm)) { responseSerializer.WriteXmlElement(writer, trustConstants.Elements.SignatureAlgorithm, rstr.SignatureAlgorithm, rstr, context); } if (rstr.BinaryExchange != null) { responseSerializer.WriteXmlElement(writer, trustConstants.Elements.BinaryExchange, rstr.BinaryExchange, rstr, context); } if (rstr.Status != null) { responseSerializer.WriteXmlElement(writer, trustConstants.Elements.Status, rstr.Status, rstr, context); } if (rstr.RequestedTokenCancelled) { responseSerializer.WriteXmlElement(writer, trustConstants.Elements.RequestedTokenCancelled, rstr.RequestedTokenCancelled, rstr, context); } }
public static void WriteResponse(RequestSecurityTokenResponse response, XmlWriter writer, WSTrustSerializationContext context, WSTrustResponseSerializer responseSerializer, WSTrustConstantsAdapter trustConstants) { if (response == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("response"); } if (writer == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("writer"); } if (context == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("context"); } if (responseSerializer == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("responseSerializer"); } if (trustConstants == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("trustConstants"); } responseSerializer.Validate(response); // Step 1: Write RSTR start element writer.WriteStartElement(trustConstants.Prefix, trustConstants.Elements.RequestSecurityTokenResponse, trustConstants.NamespaceURI); // Step 2: Write known RSTR attributes, i.e. Context if (!string.IsNullOrEmpty(response.Context)) { writer.WriteAttributeString(trustConstants.Attributes.Context, response.Context); } // Step 3: Write known RSTR elements responseSerializer.WriteKnownResponseElement(response, writer, context); // Step 4: Write custom RSTR elements foreach (KeyValuePair<string, object> messageParam in response.Properties) { responseSerializer.WriteXmlElement(writer, messageParam.Key, messageParam.Value, response, context); } // Step 5: Write RSTR end element to close it writer.WriteEndElement(); }