<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xsms="http://www.identrust.com/xsms/v1#" xmlns:xkms="http://www.w3.org/2002/03/xkms#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.identrust.com/xsms/v1#" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="./SchemaFiles/xmldsig-core-schema.xsd"/>
	<xs:import namespace="http://www.w3.org/2002/03/xkms#" schemaLocation="./SchemaFiles/xkms.xsd"/>
	<!-- Use the same ds schema as XKMS to avoid possible naming conflicts -->
	<xs:annotation>
		<xs:documentation xml:lang="en">
   XML Schema for XSMS Proposal 2019
   </xs:documentation>
	</xs:annotation>
  <!-- Subscriber -->
	<xs:element name="Subscriber">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="xsms:Name" minOccurs="0"/>
				<xs:element ref="xsms:Address" minOccurs="0"/>
				<xs:element ref="xsms:Phone" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element ref="xsms:EmailAddress" minOccurs="0"/>
				<xs:element ref="xsms:DateBirth" minOccurs="0"/>
				<xs:element ref="xsms:SSN" minOccurs="0"/>
				<xs:element ref="xsms:Identification" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element ref="xsms:Title" minOccurs="0"/>
				<xs:element ref="xsms:Company" minOccurs="0"/>
				<xs:element ref="xsms:Payment" minOccurs="0"/>
        <xs:element ref="xsms:ShippingOption" minOccurs="0"/>
        <xs:element ref="xsms:FedExAccount" minOccurs="0"/>
      </xs:sequence>
			<xs:attribute name="Identifier" type="xs:string" use="optional"/>
			<xs:attribute name="Status" type="xs:string" use="optional"/>
			<xs:attribute name="SecondaryIdentifier" type="xs:string" use="optional"/>
		</xs:complexType>
	</xs:element>
	<!-- /Subscriber -->
  <!-- Company -->
	<xs:element name="Company">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="xsms:EntityName" minOccurs="0"/>
				<xs:element ref="xsms:Department" minOccurs="0"/>
				<xs:element ref="xsms:Address" minOccurs="0"/>
				<xs:element ref="xsms:Phone" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
			<xs:attribute name="Identifier" type="xs:string" use="optional"/>
			<xs:attribute name="Type" type="xs:string" use="optional"/>
			<xs:attribute name="SecondaryIdentifier" type="xs:string" use="optional"/>
		</xs:complexType>
	</xs:element>
	<!-- /Company -->
  <!-- ExportAccountInfo -->
  <xs:element name="ExportAccountInfo">
		<xs:complexType>
			<xs:sequence>
        <xs:element ref="xsms:Identifier"/>
        <xs:element ref="xsms:AccountType"/>
        <xs:element ref="xsms:AccountStatus"/>
				<xs:element ref="xsms:EntityName"/>
        <xs:element ref="xsms:Address"/>
        <xs:element ref="xsms:EmailAddress"/>
				<xs:element ref="xsms:CompanyName" minOccurs="0"/>
        <xs:element ref="xsms:TrackingNumber" minOccurs="0"/>
        <xs:element ref="xsms:Created"/>
        <xs:element ref="xsms:LastModified"/>
        <xs:element ref="xsms:Certificate" maxOccurs="unbounded" minOccurs="0"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
  <!-- /ExportAccountInfo -->
  <!-- SystemInfo -->
  <xs:element name="SystemInfo">
		<xs:complexType>
			<xs:sequence>
                <xs:element ref="xsms:Certs" maxOccurs="unbounded" minOccurs="0"/>
				<xs:element ref="xsms:ApprovedDomains" maxOccurs="unbounded" minOccurs="0"/>
				<xs:element ref="xsms:PendingDomains" maxOccurs="unbounded" minOccurs="0"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
  <!-- /SystemInfo -->
  <!-- SSLDomainInfo -->
  <xs:element name="SSLDomainInfo">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="xsms:PendingDomains" maxOccurs="unbounded" minOccurs="0"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
  <!-- /SSLDomainInfo -->
  <!--Export function Certificate Info-->
	<xs:element name="Certificate">
		<xs:complexType>
			<xs:sequence>
        <xs:element ref="xsms:CertType"/>
        <xs:element ref="xsms:CertStatus"/>
        <xs:element ref="xsms:ActivationCode"/>
        <xs:element ref="xsms:EncodedCertificate" minOccurs="0"/>
        <xs:element ref="xsms:NotBefore" minOccurs="0"/>
        <xs:element ref="xsms:NotAfter" minOccurs="0"/>
        <xs:element ref="xsms:SerialNumber" minOccurs="0"/>
        <xs:element ref="xsms:RetrievedDate" minOccurs="0"/>
        <xs:element ref="xsms:IssuedDate" minOccurs="0"/>
        <xs:element ref="xsms:Created"/>
        <xs:element ref="xsms:RevocationCode" minOccurs="0"/>
        <xs:element ref="xsms:RevocationDate" minOccurs="0"/>

			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<!-- Complex Element Definitions -->
	<xs:element name="Certs">
	    <xs:complexType>
	        <xs:sequence>
	            <xs:element ref="xsms:Cert" minOccurs="0" maxOccurs="unbounded"/>
	        </xs:sequence>
	    </xs:complexType>
	</xs:element>
	<xs:element name="Cert">
	    <xs:complexType>
	        <xs:sequence>
	            <xs:element name="AcctType">
	                <xs:complexType>
	                    <xs:sequence>
	                        <xs:element ref="xsms:Id" minOccurs="0"/>
	                        <xs:element ref="xsms:Description" minOccurs="0"/>
	                    </xs:sequence>
	                </xs:complexType>
	            </xs:element>
		        <xs:element name="CertType">
	                <xs:complexType>
	                    <xs:sequence>
	                        <xs:element ref="xsms:Id" minOccurs="0"/>
	                        <xs:element ref="xsms:Description" minOccurs="0"/>
	                    </xs:sequence>
	                </xs:complexType>
	            </xs:element>
				<xs:element name="ParentAccount" minOccurs="0">
	                <xs:complexType>
	                    <xs:sequence>
	                        <xs:element ref="xsms:Id" minOccurs="0"/>
	                        <xs:element ref="xsms:OrganizationName" minOccurs="0"/>
	                    </xs:sequence>
	                </xs:complexType>
	            </xs:element>
	        </xs:sequence>
	    </xs:complexType>
	</xs:element>
	<xs:element name="ApprovedDomains">
	    <xs:complexType>
	        <xs:sequence>
	            <xs:element ref="xsms:Domain" minOccurs="0" maxOccurs="unbounded"/>
	        </xs:sequence>
	    </xs:complexType>
	</xs:element>
	<xs:element name="PendingDomains">
	    <xs:complexType>
	        <xs:sequence>
	            <xs:element ref="xsms:Domain" minOccurs="0" maxOccurs="unbounded"/>
	        </xs:sequence>
	    </xs:complexType>
	</xs:element>
	<xs:element name="Address">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="xsms:AddressLine" minOccurs="0" maxOccurs="6"/>
				<xs:element ref="xsms:City" minOccurs="0"/>
				<xs:element ref="xsms:State" minOccurs="0"/>
				<xs:element ref="xsms:Province" minOccurs="0"/>
				<xs:element ref="xsms:ZipCode" minOccurs="0"/>
				<xs:element ref="xsms:Country" minOccurs="0"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="Name">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="xsms:NamePrefix" minOccurs="0"/>
				<xs:element ref="xsms:NameFirst"/>
				<xs:element ref="xsms:NameMiddle" minOccurs="0"/>
				<xs:element ref="xsms:NameLast"/>
				<xs:element ref="xsms:NameSuffix" minOccurs="0"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="Payment">
	        <xs:complexType>
	                <xs:sequence>
	                        <xs:element ref="xsms:CreditCard" minOccurs="0"/>
	                        <xs:element ref="xsms:VoucherNumber" minOccurs="0"/>
	                        <xs:element ref="xsms:OrderNumber" minOccurs="0"/>
	                </xs:sequence>
	        </xs:complexType>
	</xs:element>
        <xs:element name="CreditCard">
                <xs:complexType>
                        <xs:sequence>
                                <xs:element ref="xsms:CCNumber" />
                                <xs:element ref="xsms:BillingName" minOccurs="0"/>
                                <xs:element ref="xsms:CCExpirationDate" />
                                <xs:element ref="xsms:CVV" minOccurs="0"/>
                                <xs:element ref="xsms:Address" minOccurs="0"/>
                        </xs:sequence>
                </xs:complexType>
        </xs:element>
	<xs:element name="Identification">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="xsms:IDNumber"/>
				<xs:element ref="xsms:DateExpiration" minOccurs="0"/>
				<xs:element ref="xsms:IssuingAuthority"/>
			</xs:sequence>
			<xs:attribute name="Type" use="optional"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="AddressLine">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="xs:string">
					<xs:attribute name="LineNumber" type="xsms:AddressLineNumbers" use="required"/>
				</xs:extension>
				<!-- Only line numbers 1 through 6 are allowed -->
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<!-- AddressLineNumbers -->
	<xs:simpleType name="AddressLineNumbers">
		<xs:annotation>
			<xs:documentation>Address Line Numbers</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:int">
			<xs:enumeration value="1"/>
			<xs:enumeration value="2"/>
			<xs:enumeration value="3"/>
			<xs:enumeration value="4"/>
			<xs:enumeration value="5"/>
			<xs:enumeration value="6"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- End AddressLineNumbers -->
	<xs:element name="Phone">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="xs:string">
					<xs:attribute name="Type" type="xs:string" use="required"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
  <xs:element name="CertStatus">
    <xs:annotation>
      <xs:documentation>Filtered list of cert status values that are relevant to the search.
      </xs:documentation>
    </xs:annotation>
    <xs:simpleType>
      <xs:restriction base="xs:int">
        <xs:enumeration value="100"/><!-- Requested -->
        <xs:enumeration value="150"/><!-- Approved Pending Payment -->
        <xs:enumeration value="200"/><!-- Approved for Issuance -->
        <xs:enumeration value="350"/><!-- Awaiting Retrieval -->
        <xs:enumeration value="500"/><!-- Retrieval Completed -->
        <xs:enumeration value="700"/><!-- Declined -->
        <xs:enumeration value="800"/><!-- Revoked -->
        <xs:enumeration value="810"/><!-- Suspended -->
        <xs:enumeration value="830"/><!-- Expired -->
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
    <xs:element name="AccountStatus">
    <xs:annotation>
      <xs:documentation>Filtered list of account status values that are relevant to the search.
      </xs:documentation>
    </xs:annotation>
    <xs:simpleType>
      <xs:restriction base="xs:int">
        <xs:enumeration value="100"/><!-- Application Submitted -->
        <xs:enumeration value="125"/><!-- Pending notary form, more customer info. required -->
        <xs:enumeration value="150"/><!-- Pending Authorization -->
        <xs:enumeration value="400"/><!-- Account Approved -->
        <xs:enumeration value="896"/><!-- Revoked Account -->
        <xs:enumeration value="994"/><!-- Account Declined - Past 90 day retrieval period -->
        <xs:enumeration value="996"/><!-- Account declined- No response -->
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
    <xs:element name="DateSearchType">
    <xs:annotation>
      <xs:documentation>List of date types to query in the account search
      </xs:documentation>
    </xs:annotation>
    <xs:simpleType>
      <xs:restriction base="xs:int">
        <xs:enumeration value="1"/><!-- Account Created -->
        <xs:enumeration value="2"/><!-- Account last modified -->
        <xs:enumeration value="3"/><!-- Certificate revoked -->
        <xs:enumeration value="4"/><!-- Certificate retreived -->
        <xs:enumeration value="5"/><!-- Certificate issued -->
       </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="ShippingOption">
    <xs:annotation>
      <xs:documentation>List of shipping options in the registration request
      </xs:documentation>
    </xs:annotation>
    <xs:simpleType>
      <xs:restriction base="xs:int">
        <xs:enumeration value="100"/><!-- USPS First Class -->
        <xs:enumeration value="300"/><!-- FedEx Ground -->
        <xs:enumeration value="310"/><!-- FedEx 2 Day -->
        <xs:enumeration value="320"/><!-- FedEx Priority Overnight -->
        <xs:enumeration value="330"/><!-- FedEx Standard Overnight -->
        <xs:enumeration value="340"/><!-- FedEx Home -->
        <xs:enumeration value="350"/><!-- FedEx International Priority -->
        <xs:enumeration value="360"/><!-- FedEx International Economy -->
       </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <!-- TestXSMS -->
  <xs:element name="TestXSMS">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="xsms:Mode" />
            </xs:sequence>
        </xs:complexType>
  </xs:element>
 <!-- /TestXSMS -->
  <!-- Certificate Binding -->
	<xs:element name="CertificateBinding">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="xkms:PrototypeKeyBinding"/>
				<xs:element ref="xkms:Authentication" minOccurs="0"/>
				<xs:element ref="xkms:ProofOfPossession" minOccurs="0"/>
				<xs:element ref="xsms:CertificateInformation"/>
				<xs:any minOccurs="0"/>
			</xs:sequence>
			<xs:attribute name="BindingID" type="xs:string"/>
			<xs:attribute name="RequestType" type="xs:string"/>
			<xs:attribute name="RespondWithX509Chain" type="xs:boolean" use="optional" default="false"/>
		</xs:complexType>
	</xs:element>
	<!-- /Certificate Binding -->
	<!-- Reissue Certificate Binding -->
	<xs:element name="ReissueCertificateBinding">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="xkms:ReissueKeyBinding"/>
				<xs:element ref="xkms:Authentication" minOccurs="0"/>
				<xs:element ref="xkms:ProofOfPossession" minOccurs="0"/>
				<xs:element ref="xsms:CertificateInformation"/>
				<!--<xs:element ref="xs:any" minOccurs="0"/>-->
				<xs:any minOccurs="0"/>
			</xs:sequence>
			<xs:attribute name="BindingID" type="xs:string"/>
			<xs:attribute name="RequestType" type="xs:string"/>
		</xs:complexType>
	</xs:element>
	<!-- /Reissue Certificate Binding -->
	<!-- Revoke Certificate Binding -->
	<xs:element name="RevokeCertificateBinding">
		<xs:complexType>
			<xs:complexContent>
				<xs:extension base="xkms:RequestAbstractType">
					<xs:sequence>
						<xs:element ref="xkms:RevokeKeyBinding"/>
						<xs:choice>
							<xs:element ref="xkms:Authentication" minOccurs="0"/>
							<xs:element ref="xkms:RevocationCode" minOccurs="0"/>
						</xs:choice>
						<xs:element ref="xsms:CertificateInformation" minOccurs="0" maxOccurs="unbounded"/>
						<xs:element ref="xsms:RevocationReasonCode"/>
						<!--<xs:element ref="xs:any" minOccurs="0"/>-->
						<xs:any minOccurs="0"/>
					</xs:sequence>
					<xs:attribute name="BindingID" type="xs:string"/>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<!-- /Revoke Certificate Binding -->
	<!-- Recover Certificate Binding -->
	<xs:element name="RecoverCertificateBinding">
		<xs:complexType>
			<xs:complexContent>
				<xs:extension base="xkms:RequestAbstractType">
					<xs:sequence>
						<xs:element ref="xkms:RecoverKeyBinding"/>
						<xs:element ref="xkms:Authentication" minOccurs="0"/>
						<xs:element ref="xsms:CertificateInformation" minOccurs="0" maxOccurs="unbounded"/>
					</xs:sequence>
					<xs:attribute name="BindingID" type="xs:string" use="required"/>
			    <xs:attribute name="RequestType" type="xs:string"/>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<!-- /Certificate Binding -->
	<!-- Certificate Binding Response -->
	<xs:element name="CertificateBindingResult">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="xsms:CertificateInformation" minOccurs="0"/>
				<xs:element ref="xsms:KeyBinding" minOccurs="0" maxOccurs="unbounded"/>
				<xs:choice>
					<xs:element ref="xsms:KeyPair" minOccurs="0"/>
					<xs:element ref="xsms:WrappedKey" minOccurs="0"/>
					<xs:element ref="xkms:PrivateKey" minOccurs="0"/>
				</xs:choice>
				<xs:element ref="xsms:ResultConditions" minOccurs="0"/>
				<xs:element ref="xsms:Pkcs7Chains" minOccurs="0"/>
			</xs:sequence>
			<xs:attribute name="BindingID" type="xs:string" use="required"/>
			<xs:attribute name="RequestType" type="xs:string" use="optional"/>
			<xs:attribute name="ResultMinor" type="xkms:ResultMinorOpenEnum" use="optional"/>
		</xs:complexType>
	</xs:element>
	<!-- /Certificate Binding Response -->
	<!-- Certificate Info-->
	<xs:element name="CertificateInformation">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="xsms:CertificateIdentifier" maxOccurs="unbounded"/>
				<xs:element ref="xsms:GUID" minOccurs="0"/>
				<xs:element ref="xsms:DomainName" minOccurs="0"/>
				<xs:element ref="xsms:MultiDomainNames" minOccurs="0"/>
				<xs:element ref="xsms:IPAddress" minOccurs="0"/>
				<xs:element ref="xsms:CertificateSigningRequest" minOccurs="0"/>
				<xs:element ref="xsms:PrincipalName" minOccurs="0"/>
				<xs:element ref="xsms:PivInterim" minOccurs="0"/>
				<xs:element ref="xsms:DirectoryName" minOccurs="0"/>
				<xs:element ref="xsms:FASCN" minOccurs="0"/>
				<xs:element ref="xsms:NumDaysRequested" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element ref="xsms:WrappedKey" minOccurs="0"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="MultiDomainNames">
                <xs:complexType>
                        <xs:sequence>
                                <xs:element ref="xsms:Domain" maxOccurs="unbounded"/>
                        </xs:sequence>
                </xs:complexType>
        </xs:element>
	<xs:element name="CertificateIdentifier">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="xs:string">
					<xs:attribute name="Type" type="xs:string" use="required"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="CertificateSigningRequest">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="xs:base64Binary">
					<xs:attribute name="Format" type="xs:string" use="required"/>
					<xs:attribute ref="xsms:Sequence" use="optional"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="RevokeReasons">
		<xs:annotation>
			<xs:documentation>Revocation Codes as defined by RFC3280, section 5.3.1</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:enumeration value="0"/>
			<xs:enumeration value="1"/>
			<xs:enumeration value="2"/>
			<xs:enumeration value="3"/>
			<xs:enumeration value="4"/>
			<xs:enumeration value="5"/>
			<xs:enumeration value="6"/>
			<xs:enumeration value="8"/>
			<xs:enumeration value="9"/>
			<xs:enumeration value="10"/>
			<!-- 0 = unspecified -->
			<!-- 1 = Key Compromise -->
			<!-- 2 = CA Compromise -->
			<!-- 3 = Affiliation Changed -->
			<!-- 4 = Superseded -->
			<!-- 5 = Cessation of Operation -->
			<!-- 6 = Certificate Hold -->
			<!-- val ''7 not defined in RFC -->
			<!-- 8 = Remove From CRL -->
			<!-- 9 = Privilege Withdrawn -->
			<!-- 10 = AA Compromise-->
		</xs:restriction>
	</xs:simpleType>
	<!-- 	XKMS Extension-->
	<!-- RegisterRequest -->
	<xs:element name="RegisterRequest" type="xsms:RegisterRequestType"/>
	<xs:complexType name="RegisterRequestType">
		<xs:complexContent>
			<xs:extension base="xkms:RequestAbstractType">
				<xs:sequence>
					<xs:element ref="xsms:CertificateBinding" maxOccurs="unbounded"/>
					<xs:element ref="xsms:Subscriber" minOccurs="0"/>
					<xs:element ref="xsms:Company" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<!-- /RegisterRequest -->
	<!-- RegisterResult -->
	<xs:element name="RegisterResult" type="xsms:RegisterResultType"/>
	<xs:complexType name="RegisterResultType">
		<xs:complexContent>
			<xs:extension base="xkms:ResultType">
				<xs:sequence>
					<xs:element ref="xsms:CertificateBindingResult" minOccurs="0" maxOccurs="unbounded"/>
					<xs:element ref="xsms:Subscriber" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<!-- /RegisterResult -->
	<!-- ReissueRequest -->
	<xs:element name="ReissueRequest" type="xsms:ReissueRequestType"/>
	<xs:complexType name="ReissueRequestType">
		<xs:complexContent>
			<xs:extension base="xkms:RequestAbstractType">
				<xs:sequence>
					<xs:element ref="xsms:ReissueCertificateBinding" maxOccurs="unbounded"/>
					<xs:element ref="xsms:Subscriber"/>
				</xs:sequence>
				<xs:attribute name="ReissueType" type="xs:string" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<!-- /RessiueRequest -->
	<!-- ReissueResult -->
	<xs:element name="ReissueResult" type="xsms:ReissueResultType"/>
	<xs:complexType name="ReissueResultType">
		<xs:complexContent>
			<xs:extension base="xkms:ResultType">
				<xs:sequence>
					<xs:element ref="xsms:CertificateBindingResult" minOccurs="0" maxOccurs="unbounded"/>
					<xs:element ref="xsms:Subscriber" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<!-- /ReissueResult -->
	<!-- RevokeRequest -->
	<xs:element name="RevokeRequest" type="xsms:RevokeRequestType"/>
	<xs:complexType name="RevokeRequestType">
		<xs:complexContent>
			<xs:extension base="xkms:RequestAbstractType">
				<xs:sequence>
					<xs:element ref="xsms:RevokeCertificateBinding" maxOccurs="unbounded"/>
					<xs:element ref="xsms:Subscriber" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<!-- RevokeRequest -->
	<!-- RevokeResult -->
	<xs:element name="RevokeResult" type="xsms:RevokeResultType"/>
	<xs:complexType name="RevokeResultType">
		<xs:complexContent>
			<xs:extension base="xkms:ResultType">
				<xs:sequence>
					<xs:element ref="xsms:CertificateBindingResult" minOccurs="0" maxOccurs="unbounded"/>
					<xs:element ref="xsms:Subscriber" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<!-- /RevokeResult -->
	<!-- RecoverRequest -->
	<xs:element name="RecoverRequest" type="xsms:RecoverRequestType"/>
	<xs:complexType name="RecoverRequestType">
		<xs:complexContent>
			<xs:extension base="xkms:RequestAbstractType">
				<xs:sequence>
					<xs:element ref="xsms:RecoverCertificateBinding"/>
					<xs:element ref="xsms:Subscriber" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<!-- /RecoverRequest -->
	<!-- RecoverResult -->
	<xs:element name="RecoverResult" type="xsms:RecoverResultType"/>
	<xs:complexType name="RecoverResultType">
		<xs:complexContent>
			<xs:extension base="xkms:ResultType">
				<xs:sequence>
					<xs:element ref="xsms:CertificateBindingResult" minOccurs="0" maxOccurs="unbounded"/>
					<xs:element ref="xsms:Subscriber" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<!-- /RecoverResult -->
   <!-- SearchCriteria -->
	<xs:element name="SearchCriteria">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="xsms:Identifier" minOccurs="0"/>
				<xs:element ref="xsms:EmailAddress" minOccurs="0"/>
				<xs:element ref="xsms:FirstName" minOccurs="0"/>
				<xs:element ref="xsms:LastName" minOccurs="0"/>
				<xs:element ref="xsms:CompanyName" minOccurs="0"/>
				<xs:element ref="xsms:AccountType" minOccurs="0"/>
				<xs:element ref="xsms:AccountStatus" minOccurs="0"/>
				<xs:element ref="xsms:CertType" minOccurs="0"/>
                <xs:element ref="xsms:CertStatus" minOccurs="0"/>
                <xs:element ref="xsms:CertSN" minOccurs="0"/>
				<xs:element ref="xsms:DateSearchType" minOccurs="0"/>
				<xs:element ref="xsms:NotBefore" minOccurs="0"/>
				<xs:element ref="xsms:NotAfter" minOccurs="0"/>
				<xs:element ref="xsms:SearchLimit" minOccurs="0"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<!-- /SearchCriteria -->
  <!-- SearchAndExportRequest -->
	<xs:element name="SearchAndExportRequest" type="xsms:SearchAndExportRequestType"/>
	<xs:complexType name="SearchAndExportRequestType">
    <xs:complexContent>
      <xs:extension base="xkms:RequestAbstractType">
		<xs:sequence>
          <xs:element ref="xsms:SearchCriteria" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
      </xs:extension>
    </xs:complexContent>
	</xs:complexType>
	<!-- /SearchAndExportRequest -->
	<!-- SearchAndExportResult -->
	<xs:element name="SearchAndExportResult" type="xsms:SearchAndExportResultType"/>
	<xs:complexType name="SearchAndExportResultType">
    <xs:complexContent>
      <xs:extension base="xkms:ResultType">
        <xs:sequence>
          <xs:element ref="xsms:ResultConditions" minOccurs="0"/>
          <xs:element ref="xsms:ExportAccountInfo" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
	<!-- /SearchAndExportResult -->
	<!-- XSMSTestRequest -->
	<xs:element name="TestXSMSRequest" type="xsms:TestXSMSRequestType"/>
	<xs:complexType name="TestXSMSRequestType">
    <xs:complexContent>
      <xs:extension base="xkms:RequestAbstractType">
	    <xs:sequence>
          <xs:element ref="xsms:TestXSMS" minOccurs="0"/>
		</xs:sequence>
      </xs:extension>
    </xs:complexContent>
 	</xs:complexType>
	<!-- /TestXSMSRequest -->
	<!-- TestXSMSResult -->
	<xs:element name="TestXSMSResult" type="xsms:TestXSMSResultType"/>
	<xs:complexType name="TestXSMSResultType">
    <xs:complexContent>
      <xs:extension base="xkms:ResultType">
        <xs:sequence>
          <xs:element ref="xsms:ResultConditions" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
	<!-- /TestXSMSResult -->
	<!-- SystemInfoRequest -->
	<xs:element name="SystemInfoRequest" type="xsms:SystemInfoRequestType"/>
	<xs:complexType name="SystemInfoRequestType">
    <xs:complexContent>
      <xs:extension base="xkms:RequestAbstractType">
     </xs:extension>
    </xs:complexContent>
 	</xs:complexType>
	<!-- /SystemInfoRequest -->
	<!-- SystemInfoResult -->
	<xs:element name="SystemInfoResult" type="xsms:SystemInfoResultType"/>
	<xs:complexType name="SystemInfoResultType">
    <xs:complexContent>
      <xs:extension base="xkms:ResultType">
        <xs:sequence>
          <xs:element ref="xsms:ResultConditions" minOccurs="0"/>
          <xs:element ref="xsms:SystemInfo" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
	<!-- /SystemInfoResult -->
    <!-- SSLDomainRequest -->
    <xs:element name="SSLDomainRequest" type="xsms:SSLDomainRequestType"/>
    <xs:complexType name="SSLDomainRequestType">
      <xs:complexContent>
        <xs:extension base="xkms:RequestAbstractType">
          <xs:sequence>
            <xs:element ref="xsms:DomainName"/>
            <xs:element ref="xsms:OrganizationName"/>
            <xs:element ref="xsms:PrimaryContact"/>
            <xs:element ref="xsms:SecondaryContact" minOccurs="0"/>
            <xs:element ref="xsms:Address" />
            <xs:element ref="xsms:EmailAddress"/>
            <xs:element ref="xsms:Phone"/>
            <xs:element ref="xsms:Comments" minOccurs="0"/>
          </xs:sequence>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
    <!-- /SSLDomainRequest -->
    <!-- SSLDomainResult -->
    <xs:element name="SSLDomainResult" type="xsms:SSLDomainResultType"/>
    <xs:complexType name="SSLDomainResultType">
      <xs:complexContent>
        <xs:extension base="xkms:ResultType">
          <xs:sequence>
            <xs:element ref="xsms:ResultConditions" minOccurs="0"/>
            <xs:element ref="xsms:SSLDomainInfo" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
    <!-- /SSLDomainResult -->
	<!-- Pkcs7Chains -->
	<xs:element name="Pkcs7Chains">
		<xs:complexType>
	    <xs:sequence>                                                                                                
				<xs:element ref="xsms:Pkcs7" minOccurs="0" maxOccurs="unbounded"/>
	    </xs:sequence>  
		</xs:complexType>
	</xs:element>
	<!-- /Pkcs7Chains -->
	<!-- Pkcs7 -->
	<xs:element name="Pkcs7">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="xs:base64Binary">
					<xs:attribute name="description" type="xs:string" use="required"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<!-- /Pkcs7 -->
	<!--Resultcondition-->
	<xs:element name="ResultConditions">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="xsms:DataError" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<!--/ResultCondition-->
	<!--DataError -->
	<xs:element name="DataError">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="xsms:ElementPath" minOccurs="0"/>
				<xs:element ref="xsms:ErrorCode" minOccurs="0"/>
				<xs:element ref="xsms:ErrorMessage" minOccurs="0"/>
			</xs:sequence>
			<xs:attribute name="ErrorID" type="xs:string"/>
		</xs:complexType>
	</xs:element>
	<!-- /DataError-->
	<!-- KeyPair -->
	<xs:element name="KeyPair">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="xsms:PKCS12"/>
				<xs:element ref="xsms:Password"/>
			</xs:sequence>
			<xs:attribute ref="xsms:Sequence" use="optional"/>
		</xs:complexType>
	</xs:element>
	<!-- /KeyPair -->
	<!-- KeyBinding Binding -->
	<xs:element name="KeyBinding">
		<xs:complexType>
			<xs:complexContent>
				<xs:extension base="xkms:KeyBindingAbstractType">
					<xs:attribute ref="xsms:Sequence" use="optional"/>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<!-- /KeyBinding -->
	<!-- WrappedKey -->
	<xs:element name="WrappedKey">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="WrappedKeyEncoded" type="xsms:EncodedKey"/>
				<xs:element name="WrappedKeyAlgorithm" type="xsms:AlgorithmID"/>
				<xs:element ref="xsms:WrappedKeyBitLength"/>
				<xs:element name="EncryptionAlgorithm" type="xsms:AlgorithmID"/>
				<xs:element name="WrappingKeyEncoded" type="xsms:EncodedKey"/>
				<xs:element name="WrappingKeyAlgorithm" type="xsms:AlgorithmID"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<!-- /WrappedKey -->
  <!-- AlgorithmID -->
  <xs:simpleType name="AlgorithmID">
    <xs:annotation>
      <xs:documentation>AlgorithmID as a String</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
    </xs:restriction>
  </xs:simpleType>
  <!-- Encoded Key -->
  <xs:simpleType name="EncodedKey">
    <xs:annotation>
      <xs:documentation>A base-64 encoded key value</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:base64Binary">
    </xs:restriction>
  </xs:simpleType>

	<!-- /Key -->
	<!-- / XKMS Extension -->
	<!--  Simple Element Definitions -->
	<xs:element name="NameFirst" type="xs:string"/>
	<xs:element name="NameLast" type="xs:string"/>
	<xs:element name="NameMiddle" type="xs:string"/>
	<xs:element name="NamePrefix" type="xs:string"/>
	<xs:element name="NameSuffix" type="xs:string"/>
	<xs:element name="EntityName" type="xs:string"/>
	<xs:element name="Department" type="xs:string"/>
	<xs:element name="Title" type="xs:string"/>
	<xs:element name="City" type="xs:string"/>
	<xs:element name="State" type="xs:string"/>
	<xs:element name="Province" type="xs:string"/>
	<xs:element name="ZipCode" type="xs:string"/>
	<xs:element name="Country" type="xs:string"/>
	<xs:element name="DateBirth" type="xs:dateTime"/>
	<xs:element name="DateExpiration" type="xs:dateTime"/>
	<xs:element name="IDNumber" type="xs:string"/>
  <xs:element name="AccountType" type="xs:string"/>
  <xs:element name="ActivationCode" type="xs:string"/>
  <xs:element name="CertType" type="xs:string"/>
  <xs:element name="CertSN" type="xs:string"/>
  <xs:element name="EncodedCertificate" type="xs:string"/>
  <xs:element name="Identifier" type="xs:string"/>
  <xs:element name="SecondaryIdentifier" type="xs:string"/>
  <xs:element name="SerialNumber" type="xs:string"/>
  <xs:element name="Created" type="xs:dateTime"/>
  <xs:element name="LastModified" type="xs:dateTime"/>
  <xs:element name="NotBefore" type="xs:dateTime"/>
  <xs:element name="NotAfter" type="xs:dateTime"/>
  <xs:element name="RetrievedDate" type="xs:dateTime"/>
  <xs:element name="IssuedDate" type="xs:dateTime"/>
  <xs:element name="RevocationDate" type="xs:dateTime"/>
	<xs:element name="RevocationCode" type="xs:string"/>
	<xs:element name="IssuingAuthority" type="xs:string"/>
	<xs:element name="EmailAddress" type="xs:string"/>
	<xs:element name="GUID" type="xs:string"/>
	<xs:element name="DomainName" type="xs:string"/>
	<xs:element name="Domain" type="xs:string"/>
	<xs:element name="IPAddress" type="xs:string"/>
	<xs:element name="NumDaysRequested" type="xs:positiveInteger"/>
	<xs:element name="PivInterim" type="xs:boolean"/>
	<xs:element name="PrincipalName" type="xs:string"/>
	<xs:element name="DirectoryName" type="xs:string"/>
	<xs:element name="FASCN" type="xs:base64Binary"/>
	<!-- <xs:element name="KeyBinding" type="xkms:KeyBindingAbstractType"/> -->
	<xs:element name="RevocationReasonCode" type="xsms:RevokeReasons" default="0"/>
	<xs:element name="ElementPath" type="xs:string"/>
	<xs:element name="ErrorCode" type="xs:string"/>
	<xs:element name="ErrorMessage" type="xs:string"/>
	<xs:element name="PKCS12" type="xs:base64Binary"/>
	<xs:element name="Password" type="xs:string"/>
	<xs:element name="WrappedKeyBitLength" type="xs:positiveInteger"/>
	<xs:element name="SSN" type="xs:string"/>
	<xs:element name="VoucherNumber" type="xs:string"/>
	<xs:element name="OrderNumber" type="xs:string"/>
	<xs:element name="BillingName" type="xs:string"/>
	<xs:element name="CCNumber" type="xs:positiveInteger"/>
	<xs:element name="CCExpirationDate" type="xs:string"/>
	<xs:element name="CVV" type="xs:string"/>
  <xs:element name="FirstName" type="xs:string"/>
	<xs:element name="LastName" type="xs:string"/>
	<xs:element name="CompanyName" type="xs:string"/>
  <xs:element name="FedExAccount" type="xs:string"/>
  <xs:element name="TrackingNumber" type="xs:string"/>
  <xs:element name="SearchLimit" type="xs:positiveInteger"/>
  <xs:element name="Mode" type="xs:string"/>
  <xs:element name="Id" type="xs:string"/>
  <xs:element name="Description" type="xs:string"/>
  <xs:element name="OrganizationName" type="xs:string"/>
  <xs:element name="PrimaryContact" type="xs:string"/>
  <xs:element name="SecondaryContact" type="xs:string"/>
  <xs:element name="Comments" type="xs:string"/>
	<!-- Attribute Definitions -->
	<xs:attribute name="Sequence" type="xs:int"/>
</xs:schema>

