<?xml version="1.0"?>

<!DOCTYPE wsdl:definitions [
  <!-- NOTE:  These two entities are "owned" by the W3C XKMS WG. -->

  <!-- URI for the namespace of this WSDL file. -->
  <!ENTITY tns 'http://www.w3.org/2002/03/xkms#wsdl'>
  <!-- URL where the XKMS schema can be found. -->
  <!ENTITY schemaURL
    'http://www.w3.org/TR/2004/CR-xkms2-20040405/Schemas/xkms.xsd'>

  <!--  NOTE:  These two entities are application-specific. -->

  <!-- Value of the SOAPAction header. -->
  <!ENTITY soapaction ''>
  <!-- URL where the service can be found. -->
  <!ENTITY serviceURL 'http://xkms.example.com/xkms/2'>
]>

<wsdl:definitions name="XMLKeyManagement"
  targetNamespace="http://www.w3.org/2002/03/xkms#wsdl"
  xmlns:tns="http://www.w3.org/2002/03/xkms#wsdl"
  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
  xmlns="http://schemas.xmlsoap.org/wsdl/"
  xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" 
  xmlns:xkms="http://www.w3.org/2002/03/xkms#">

  <import namespace="http://www.w3.org/2002/03/xkms#"
    location='http://www.w3.org/TR/2004/CR-xkms2-20040405/Schemas/xkms.xsd'/>

  <message name="PendingRequest">
    <part name="body" element="xkms:PendingRequest"/>
  </message>
  <message name="PendingResult">
    <part name="body" element="xkms:PendingResult"/>
  </message>
  <message name="CompoundRequest">
    <part name="body" element="xkms:CompoundRequest"/>
  </message>
  <message name="CompoundResult">
    <part name="body" element="xkms:CompoundResult"/>
  </message>
  <message name="StatusRequest">
    <part name="body" element="xkms:StatusRequest"/>
  </message>
  <message name="StatusResult">
    <part name="body" element="xkms:StatusResult"/>
  </message>
  <message name="LocateRequest">
    <part name="body" element="xkms:LocateRequest"/>
  </message>
  <message name="LocateResult">
    <part name="body" element="xkms:LocateResult"/>
  </message>
  <message name="ValidateRequest">
    <part name="body" element="xkms:ValidateRequest"/>
  </message>
  <message name="ValidateResult">
    <part name="body" element="xkms:ValidateResult"/>
  </message>
  <message name="RegisterRequest">
    <part name="body" element="xkms:Register"/>
  </message>
  <message name="RegisterResult">
    <part name="body" element="xkms:RegisterResult"/>
  </message>
  <message name="ReissueRequest">
    <part name="body" element="xkms:ReissueRequest"/>
  </message>
  <message name="ReissueResult">
    <part name="body" element="xkms:ReissueResult"/>
  </message>
  <message name="RevokeRequest">
    <part name="body" element="xkms:RevokeRequest"/>
  </message>
  <message name="RevokeResult">
    <part name="body" element="xkms:RevokeResult"/>
  </message>
  <message name="RecoverRequest">
    <part name="body" element="xkms:RecoverRequest"/>
  </message>
  <message name="RecoverResult">
    <part name="body" element="xkms:RecoverResult"/>
  </message>

  <portType name="XKMSPortType">
    <operation name="Pending">
      <input message="tns:PendingRequest"/>
      <output message="tns:PendingResult"/>
    </operation>
    <operation name="Compound">
      <input message="tns:CompoundRequest"/>
      <output message="tns:CompoundResult"/>
    </operation>
    <operation name="Status">
      <input message="tns:StatusRequest"/>
      <output message="tns:StatusResult"/>
    </operation>
    <operation name="Locate">
      <input message="tns:LocateRequest"/>
      <output message="tns:LocateResult"/>
    </operation>
    <operation name="Validate">
      <input message="tns:ValidateRequest"/>
      <output message="tns:ValidateResult"/>
    </operation>
    <operation name="Register">
      <input message="tns:RegisterRequest"/>
      <output message="tns:RegisterResult"/>
    </operation>
    <operation name="Reissue">
      <input message="tns:ReissueRequest"/>
      <output message="tns:ReissueResult"/>
    </operation>
    <operation name="Revoke">
      <input message="tns:RevokeRequest"/>
      <output message="tns:RevokeResult"/>
    </operation>
    <operation name="Recover">
      <input message="tns:RecoverRequest"/>
      <output message="tns:RecoverResult"/>
    </operation>
  </portType>

  <binding name="SOAPBinding" type="tns:XKMSPortType">
    <wsdlsoap:binding
      transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
    <operation name="Pending">
      <wsdlsoap:operation soapAction="&soapaction;"/>
      <input message="tns:PendingRequest">
        <wsdlsoap:body use="literal"/>
      </input>
      <output message="tns:PendingResult">
        <wsdlsoap:body use="literal"/>
      </output>
    </operation>
    <operation name="Compound">
      <wsdlsoap:operation soapAction="&soapaction;"/>
      <input message="tns:CompoundRequest">
        <wsdlsoap:body use="literal"/>
      </input>
      <output message="tns:CompoundResult">
        <wsdlsoap:body use="literal"/>
      </output>
    </operation>
    <operation name="Status">
      <wsdlsoap:operation soapAction="&soapaction;"/>
      <input message="tns:StatusRequest">
        <wsdlsoap:body use="literal"/>
      </input>
      <output message="tns:StatusResult">
        <wsdlsoap:body use="literal"/>
      </output>
    </operation>
    <operation name="Locate">
      <wsdlsoap:operation soapAction="&soapaction;"/>
      <input message="tns:LocateRequest">
        <wsdlsoap:body use="literal"/>
      </input>
      <output message="tns:LocateResult">
        <wsdlsoap:body use="literal"/>
      </output>
    </operation>
    <operation name="Validate">
      <wsdlsoap:operation soapAction="&soapaction;"/>
      <input message="tns:ValidateRequest">
        <wsdlsoap:body use="literal"/>
      </input>
      <output message="tns:ValidateResult">
        <wsdlsoap:body use="literal"/>
      </output>
    </operation>
    <operation name="Register">
      <wsdlsoap:operation soapAction="&soapaction;"/>
      <input message="tns:RegisterRequest">
        <wsdlsoap:body use="literal"/>
      </input>
      <output message="tns:RegisterResult">
        <wsdlsoap:body use="literal"/>
      </output>
    </operation>
    <operation name="Reissue">
      <wsdlsoap:operation soapAction="&soapaction;"/>
      <input message="tns:ReissueRequest">
        <wsdlsoap:body use="literal"/>
      </input>
      <output message="tns:ReissueResult">
        <wsdlsoap:body use="literal"/>
      </output>
    </operation>
    <operation name="Revoke">
      <wsdlsoap:operation soapAction="&soapaction;"/>
      <input message="tns:RevokeRequest">
        <wsdlsoap:body use="literal"/>
      </input>
      <output message="tns:RevokeResult">
        <wsdlsoap:body use="literal"/>
      </output>
    </operation>
    <operation name="Recover">
      <wsdlsoap:operation soapAction="&soapaction;"/>
      <input message="tns:RecoverRequest">
        <wsdlsoap:body use="literal"/>
      </input>
      <output message="tns:RecoverResult">
        <wsdlsoap:body use="literal"/>
      </output>
    </operation>
  </binding>

  <service name="XKMSService">
    <port name="XKMSPort" binding="tns:SOAPBinding">
      <wsdlsoap:address location="&serviceURL;"/>
    </port>
  </service>

</wsdl:definitions>

