<?xml version="1.0" encoding="UTF-8"?>
<!-- Securitylayer, Schnittstellenspezifikation -->
<!-- XML-Schema für Schnittstellenspezifikation Version 1.1.0, Protokollelemente im datierten Namespace 20020225 -->
<!-- 31. 08. 2002, Operative Unit, CIO, BMOeLS -->
<xsd:schema xmlns="http://www.buergerkarte.at/namespaces/securitylayer/20020225#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" targetNamespace="http://www.buergerkarte.at/namespaces/securitylayer/20020225#" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.1.0">
	<xsd:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd"/>
	<xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"/>
	<!--########### Create CMS Signature ###-->
	<!--### Create CMS Signature Request ###-->
	<xsd:element name="CreateCMSSignatureRequest" type="CreateCMSSignatureRequestType"/>
	<xsd:complexType name="CreateCMSSignatureRequestType">
		<xsd:sequence>
			<xsd:element name="KeyboxIdentifier" type="BoxIdentifierType"/>
			<xsd:element name="DataObject" type="CMSDataObjectRequiredMetaType"/>
		</xsd:sequence>
		<xsd:attribute name="Structure" use="required">
			<xsd:simpleType>
				<xsd:restriction base="xsd:string">
					<xsd:enumeration value="detached"/>
					<xsd:enumeration value="enveloping"/>
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:attribute>
	</xsd:complexType>
	<xsd:complexType name="CMSDataObjectRequiredMetaType">
		<xsd:complexContent>
			<xsd:restriction base="CMSDataObjectOptionalMetaType">
				<xsd:sequence>
					<xsd:element name="MetaInfo" type="MetaInfoType"/>
					<xsd:element name="Content" type="CMSContentBaseType"/>
				</xsd:sequence>
			</xsd:restriction>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="CMSDataObjectOptionalMetaType">
		<xsd:sequence>
			<xsd:element name="MetaInfo" type="MetaInfoType" minOccurs="0"/>
			<xsd:element name="Content" type="CMSContentBaseType"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="CMSContentBaseType">
		<xsd:complexContent>
			<xsd:restriction base="ContentOptionalRefType">
				<xsd:choice minOccurs="0">
					<xsd:element name="Base64Content" type="xsd:base64Binary"/>
				</xsd:choice>
			</xsd:restriction>
		</xsd:complexContent>
	</xsd:complexType>
	<!--### Create CMS Siganture Response ###-->
	<xsd:element name="CreateCMSSignatureResponse" type="CreateCMSSignatureResponseType"/>
	<xsd:complexType name="CreateCMSSignatureResponseType">
		<xsd:sequence>
			<xsd:element name="CMSSignature" type="xsd:base64Binary"/>
		</xsd:sequence>
	</xsd:complexType>
	<!--########## Create XML Signature ###-->
	<!--### Create XML Signature Request ###-->
	<xsd:element name="CreateXMLSignatureRequest" type="CreateXMLSignatureRequestType"/>
	<xsd:complexType name="CreateXMLSignatureRequestType">
		<xsd:sequence>
			<xsd:element name="KeyboxIdentifier" type="BoxIdentifierType"/>
			<xsd:element name="DataObjectInfo" type="DataObjectInfoType" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="MetaInfoType">
		<xsd:sequence>
			<xsd:element name="MimeType" type="MimeTypeType"/>
			<xsd:element name="Description" type="xsd:anyURI" minOccurs="0"/>
			<xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="DataObjectInfoType">
		<xsd:sequence>
			<xsd:element name="DataObject" type="ContentOptionalRefType"/>
			<xsd:element name="TransformsInfo" type="TransformsInfoType" maxOccurs="unbounded"/>
			<xsd:element name="Supplement" type="XMLDataObjectAssociationType" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="Structure" use="required">
			<xsd:simpleType>
				<xsd:restriction base="xsd:string">
					<xsd:enumeration value="detached"/>
					<xsd:enumeration value="enveloping"/>
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:attribute>
	</xsd:complexType>
	<xsd:complexType name="TransformsInfoType">
		<xsd:sequence>
			<xsd:element ref="dsig:Transforms" minOccurs="0"/>
			<xsd:element name="FinalDataMetaInfo" type="MetaInfoType"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="XMLDataObjectAssociationType">
		<xsd:sequence>
			<xsd:element name="MetaInfo" type="MetaInfoType" minOccurs="0"/>
			<xsd:element name="Content" type="ContentRequiredRefType"/>
		</xsd:sequence>
	</xsd:complexType>
	<!--### Create XML Signature Response ###-->
	<xsd:element name="CreateXMLSignatureResponse" type="CreateXMLSignatureResponseType"/>
	<xsd:complexType name="CreateXMLSignatureResponseType">
		<xsd:sequence>
			<xsd:element ref="dsig:Signature"/>
		</xsd:sequence>
	</xsd:complexType>
	<!--########## Verify CMS Signature ###-->
	<!--### Verifiy CMS Signature Request ###-->
	<xsd:element name="VerifyCMSSignatureRequest" type="VerifyCMSSignatureRequestType"/>
	<xsd:complexType name="VerifyCMSSignatureRequestType">
		<xsd:sequence>
			<xsd:element name="DateTime" type="xsd:dateTime" minOccurs="0"/>
			<xsd:element name="CMSSignature" type="xsd:base64Binary"/>
			<xsd:element name="DataObject" type="CMSDataObjectOptionalMetaType" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
	<!--### Verify CMS Signature Response ###-->
	<xsd:element name="VerifyCMSSignatureResponse" type="VerifyCMSSignatureResponseType"/>
	<xsd:complexType name="VerifyCMSSignatureResponseType">
		<xsd:sequence>
			<xsd:element name="SignerInfo" type="dsig:KeyInfoType"/>
			<xsd:element name="SignatureCheck" type="CheckResultType"/>
			<xsd:element name="CertificateCheck" type="CheckResultType"/>
		</xsd:sequence>
	</xsd:complexType>
	<!--########## Verify XML Signature ###-->
	<!--### Verify XML Signature Request ###-->
	<xsd:element name="VerifyXMLSignatureRequest" type="VerifyXMLSignatureRequestType"/>
	<xsd:complexType name="VerifyXMLSignatureRequestType">
		<xsd:sequence>
			<xsd:element name="DateTime" type="xsd:dateTime" minOccurs="0"/>
			<xsd:element name="SignatureInfo">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="SignatureEnvironment">
							<xsd:complexType>
								<xsd:sequence>
									<xsd:any namespace="##any" processContents="skip"/>
								</xsd:sequence>
							</xsd:complexType>
						</xsd:element>
						<xsd:element name="SignatureLocation" type="xsd:token"/>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="Supplement" type="XMLDataObjectAssociationType" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<!--### Verify XML Signature Response ###-->
	<xsd:element name="VerifyXMLSignatureResponse" type="VerifyXMLSignatureResponseType"/>
	<xsd:complexType name="VerifyXMLSignatureResponseType">
		<xsd:sequence>
			<xsd:element name="SignerInfo" type="dsig:KeyInfoType"/>
			<xsd:element name="SignatureCheck" type="CheckResultType"/>
			<xsd:element name="SignatureManifestCheck" type="CheckResultType"/>
			<xsd:element name="CertificateCheck" type="CheckResultType"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="CheckResultType">
		<xsd:sequence>
			<xsd:element name="Code" type="xsd:nonNegativeInteger"/>
			<xsd:element name="Info" type="AnyChildrenType" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
	<!--########## Infobox Commands ###-->
	<!--### Check Available Infoboxes Request ###-->
	<xsd:element name="InfoboxAvailableRequest" type="InfoboxAvailableRequestType"/>
	<xsd:complexType name="InfoboxAvailableRequestType"/>
	<!--### Check Available Infoboxes Response ###-->
	<xsd:element name="InfoboxAvailableResponse" type="InfoboxAvailableResponseType"/>
	<xsd:complexType name="InfoboxAvailableResponseType">
		<xsd:sequence minOccurs="0" maxOccurs="unbounded">
			<xsd:element name="InfoboxIdentifier" type="BoxIdentifierType"/>
		</xsd:sequence>
	</xsd:complexType>
	<!--### Read Infobox Request ###-->
	<xsd:element name="InfoboxReadRequest" type="InfoboxReadRequestType"/>
	<xsd:complexType name="InfoboxReadRequestType">
		<xsd:sequence>
			<xsd:element name="InfoboxIdentifier" type="BoxIdentifierType"/>
			<xsd:choice>
				<xsd:element name="BinaryFileParameters" type="InfoboxReadParamsBinaryFileType"/>
				<xsd:element name="AssocArrayParameters" type="InfoboxReadParamsAssocArrayType"/>
			</xsd:choice>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="InfoboxReadParamsBinaryFileType">
		<xsd:attribute name="ContentIsXMLEntity" type="xsd:boolean" use="optional" default="false"/>
	</xsd:complexType>
	<xsd:complexType name="InfoboxReadParamsAssocArrayType">
		<xsd:choice>
			<xsd:element name="ReadKeys">
				<xsd:complexType>
					<xsd:attribute name="SearchString" type="WildCardSearchStringType" use="required"/>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="ReadPairs">
				<xsd:complexType>
					<xsd:attribute name="SearchString" type="WildCardSearchStringType" use="required"/>
					<xsd:attribute name="ValuesAreXMLEntities" type="xsd:boolean" use="optional" default="false"/>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="ReadValue">
				<xsd:complexType>
					<xsd:attribute name="Key" type="BoxIdentifierType" use="required"/>
					<xsd:attribute name="ValueIsXMLEntity" type="xsd:boolean" use="optional" default="false"/>
				</xsd:complexType>
			</xsd:element>
		</xsd:choice>
	</xsd:complexType>
	<!--### Read Infobox Response ###-->
	<xsd:element name="InfoboxReadResponse" type="InfoboxReadResponseType"/>
	<xsd:complexType name="InfoboxReadResponseType">
		<xsd:choice>
			<xsd:element name="BinaryFileData" type="ContentBaseType"/>
			<xsd:element name="AssocArrayData" type="InfoboxReadDataAssocArrayType"/>
		</xsd:choice>
	</xsd:complexType>
	<xsd:complexType name="InfoboxReadDataAssocArrayType">
		<xsd:choice>
			<xsd:sequence minOccurs="0" maxOccurs="unbounded">
				<xsd:element name="Key" type="BoxIdentifierType"/>
			</xsd:sequence>
			<xsd:sequence minOccurs="0" maxOccurs="unbounded">
				<xsd:element name="Pair" type="InfoboxAssocArrayPairType"/>
			</xsd:sequence>
		</xsd:choice>
	</xsd:complexType>
	<!--### Update Infobox Request ###-->
	<xsd:element name="InfoboxUpdateRequest" type="InfoboxUpdateRequestType"/>
	<xsd:complexType name="InfoboxUpdateRequestType">
		<xsd:sequence>
			<xsd:element name="InfoboxIdentifier" type="BoxIdentifierType"/>
			<xsd:choice>
				<xsd:element name="BinaryFileParameters" type="ContentBaseType"/>
				<xsd:element name="AssocArrayParameters" type="InfoboxUpdateParamsAssocArrayType"/>
			</xsd:choice>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="InfoboxUpdateParamsAssocArrayType">
		<xsd:choice>
			<xsd:element name="UpdateKey">
				<xsd:complexType>
					<xsd:attribute name="Key" type="xsd:token" use="required"/>
					<xsd:attribute name="NewKey" type="xsd:token" use="required"/>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="UpdateValue" type="InfoboxAssocArrayPairType"/>
			<xsd:element name="DeletePair">
				<xsd:complexType>
					<xsd:attribute name="Key" type="xsd:token" use="required"/>
				</xsd:complexType>
			</xsd:element>
		</xsd:choice>
	</xsd:complexType>
	<!--### Update Infobox Response ###-->
	<xsd:element name="InfoboxUpdateResponse" type="InfoboxUpdateResponseType"/>
	<xsd:complexType name="InfoboxUpdateResponseType"/>
	<!--########## Create Session Certificate ###-->
	<!--### Create Session Certificate Request ###-->
	<xsd:element name="CreateSessionKeyRequest" type="CreateSessionKeyRequestType"/>
	<xsd:complexType name="CreateSessionKeyRequestType">
		<xsd:sequence>
			<xsd:element name="KeyboxIdentifier" type="BoxIdentifierType"/>
			<xsd:element name="Password" type="xsd:string"/>
			<xsd:element name="Minutes" type="xsd:positiveInteger"/>
		</xsd:sequence>
	</xsd:complexType>
	<!--### Create Session Certificate Response ###-->
	<xsd:element name="CreateSessionKeyResponse" type="CreateSessionKeyResponseType"/>
	<xsd:complexType name="CreateSessionKeyResponseType">
		<xsd:sequence>
			<xsd:element name="PKCS12Object" type="xsd:base64Binary"/>
			<xsd:element name="Certificate" type="xsd:base64Binary"/>
		</xsd:sequence>
	</xsd:complexType>
	<!--########## Create Symmetric Key ###-->
	<!--### Create SymmetricKey Request ###-->
	<xsd:element name="CreateSymmetricSecretRequest" type="CreateSymmetricSecretRequestType"/>
	<xsd:complexType name="CreateSymmetricSecretRequestType" mixed="false">
		<xsd:sequence>
			<xsd:element name="KeyboxIdentifier" type="BoxIdentifierType"/>
			<xsd:element ref="dsig:KeyInfo"/>
		</xsd:sequence>
	</xsd:complexType>
	<!--### Create SymmetricKey Response ###-->
	<xsd:element name="CreateSymmetricSecretResponse" type="CreateSymmetricSecretResponseType"/>
	<xsd:complexType name="CreateSymmetricSecretResponseType" mixed="false">
		<xsd:sequence>
			<xsd:element name="SymmetricSecretValue" type="xsd:base64Binary"/>
		</xsd:sequence>
	</xsd:complexType>
	<!--########## Get Properties ###-->
	<!--### Get Properties Request ###-->
	<xsd:element name="GetPropertiesRequest" type="GetPropertiesRequestType"/>
	<xsd:complexType name="GetPropertiesRequestType"/>
	<!--### Get Properties Response ###-->
	<xsd:element name="GetPropertiesResponse" type="GetPropertiesResponseType"/>
	<xsd:complexType name="GetPropertiesResponseType">
		<xsd:sequence>
			<xsd:element name="ViewerMediaType" type="MimeTypeType" maxOccurs="unbounded"/>
			<xsd:element name="XMLSignatureTransform" type="xsd:anyURI" minOccurs="5" maxOccurs="unbounded"/>
			<xsd:element name="KeyboxIdentifier" type="BoxIdentifierType" minOccurs="2" maxOccurs="unbounded"/>
			<xsd:element name="Binding" type="BindingType" minOccurs="2" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="BindingType" mixed="true">
		<xsd:complexContent mixed="true">
			<xsd:extension base="AnyChildrenType">
				<xsd:attribute name="Identifier" type="xsd:token" use="required"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<!--########### Get Token Status ###-->
	<!--### Get Token Status Reqeust ###-->
	<xsd:element name="GetStatusRequest" type="GetStatusRequestType"/>
	<xsd:complexType name="GetStatusRequestType">
		<xsd:sequence minOccurs="0">
			<xsd:element name="TokenStatus" type="TokenStatusType"/>
			<xsd:element name="MaxDelay" type="xsd:nonNegativeInteger"/>
		</xsd:sequence>
	</xsd:complexType>
	<!--### Get Token Status Response ###-->
	<xsd:element name="GetStatusResponse" type="GetStatusResponseType"/>
	<xsd:complexType name="GetStatusResponseType">
		<xsd:sequence>
			<xsd:element name="TokenStatus" type="TokenStatusType"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:simpleType name="TokenStatusType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="ready"/>
			<xsd:enumeration value="removed"/>
		</xsd:restriction>
	</xsd:simpleType>
	<!--########## Error Response ###-->
	<xsd:element name="ErrorResponse" type="ErrorResponseType"/>
	<xsd:complexType name="ErrorResponseType">
		<xsd:sequence>
			<xsd:element name="ErrorCode" type="xsd:integer"/>
			<xsd:element name="Info" type="xsd:string"/>
		</xsd:sequence>
	</xsd:complexType>
	<!--########## Auxiliary Types ###-->
	<xsd:simpleType name="BoxIdentifierType">
		<xsd:restriction base="xsd:token"/>
	</xsd:simpleType>
	<xsd:simpleType name="MimeTypeType">
		<xsd:restriction base="xsd:token"/>
	</xsd:simpleType>
	<xsd:simpleType name="WildCardSearchStringType">
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="[^\*/]*(\*[^\*/]*)?(/[^\*/]*(\*[^\*/]*)?)*"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:complexType name="AnyChildrenType" mixed="true">
		<xsd:sequence minOccurs="0" maxOccurs="unbounded">
			<xsd:any namespace="##any" processContents="skip"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="XMLContentType" mixed="true">
		<xsd:complexContent mixed="true">
			<xsd:extension base="AnyChildrenType">
				<xsd:attribute ref="xml:space" use="optional"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="ContentBaseType">
		<xsd:choice minOccurs="0">
			<xsd:element name="Base64Content" type="xsd:base64Binary"/>
			<xsd:element name="XMLContent" type="XMLContentType"/>
		</xsd:choice>
	</xsd:complexType>
	<xsd:complexType name="ContentOptionalRefType">
		<xsd:complexContent>
			<xsd:extension base="ContentBaseType">
				<xsd:attribute name="Reference" type="xsd:anyURI" use="optional"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="ContentRequiredRefType">
		<xsd:complexContent>
			<xsd:restriction base="ContentOptionalRefType">
				<xsd:choice>
					<xsd:element name="Base64Content" type="xsd:base64Binary"/>
					<xsd:element name="XMLContent" type="XMLContentType"/>
				</xsd:choice>
				<xsd:attribute name="Reference" type="xsd:anyURI" use="required"/>
			</xsd:restriction>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="InfoboxAssocArrayPairType">
		<xsd:complexContent>
			<xsd:extension base="ContentBaseType">
				<xsd:attribute name="Key" type="xsd:string" use="required"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
</xsd:schema>