blob: 59087add015a7ba6c39f9958ac2ba09ce00816cd [file] [log] [blame]
<?xml version="1.0"?>
<definitions name="XMLKeyManagement" xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:s="http://www.w3.org/2000/10/XMLSchema"
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns:xkms="http://www.xkms.org/schema/xkms-2001-01-20"
xmlns:tns="http://www.xkms.org/schema/xkms-2001-01-20"
targetNamespace="http://www.xkms.org/schema/xkms-2001-01-20">
<types>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
targetNamespace="http://www.w3.org/2000/09/xmldsig#"
version="0.1" elementFormDefault="qualified">
<!-- Basic Types Defined for Signatures -->
<simpleType name="CryptoBinary">
<restriction base="base64Binary">
</restriction>
</simpleType>
<!-- Start Signature -->
<element name="Signature" type="ds:SignatureType"/>
<complexType name="SignatureType">
<sequence>
<element ref="ds:SignedInfo"/>
<element ref="ds:SignatureValue"/>
<element ref="ds:KeyInfo" minOccurs="0"/>
<element ref="ds:Object" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
<attribute name="Id" type="ID" use="optional"/>
</complexType>
<element name="SignatureValue" type="ds:SignatureValueType"/>
<complexType name="SignatureValueType">
<simpleContent>
<extension base="base64Binary">
<attribute name="Id" type="ID" use="optional"/>
</extension>
</simpleContent>
</complexType>
<!-- Start SignedInfo -->
<element name="SignedInfo" type="ds:SignedInfoType"/>
<complexType name="SignedInfoType">
<sequence>
<element ref="ds:CanonicalizationMethod"/>
<element ref="ds:SignatureMethod"/>
<element ref="ds:Reference" maxOccurs="unbounded"/>
</sequence>
<attribute name="Id" type="ID" use="optional"/>
</complexType>
<element name="CanonicalizationMethod" type="ds:CanonicalizationMethodType"/>
<complexType name="CanonicalizationMethodType" mixed="true">
<sequence>
<any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
<!-- (0,unbounded) elements from (1,1) namespace -->
</sequence>
<attribute name="Algorithm" type="anyURI" use="required"/>
</complexType>
<element name="SignatureMethod" type="ds:SignatureMethodType"/>
<complexType name="SignatureMethodType" mixed="true">
<sequence>
<element name="HMACOutputLength" minOccurs="0" type="ds:HMACOutputLengthType"/>
<any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
<!-- (0,unbounded) elements from (1,1) external namespace -->
</sequence>
<attribute name="Algorithm" type="anyURI" use="required"/>
</complexType>
<!-- Start Reference -->
<element name="Reference" type="ds:ReferenceType"/>
<complexType name="ReferenceType">
<sequence>
<element ref="ds:Transforms" minOccurs="0"/>
<element ref="ds:DigestMethod"/>
<element ref="ds:DigestValue"/>
</sequence>
<attribute name="Id" type="ID" use="optional"/>
<attribute name="URI" type="anyURI" use="optional"/>
<attribute name="Type" type="anyURI" use="optional"/>
</complexType>
<element name="Transforms" type="ds:TransformsType"/>
<complexType name="TransformsType">
<sequence>
<element ref="ds:Transform" maxOccurs="unbounded"/>
</sequence>
</complexType>
<element name="Transform" type="ds:TransformType"/>
<complexType name="TransformType" mixed="true">
<choice minOccurs="0" maxOccurs="unbounded">
<any namespace="##other" processContents="lax"/>
<!-- (1,1) elements from (0,unbounded) namespaces -->
<element name="XPath" type="string"/>
</choice>
<attribute name="Algorithm" type="anyURI" use="required"/>
</complexType>
<!-- End Reference -->
<element name="DigestMethod" type="ds:DigestMethodType"/>
<complexType name="DigestMethodType" mixed="true">
<sequence>
<any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
<attribute name="Algorithm" type="anyURI" use="required"/>
</complexType>
<element name="DigestValue" type="ds:DigestValueType"/>
<simpleType name="DigestValueType">
<restriction base="base64Binary"/>
</simpleType>
<!-- End SignedInfo -->
<!-- Start KeyInfo -->
<element name="KeyInfo" type="ds:KeyInfoType"/>
<complexType name="KeyInfoType" mixed="true">
<sequence>
<!-- <element ref="ds:KeyName"/> -->
<element ref="ds:KeyName"/>
<element ref="ds:KeyValue"/>
<element ref="ds:RetrievalMethod"/>
<element ref="ds:X509Data"/>
<element ref="ds:PGPData"/>
<element ref="ds:SPKIData"/>
<element ref="ds:MgmtData"/>
<any processContents="lax" namespace="##other"/>
<!-- (1,1) elements from (0,unbounded) namespaces -->
</sequence>
<attribute name="Id" type="ID" use="optional"/>
</complexType>
<element name="KeyName" type="string"/>
<element name="MgmtData" type="string"/>
<element name="KeyValue" type="ds:KeyValueType"/>
<complexType name="KeyValueType" mixed="true">
<choice>
<element ref="ds:DSAKeyValue"/>
<element ref="ds:RSAKeyValue"/>
<any namespace="##other" processContents="lax"/>
</choice>
</complexType>
<element name="RetrievalMethod" type="ds:RetrievalMethodType"/>
<complexType name="RetrievalMethodType">
<sequence>
<element name="Transforms" type="ds:TransformsType" minOccurs="0"/>
</sequence>
<attribute name="URI" type="anyURI"/>
<attribute name="Type" type="anyURI" use="optional"/>
</complexType>
<!-- Start X509Data -->
<element name="X509Data" type="ds:X509DataType"/>
<complexType name="X509DataType">
<sequence maxOccurs="unbounded">
<choice>
<element name="X509IssuerSerial" type="ds:X509IssuerSerialType"/>
<element name="X509SKI" type="base64Binary"/>
<element name="X509SubjectName" type="string"/>
<element name="X509Certificate" type="base64Binary"/>
<element name="X509CRL" type="base64Binary"/>
<any namespace="##other" processContents="lax"/>
</choice>
</sequence>
</complexType>
<complexType name="X509IssuerSerialType">
<sequence>
<element name="X509IssuerName" type="string"/>
<element name="X509SerialNumber" type="integer"/>
</sequence>
</complexType>
<!-- End X509Data -->
<!-- Begin PGPData -->
<element name="PGPData" type="ds:PGPDataType"/>
<complexType name="PGPDataType">
<choice>
<sequence>
<element name="PGPKeyID" type="base64Binary"/>
<element name="PGPKeyPacket" type="base64Binary" minOccurs="0"/>
<any namespace="##other" processContents="lax" minOccurs="0"
maxOccurs="unbounded"/>
</sequence>
</choice>
</complexType>
<!-- End PGPData -->
<!-- Begin SPKIData -->
<element name="SPKIData" type="ds:SPKIDataType"/>
<complexType name="SPKIDataType">
<sequence maxOccurs="unbounded">
<element name="SPKISexp" type="base64Binary"/>
<any namespace="##other" processContents="lax" minOccurs="0"/>
</sequence>
</complexType>
<!-- End SPKIData -->
<!-- End KeyInfo -->
<!-- Start Object (Manifest, SignatureProperty) -->
<element name="Object" type="ds:ObjectType"/>
<complexType name="ObjectType" mixed="true">
<sequence minOccurs="0" maxOccurs="unbounded">
<any namespace="##any" processContents="lax"/>
</sequence>
<attribute name="Id" type="ID" use="optional"/>
<attribute name="MimeType" type="string" use="optional"/> <!-- add a grep facet -->
<attribute name="Encoding" type="anyURI" use="optional"/>
</complexType>
<element name="Manifest" type="ds:ManifestType"/>
<complexType name="ManifestType">
<sequence>
<element ref="ds:Reference" maxOccurs="unbounded"/>
</sequence>
<attribute name="Id" type="ID" use="optional"/>
</complexType>
<element name="SignatureProperties" type="ds:SignaturePropertiesType"/>
<complexType name="SignaturePropertiesType">
<sequence>
<element ref="ds:SignatureProperty" maxOccurs="unbounded"/>
</sequence>
<attribute name="Id" type="ID" use="optional"/>
</complexType>
<element name="SignatureProperty" type="ds:SignaturePropertyType"/>
<complexType name="SignaturePropertyType" mixed="true">
<choice maxOccurs="unbounded">
<any namespace="##other" processContents="lax"/>
<!-- (1,1) elements from (1,unbounded) namespaces -->
</choice>
<attribute name="Target" type="anyURI" use="required"/>
<attribute name="Id" type="ID" use="optional"/>
</complexType>
<!-- End Object (Manifest, SignatureProperty) -->
<!-- Start Algorithm Parameters -->
<simpleType name="HMACOutputLengthType">
<restriction base="integer"/>
</simpleType>
<!-- Start KeyValue Element-types -->
<element name="DSAKeyValue" type="ds:DSAKeyValueType"/>
<complexType name="DSAKeyValueType">
<sequence>
<sequence minOccurs="0">
<element name="P" type="ds:CryptoBinary"/>
<element name="Q" type="ds:CryptoBinary"/>
</sequence>
<element name="J" type="ds:CryptoBinary" minOccurs="0"/>
<element name="G" type="ds:CryptoBinary" minOccurs="0"/>
<element name="Y" type="ds:CryptoBinary"/>
<sequence minOccurs="0">
<element name="Seed" type="ds:CryptoBinary"/>
<element name="PgenCounter" type="ds:CryptoBinary"/>
</sequence>
</sequence>
</complexType>
<element name="RSAKeyValue" type="ds:RSAKeyValueType"/>
<complexType name="RSAKeyValueType">
<sequence>
<element name="Modulus" type="ds:CryptoBinary"/>
<element name="Exponent" type="ds:CryptoBinary"/>
</sequence>
</complexType>
<!-- End KeyValue Element-types -->
<!-- End Signature -->
</schema>
<schema attributeFormDefault="qualified" elementFormDefault="qualified"
targetNamespace="http://www.xkms.org/schema/xkms-2001-01-20"
xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http://www.w3.org/2000/09/xmldsig#"/>
<element name="Recover" type="xkms:RecoverType"/>
<element name="Revoke" type="xkms:RevokeType"/>
<element name="Locate" type="xkms:LocateType"/>
<element name="Register" type="xkms:RegisterType"/>
<element name="Validate" type="xkms:ValidateType"/>
<element name="RegisterResult" type="xkms:RegisterResultType"/>
<element name="RecoverResult" type="xkms:RecoverResultType"/>
<element name="RevokeResult" type="xkms:RevokeResultType"/>
<element name="LocateResult" type="xkms:LocateResultType"/>
<element name="ValidateResult" type="xkms:ValidateResultType"/>
<complexType name="LocateType">
<sequence>
<element minOccurs="0" name="TransactionID" type="string"/>
<element name="Query" type="xkms:KeyInfoType"/>
<element minOccurs="0" name="Respond" type="xkms:RespondType"/>
</sequence>
</complexType>
<complexType name="LocateResultType">
<sequence>
<element minOccurs="0" name="TransactionID" type="string"/>
<element name="Result" type="xkms:ResultCodeType"/>
<element minOccurs="0" name="Answer" type="xkms:LocateResultAnswerType"/>
<element minOccurs="0" name="ErrorInfo" type="xkms:ErrorInfoType"/>
<element maxOccurs="1" minOccurs="0" ref="ds:Signature"/>
</sequence>
<attribute name="Id" type="ID" use="optional"/>
</complexType>
<complexType name="ValidateType">
<sequence>
<element name="Query" type="xkms:KeyBindingType"/>
<element minOccurs="0" name="Respond" type="xkms:RespondType"/>
</sequence>
</complexType>
<complexType name="ValidateResultType">
<sequence>
<element name="Result" type="xkms:ResultCodeType"/>
<element minOccurs="0" name="Answer" type="xkms:ValidateResultAnswerType"/>
<element minOccurs="0" name="ErrorInfo" type="xkms:ErrorInfoType"/>
<element maxOccurs="1" minOccurs="0" ref="ds:Signature"/>
</sequence>
<attribute name="Id" type="ID" use="optional"/>
</complexType>
<complexType name="ValidateResultAnswerType">
<sequence>
<element name="KeyBinding" type="xkms:KeyBindingType"/>
</sequence>
</complexType>
<complexType name="RegisterType">
<sequence>
<element name="Prototype" type="xkms:KeyBindingType"/>
<element name="AuthInfo" type="xkms:AuthInfoType"/>
<element name="Respond" type="xkms:RespondType"/>
</sequence>
</complexType>
<complexType name="RegisterResultType">
<sequence>
<element name="Result" type="xkms:ResultCodeType"/>
<element minOccurs="0" name="Answer" type="xkms:RegisterResultAnswerType"/>
<element minOccurs="0" name="Private" type="xkms:PrivateType"/>
<element minOccurs="0" name="ErrorInfo" type="xkms:ErrorInfoType"/>
<element maxOccurs="1" minOccurs="0" ref="ds:Signature"/>
</sequence>
<attribute name="Id" type="ID" use="optional"/>
</complexType>
<complexType name="RegisterResultAnswerType">
<sequence>
<element name="KeyBinding" type="xkms:KeyBindingType"/>
</sequence>
</complexType>
<complexType name="RecoverType">
<sequence>
<element ref="xkms:Register"/>
</sequence>
</complexType>
<complexType name="RecoverResultType">
<sequence>
<element ref="xkms:RegisterResult"/>
</sequence>
</complexType>
<complexType name="RevokeType">
<sequence>
<element ref="xkms:Register"/>
</sequence>
</complexType>
<complexType name="PrivateType">
<sequence>
<any maxOccurs="unbounded" processContents="lax"
minOccurs="0" namespace="##any"/>
</sequence>
<anyAttribute namespace="##any" processContents="lax"/>
</complexType>
<complexType name="RevokeResultType">
<sequence>
<element ref="xkms:RegisterResult"/>
</sequence>
</complexType>
<complexType name="ErrorInfoType">
<sequence>
<element name="ErrorDescription" type="string"/>
<element minOccurs="0" name="ErrorActor" type="string"/>
<element minOccurs="0" name="ErrorDetail" type="xkms:ErrorDetailType"/>
</sequence>
<attribute name="errorCode" type="string" use="required"/>
</complexType>
<complexType name="ErrorDetailType">
<sequence>
<any namespace="##other" processContents="strict"/>
</sequence>
<anyAttribute namespace="##other" processContents="strict"/>
</complexType>
<simpleType name="ErrorCodeType">
<restriction base="string">
<enumeration value="Client"/>
<enumeration value="Server"/>
<enumeration value="Client.MalformedKeyNamePassed"/>
<enumeration value="Client.InvalidPassPhraseAuth"/>
<enumeration value="*"/>
</restriction>
</simpleType>
<complexType name="KeyBindingType">
<sequence>
<element minOccurs="0" name="TransactionID" type="string"/>
<element name="Status" type="xkms:AssertionStatusType"/>
<element maxOccurs="unbounded" minOccurs="0" name="KeyID" type="string"/>
<element minOccurs="0" ref="ds:KeyInfo"/>
<element minOccurs="0" name="PassPhrase" type="string"/>
<element minOccurs="0" name="ProcessInfo" type="xkms:ProcessInfoType"/>
<element minOccurs="0" name="ValidityInterval" type="xkms:ValidityIntervalType"/>
<element maxOccurs="unbounded" minOccurs="0" name="KeyUsage" type="xkms:KeyUsageType"/>
<element minOccurs="0" name="Private" type="xkms:PrivateType"/>
</sequence>
<attribute name="Id" type="ID" use="optional"/>
</complexType>
<complexType name="KeyInfoType">
<sequence>
<element ref="ds:KeyInfo"/>
</sequence>
</complexType>
<complexType name="RespondType">
<sequence>
<element maxOccurs="unbounded" minOccurs="0" name="string" type="xkms:RespondEnum"/>
</sequence>
</complexType>
<simpleType name="RespondEnum">
<restriction base="string">
<enumeration value="KeyName"/>
<enumeration value="KeyValue"/>
<enumeration value="X509Cert"/>
<enumeration value="X509Chain"/>
<enumeration value="X509CRL"/>
<enumeration value="OCSP"/>
<enumeration value="RetrievalMethod"/>
<enumeration value="MgmtData"/>
<enumeration value="PGPData"/>
<enumeration value="PGPWeb"/>
<enumeration value="SPKIData"/>
<enumeration value="Multiple"/>
<enumeration value="Private"/>
<enumeration value="ValidityInterval"/>
<enumeration value="KeyUsage"/>
<enumeration value="Status"/>
<enumeration value="SignedResult"/>
</restriction>
</simpleType>
<complexType name="LocateResultAnswerType">
<sequence>
<element maxOccurs="unbounded" minOccurs="0" ref="ds:KeyInfo"/>
</sequence>
</complexType>
<simpleType name="ResultCodeType">
<restriction base="string">
<enumeration value="Success"/>
<enumeration value="NoMatch"/>
<enumeration value="NotFound"/>
<enumeration value="Incomplete"/>
<enumeration value="Failure"/>
<enumeration value="Refused"/>
<enumeration value="Pending"/>
</restriction>
</simpleType>
<simpleType name="AssertionStatusType">
<restriction base="string">
<enumeration value="Valid"/>
<enumeration value="Invalid"/>
<enumeration value="Indeterminate"/>
</restriction>
</simpleType>
<complexType name="ProcessInfoType">
<sequence maxOccurs="unbounded" minOccurs="0">
<any namespace="##other"/>
</sequence>
</complexType>
<complexType name="ValidityIntervalType">
<sequence>
<element minOccurs="0" name="NotBefore" type="timeInstant"/>
<element minOccurs="0" name="NotAfter" type="timeInstant"/>
</sequence>
</complexType>
<simpleType name="KeyUsageType">
<restriction base="string">
<enumeration value="Encryption"/>
<enumeration value="Signature"/>
<enumeration value="Exchange"/>
</restriction>
</simpleType>
<complexType name="AuthInfoType">
<choice>
<element name="AuthUserInfo" type="xkms:AuthUserInfoType"/>
<element name="AuthServerInfo" type="xkms:AuthServerInfoType"/>
</choice>
</complexType>
<complexType name="ProofOfPossessionType">
<sequence>
<element minOccurs="0" ref="ds:Signature"/>
</sequence>
</complexType>
<complexType name="KeyBindingAuthType">
<sequence>
<element minOccurs="0" ref="ds:Signature"/>
</sequence>
</complexType>
<complexType name="AuthUserInfoType">
<sequence>
<element minOccurs="0" name="ProofOfPossession" type="xkms:ProofOfPossessionType"/>
<element minOccurs="0" name="KeyBindingAuth" type="xkms:KeyBindingAuthType"/>
<element minOccurs="0" name="PassPhraseAuth" type="string"/>
</sequence>
</complexType>
<complexType name="AuthServerInfoType">
<sequence>
<element minOccurs="0" name="KeyBindingAuth" type="xkms:KeyBindingAuthType"/>
<element minOccurs="0" name="PassPhraseAuth" type="string"/>
</sequence>
</complexType>
</schema>
</types>
<message name="Register">
<part name="body" element="xkms:Register"/>
</message>
<message name="RegisterResult">
<part name="body" element="xkms:RegisterResult"/>
</message>
<message name="Validate">
<part name="body" element="xkms:Validate"/>
</message>
<message name="ValidateResult">
<part name="body" element="xkms:ValidateResult"/>
</message>
<message name="Locate">
<part name="body" element="xkms:Locate"/>
</message>
<message name="LocateResult">
<part name="body" element="xkms:LocateResult"/>
</message>
<portType name="KeyServicePortType">
<operation name="Register">
<input message="tns:Register"/>
<output message="tns:RegisterResult"/>
<fault message="tns:RegisterResult"/>
</operation>
<operation name="Validate">
<input message="tns:Validate"/>
<output message="tns:ValidateResult"/>
<fault message="tns:ValidateResult"/>
</operation>
<operation name="Locate">
<input message="tns:Locate"/>
<output message="tns:LocateResult"/>
<fault message="tns:LocateResult"/>
</operation>
</portType>
<binding name="KeyServiceSoapBinding" type="tns:KeyServicePortType">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<operation name="Register">
<soap:operation soapAction="http://www.xkms.org/schema/xkms-2001-01-20#Register" style="document"/>
<input message="tns:Register">
<soap:body parts="body" use="literal"/>
</input>
<output message="tns:RegisterResult">
<soap:body parts="body" use="literal"/>
</output>
</operation>
<operation name="Validate">
<soap:operation soapAction="http://www.xkms.org/schema/xkms-2001-01-20#Validate" style="document"/>
<input message="tns:Validate">
<soap:body parts="body" use="literal"/>
</input>
<output message="tns:ValidateResult">
<soap:body parts="body" use="literal"/>
</output>
</operation>
<operation name="Locate">
<soap:operation soapAction="http://www.xkms.org/schema/xkms-2001-01-20#Locate" style="document"/>
<input message="tns:Locate">
<soap:body parts="body" use="literal"/>
</input>
<output message="tns:LocateResult">
<soap:body parts="body" use="literal"/>
</output>
</operation>
</binding>
<binding name="KeyServiceHttpPostBinding" type="tns:KeyServicePortType">
<http:binding verb="POST"/>
<operation name="Register">
<http:operation location="xkms/Acceptor.nano"/>
<input message="tns:Register">
<mime:content parts="body" type="text/xml"/>
</input>
<output message="tns:RegisterResult">
<mime:content parts="body" type="text/xml"/>
</output>
</operation>
<operation name="Validate">
<http:operation location="xkms/Acceptor.nano"/>
<input message="tns:Validate">
<mime:content parts="body" type="text/xml"/>
</input>
<output message="tns:ValidateResult">
<mime:content parts="body" type="text/xml"/>
</output>
</operation>
<operation name="Locate">
<http:operation location="xkms/Acceptor.nano"/>
<input message="tns:Locate">
<mime:content parts="body" type="text/xml"/>
</input>
<output message="tns:LocateResult">
<mime:content parts="body" type="text/xml"/>
</output>
</operation>
</binding>
<service name="XMLKeyManagementService">
<documentation>Verisign's XML Key Management Service (XKMS)</documentation>
<port name="KeyServiceSoapPort" binding="tns:KeyServiceSoapBinding">
<soap:address location="http://xkms.verisign.com/xkms/Acceptor.nano"/>
</port>
<port name="KeyServiceHttpPostPort" binding="tns:KeyServiceHttpPostBinding">
<http:address location="http://xkms.verisign.com/"/>
</port>
</service>
<service name="PilotXMLKeyManagementService">
<documentation>Verisign's Pilot XML Key Management Service (XKMS)</documentation>
<port name="KeyServiceSoapPort" binding="tns:KeyServiceSoapBinding">
<soap:address location="http://pilot-xkms.verisign.com/xkms/Acceptor.nano"/>
</port>
<port name="KeyServiceHttpPostPort" binding="tns:KeyServiceHttpPostBinding">
<http:address location="http://pilot-xkms.verisign.com/"/>
</port>
</service>
</definitions>