<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions targetNamespace="http://example.com/ws/2004/09/policy"
  xmlns:tns="http://example.com/ws/2004/09/policy"
  xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200512"
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns:wsoap="http://schemas.xmlsoap.org/wsdl/soap12/"
  xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
  xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
  <wsp:Policy wsu:Id="T1Endpoint">
    <!-- Policy alternative T1 - Anonymous client -->
    <sp:TransportBinding>
      <wsp:Policy>
        <sp:TransportToken>
          <wsp:Policy>
            <sp:HttpsToken>
              <wsp:Policy/>
            </sp:HttpsToken>
          </wsp:Policy>
        </sp:TransportToken>
        <sp:AlgorithmSuite>
          <wsp:Policy>
            <sp:Basic256Rsa15/>
          </wsp:Policy>
        </sp:AlgorithmSuite>
        <sp:Layout>
          <wsp:Policy>
            <sp:Lax/>
          </wsp:Policy>
        </sp:Layout>
        <sp:IncludeTimestamp/>
      </wsp:Policy>
    </sp:TransportBinding>
  </wsp:Policy>
  <wsp:Policy wsu:Id="T3Endpoint">
    <!-- Policy alternative T3 - Authenticated client with username/password token -->
    <sp:TransportBinding>
      <wsp:Policy>
        <sp:TransportToken>
          <wsp:Policy>
            <sp:HttpsToken>
              <wsp:Policy/>
            </sp:HttpsToken>
          </wsp:Policy>
        </sp:TransportToken>
        <sp:AlgorithmSuite>
          <wsp:Policy>
            <sp:Basic256Rsa15/>
          </wsp:Policy>
        </sp:AlgorithmSuite>
        <sp:Layout>
          <wsp:Policy>
            <sp:Lax/>
          </wsp:Policy>
        </sp:Layout>
        <sp:IncludeTimestamp/>
      </wsp:Policy>
    </sp:TransportBinding>
    <sp:SignedSupportingTokens>
      <wsp:Policy>
        <sp:UsernameToken
          sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200512/IncludeToken/AlwaysToRecipient">
          <wsp:Policy>
            <sp:WssUsernameToken10/>
          </wsp:Policy>
        </sp:UsernameToken>
      </wsp:Policy>
    </sp:SignedSupportingTokens>
    <sp:Wss10>
      <wsp:Policy>
        <sp:MustSupportRefKeyIdentifier/>
        <sp:MustSupportRefIssuerSerial/>
      </wsp:Policy>
    </sp:Wss10>
  </wsp:Policy>
  <wsp:Policy wsu:Id="A11Endpoint">
    <!-- Asymmetric Policy A11 - X509 with mutual authentication and AES 256 -->
    <sp:AsymmetricBinding>
      <wsp:Policy>
        <sp:RecipientToken>
          <wsp:Policy>
            <sp:X509Token
              sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200512/IncludeToken/Never">
              <wsp:Policy>
                <sp:WssX509V3Token10/>
              </wsp:Policy>
            </sp:X509Token>
          </wsp:Policy>
        </sp:RecipientToken>
        <sp:InitiatorToken>
          <wsp:Policy>
            <sp:X509Token
              sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200512/IncludeToken/AlwaysToRecipient">
              <wsp:Policy>
                <sp:WssX509V3Token10/>
              </wsp:Policy>
            </sp:X509Token>
          </wsp:Policy>
        </sp:InitiatorToken>
        <sp:AlgorithmSuite>
          <wsp:Policy>
            <sp:Basic256Rsa15/>
          </wsp:Policy>
        </sp:AlgorithmSuite>
        <sp:Layout>
          <wsp:Policy>
            <sp:Lax/>
          </wsp:Policy>
        </sp:Layout>
        <sp:IncludeTimestamp/>
        <sp:OnlySignEntireHeadersAndBody/>
      </wsp:Policy>
    </sp:AsymmetricBinding>
    <sp:Wss10>
      <wsp:Policy>
        <sp:MustSupportRefKeyIdentifier/>
        <sp:MustSupportRefIssuerSerial/>
      </wsp:Policy>
    </sp:Wss10>
  </wsp:Policy>
  <wsp:Policy wsu:Id="A12Endpoint">
    <!-- Asymmetric Policy A12 - X509 with mutual authentication and 3DES -->
    <sp:AsymmetricBinding>
      <wsp:Policy>
        <sp:RecipientToken>
          <wsp:Policy>
            <sp:X509Token
              sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200512/IncludeToken/Never">
              <wsp:Policy>
                <sp:WssX509V3Token10/>
              </wsp:Policy>
            </sp:X509Token>
          </wsp:Policy>
        </sp:RecipientToken>
        <sp:InitiatorToken>
          <wsp:Policy>
            <sp:X509Token
              sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200512/IncludeToken/AlwaysToRecipient">
              <wsp:Policy>
                <sp:WssX509V3Token10/>
              </wsp:Policy>
            </sp:X509Token>
          </wsp:Policy>
        </sp:InitiatorToken>
        <sp:AlgorithmSuite>
          <wsp:Policy>
            <sp:TripleDesRsa15/>
          </wsp:Policy>
        </sp:AlgorithmSuite>
        <sp:Layout>
          <wsp:Policy>
            <sp:Lax/>
          </wsp:Policy>
        </sp:Layout>
        <sp:IncludeTimestamp/>
        <sp:OnlySignEntireHeadersAndBody/>
      </wsp:Policy>
    </sp:AsymmetricBinding>
    <sp:Wss10>
      <wsp:Policy>
        <sp:MustSupportRefKeyIdentifier/>
        <sp:MustSupportRefIssuerSerial/>
      </wsp:Policy>
    </sp:Wss10>
  </wsp:Policy>
  <wsp:Policy wsu:Id="AMessage">
    <sp:SignedParts>
      <sp:Body/>
    </sp:SignedParts>
    <sp:EncryptedParts>
      <sp:Body/>
    </sp:EncryptedParts>
  </wsp:Policy>
  <wsdl:types>
    <xs:schema targetNamespace="http://example.com/ws/2004/09/policy" blockDefault="#all"
      elementFormDefault="qualified">
      <xs:element name="EchoRequest" type="xs:string"/>
      <xs:element name="EchoResponse" type="xs:string"/>
    </xs:schema>
  </wsdl:types>
  <wsdl:message name="EchoInMessage">
    <wsdl:part name="Body" element="tns:EchoRequest"/>
  </wsdl:message>
  <wsdl:message name="EchoOutMessage">
    <wsdl:part name="Body" element="tns:EchoResponse"/>
  </wsdl:message>
  <wsdl:portType name="Test">
    <wsdl:operation name="Echo">
      <wsdl:input message="tns:EchoInMessage"/>
      <wsdl:output message="tns:EchoOutMessage"/>
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="NoSecurityBinding" type="tns:Test">
    <wsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="Echo">
      <wsoap:operation soapAction="http://example.com/ws/2004/09/policy/Test/EchoRequest"/>
      <wsdl:input>
        <wsoap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <wsoap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:binding name="T1Binding" type="tns:Test">
    <wsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsp:PolicyReference URI="#T1Endpoint" wsdl:required="true"/>
    <wsdl:operation name="Echo">
      <wsoap:operation soapAction="http://example.com/ws/2004/09/policy/Test/EchoRequest"/>
      <wsdl:input>
        <wsoap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <wsoap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:binding name="T3Binding" type="tns:Test">
    <wsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsp:PolicyReference URI="#T3Endpoint" wsdl:required="true"/>
    <wsdl:operation name="Echo">
      <wsoap:operation soapAction="http://example.com/ws/2004/09/policy/Test/EchoRequest"/>
      <wsdl:input>
        <wsoap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <wsoap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:binding name="A11Binding" type="tns:Test">
    <wsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsp:PolicyReference URI="#A11Endpoint" wsdl:required="true"/>
    <wsdl:operation name="Echo">
      <wsoap:operation soapAction="http://example.com/ws/2004/09/policy/Test/EchoRequest"/>
      <wsdl:input>
        <wsoap:body use="literal"/>
        <wsp:PolicyReference URI="#AMessage" wsdl:required="true"/>
      </wsdl:input>
      <wsdl:output>
        <wsoap:body use="literal"/>
        <wsp:PolicyReference URI="#AMessage" wsdl:required="true"/>
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:binding name="A12Binding" type="tns:Test">
    <wsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsp:PolicyReference URI="#A12Endpoint" wsdl:required="true"/>
    <wsdl:operation name="Echo">
      <wsoap:operation soapAction="http://example.com/ws/2004/09/policy/Test/EchoRequest"/>
      <wsdl:input>
        <wsoap:body use="literal"/>
        <wsp:PolicyReference URI="#AMessage" wsdl:required="true"/>
      </wsdl:input>
      <wsdl:output>
        <wsoap:body use="literal"/>
        <wsp:PolicyReference URI="#AMessage" wsdl:required="true"/>
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="Test">
    <wsdl:port name="NoSecurityPort" binding="tns:NoSecurityBinding">
      <wsoap:address location="http://www.soaphub.org/wspolicy/services/T0"/>
    </wsdl:port>
    <wsdl:port name="T1Port" binding="tns:T1Binding">
      <wsoap:address location="https://www.soaphub.org/wspolicy/services/T1"/>
    </wsdl:port>
    <wsdl:port name="T3Port" binding="tns:T3Binding">
      <wsoap:address location="https://www.soaphub.org/wspolicy/services/T3"/>
    </wsdl:port>
    <wsdl:port name="A11Port" binding="tns:A11Binding">
      <wsoap:address location="http://www.soaphub.org/wspolicy/services/A11"/>
    </wsdl:port>
    <wsdl:port name="A12Port" binding="tns:A12Binding">
      <wsoap:address location="http://www.soaphub.org/wspolicy/services/A12"/>
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>
