<?xml version="1.0" encoding="UTF-8"?> <!-- MOA SP/SS 1.3 Schema --> <xsd:schema targetNamespace="http://reference.e-government.gv.at/namespace/moa/20020822#" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.2" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#"> <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 XML Signature ###--> <!--### Create XML Signature Request ###--> <xsd:element name="CreateXMLSignatureRequest"> <xsd:complexType> <xsd:complexContent> <xsd:extension base="CreateXMLSignatureRequestType"/> </xsd:complexContent> </xsd:complexType> </xsd:element> <xsd:complexType name="CreateXMLSignatureRequestType"> <xsd:sequence> <xsd:element name="KeyIdentifier" type="KeyIdentifierType"/> <xsd:element name="SingleSignatureInfo" maxOccurs="unbounded"> <xsd:annotation> <xsd:documentation>Ermöglichung der Stapelsignatur durch wiederholte Angabe dieses Elements</xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:sequence> <xsd:element name="DataObjectInfo" maxOccurs="unbounded"> <xsd:complexType> <xsd:complexContent> <xsd:extension base="DataObjectInfoType"> <xsd:attribute name="ChildOfManifest" type="xsd:boolean" use="optional" default="false"/> </xsd:extension> </xsd:complexContent> </xsd:complexType> </xsd:element> <xsd:element name="CreateSignatureInfo" minOccurs="0"> <xsd:complexType> <xsd:sequence> <xsd:element name="CreateSignatureEnvironment" type="ContentOptionalRefType"/> <xsd:choice> <xsd:annotation> <xsd:documentation>Auswahl: Entweder explizite Angabe des Signaturorts sowie ggf. sinnvoller Supplements im Zshg. mit der Signaturumgebung, oder Verweis auf ein benanntes Profil</xsd:documentation> </xsd:annotation> <xsd:element ref="CreateSignatureEnvironmentProfile"/> <xsd:element name="CreateSignatureEnvironmentProfileID" type="ProfileIdentifierType"/> </xsd:choice> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> <xsd:attribute name="SecurityLayerConformity" type="xsd:boolean" use="optional" default="true"/> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> <!--### Create XML Signature Response ###--> <xsd:complexType name="CreateXMLSignatureResponseType"> <xsd:choice maxOccurs="unbounded"> <xsd:annotation> <xsd:documentation>Kardinalität 1..oo erlaubt die Antwort auf eine Stapelsignatur-Anfrage</xsd:documentation> </xsd:annotation> <xsd:element name="SignatureEnvironment"> <xsd:annotation> <xsd:documentation>Resultat, falls die Signaturerstellung erfolgreich war</xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:sequence> <xsd:any namespace="##any" processContents="lax"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element ref="ErrorResponse"/> </xsd:choice> </xsd:complexType> <xsd:element name="CreateXMLSignatureResponse" type="CreateXMLSignatureResponseType"/> <!--########## Verify CMS Signature ###--> <!--### Verifiy CMS Signature Request ###--> <xsd:element name="VerifyCMSSignatureRequest"> <xsd:complexType> <xsd:complexContent> <xsd:extension base="VerifyCMSSignatureRequestType"> <xsd:attribute name="Signatories" type="SignatoriesType" use="optional" default="1"/> </xsd:extension> </xsd:complexContent> </xsd:complexType> </xsd:element> <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:element name="TrustProfileID" type="xsd:token"> <xsd:annotation> <xsd:documentation>mit diesem Profil wird eine Menge von vertrauenswürdigen Wurzelzertifikaten spezifiziert</xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> </xsd:complexType> <!--### Verify CMS Signature Response ###--> <xsd:element name="VerifyCMSSignatureResponse" type="VerifyCMSSignatureResponseType"/> <xsd:complexType name="VerifyCMSSignatureResponseType"> <xsd:sequence maxOccurs="unbounded"> <xsd:element name="SignerInfo" type="dsig:KeyInfoType"> <xsd:annotation> <xsd:documentation>only ds:X509Data and RetrievalMethod is supported; QualifiedCertificate is included as X509Data/any;publicAuthority is included as X509Data/any</xsd:documentation> </xsd:annotation> </xsd:element> <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="VerifySignatureInfo"> <xsd:complexType> <xsd:sequence> <xsd:element name="VerifySignatureEnvironment" type="ContentOptionalRefType"/> <xsd:element name="VerifySignatureLocation" type="xsd:token"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:choice minOccurs="0" maxOccurs="unbounded"> <xsd:element ref="SupplementProfile"/> <xsd:element name="SupplementProfileID" type="xsd:string"/> </xsd:choice> <xsd:element name="SignatureManifestCheckParams" minOccurs="0"> <xsd:complexType> <xsd:sequence> <xsd:element name="ReferenceInfo" type="VerifyTransformsDataType" maxOccurs="unbounded"> <xsd:annotation> <xsd:documentation>Pro dsig:Reference-Element in der zu überprüfenden XML-Signatur muss hier ein ReferenceInfo-Element erscheinen. Die Reihenfolge der einzelnen ReferenceInfo Elemente entspricht jener der dsig:Reference Elemente in der XML-Signatur.</xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> <xsd:attribute name="ReturnReferenceInputData" type="xsd:boolean" use="optional" default="true"/> </xsd:complexType> </xsd:element> <xsd:element name="ReturnHashInputData" minOccurs="0"/> <xsd:element name="TrustProfileID" type="xsd:token"> <xsd:annotation> <xsd:documentation>mit diesem Profil wird eine Menge von vertrauenswürdigen Wurzelzertifikaten spezifiziert</xsd:documentation> </xsd:annotation> </xsd:element> </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:annotation> <xsd:documentation>only ds:X509Data and ds:RetrievalMethod is supported; QualifiedCertificate is included as X509Data/any; PublicAuthority is included as X509Data/any</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="HashInputData" type="InputDataType" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="ReferenceInputData" type="InputDataType" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="SignatureCheck" type="ReferencesCheckResultType"/> <xsd:element name="SignatureManifestCheck" type="ReferencesCheckResultType" minOccurs="0"/> <xsd:element name="XMLDSIGManifestCheck" type="ManifestRefsCheckResultType" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="CertificateCheck" type="CheckResultType"/> </xsd:sequence> </xsd:complexType> <xsd:simpleType name="ProfileIdentifierType"> <xsd:restriction base="xsd:token"/> </xsd:simpleType> <xsd:complexType name="InputDataType"> <xsd:complexContent> <xsd:extension base="ContentExLocRefBaseType"> <xsd:attribute name="PartOf" use="optional" default="SignedInfo"> <xsd:simpleType> <xsd:restriction base="xsd:token"> <xsd:enumeration value="SignedInfo"/> <xsd:enumeration value="XMLDSIGManifest"/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> <xsd:attribute name="ReferringSigReference" type="xsd:nonNegativeInteger" use="optional"/> </xsd:extension> </xsd:complexContent> </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="FinalDataMetaInfoType"> <xsd:complexContent> <xsd:extension base="MetaInfoType"> <xsd:sequence> <xsd:element name="Type" type="xsd:anyURI" minOccurs="0"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="DataObjectInfoType"> <xsd:sequence> <xsd:element name="DataObject"> <xsd:complexType> <xsd:complexContent> <xsd:extension base="ContentOptionalRefType"/> </xsd:complexContent> </xsd:complexType> </xsd:element> <xsd:choice> <xsd:annotation> <xsd:documentation>Auswahl: Entweder explizite Angabe EINER Transformationskette inklusive ggf. sinnvoller Supplements oder Verweis auf ein benanntes Profil</xsd:documentation> </xsd:annotation> <xsd:element ref="CreateTransformsInfoProfile"/> <xsd:element name="CreateTransformsInfoProfileID" type="ProfileIdentifierType"/> </xsd:choice> </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="FinalDataMetaInfoType"/> </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> <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> <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> <xsd:complexType name="ReferencesCheckResultType"> <xsd:complexContent> <xsd:restriction base="CheckResultType"> <xsd:sequence> <xsd:element name="Code" type="xsd:nonNegativeInteger"/> <xsd:element name="Info" type="ReferencesCheckResultInfoType" minOccurs="0"/> </xsd:sequence> </xsd:restriction> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="ReferencesCheckResultInfoType" mixed="true"> <xsd:complexContent mixed="true"> <xsd:restriction base="AnyChildrenType"> <xsd:sequence> <xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="FailedReference" type="xsd:positiveInteger" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:restriction> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="ManifestRefsCheckResultType"> <xsd:complexContent> <xsd:restriction base="CheckResultType"> <xsd:sequence> <xsd:element name="Code" type="xsd:nonNegativeInteger"/> <xsd:element name="Info" type="ManifestRefsCheckResultInfoType"/> </xsd:sequence> </xsd:restriction> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="ManifestRefsCheckResultInfoType" mixed="true"> <xsd:complexContent mixed="true"> <xsd:restriction base="AnyChildrenType"> <xsd:sequence> <xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="FailedReference" type="xsd:positiveInteger" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="ReferringSigReference" type="xsd:positiveInteger"/> </xsd:sequence> </xsd:restriction> </xsd:complexContent> </xsd:complexType> <!--########## Error Response ###--> <xsd:element name="ErrorResponse" type="ErrorResponseType"> <xsd:annotation> <xsd:documentation>Resultat, falls die Signaturerstellung gescheitert ist</xsd:documentation> </xsd:annotation> </xsd:element> <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="KeyIdentifierType"> <xsd:restriction base="xsd:string"/> </xsd:simpleType> <xsd:simpleType name="KeyStorageType"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="Software"/> <xsd:enumeration value="Hardware"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="MimeTypeType"> <xsd:restriction base="xsd:token"/> </xsd:simpleType> <xsd:complexType name="AnyChildrenType" mixed="true"> <xsd:sequence> <xsd:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> </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:element name="LocRefContent" type="xsd:anyURI"/> </xsd:choice> </xsd:complexType> <xsd:complexType name="ContentExLocRefBaseType"> <xsd:complexContent> <xsd:restriction base="ContentBaseType"> <xsd:choice minOccurs="0"> <xsd:element name="Base64Content" type="xsd:base64Binary"/> <xsd:element name="XMLContent" type="XMLContentType"/> </xsd:choice> </xsd:restriction> </xsd:complexContent> </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 minOccurs="0"> <xsd:element name="Base64Content" type="xsd:base64Binary"/> <xsd:element name="XMLContent" type="XMLContentType"/> <xsd:element name="LocRefContent" type="xsd:anyURI"/> </xsd:choice> <xsd:attribute name="Reference" type="xsd:anyURI" use="required"/> </xsd:restriction> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="VerifyTransformsDataType"> <xsd:choice maxOccurs="unbounded"> <xsd:annotation> <xsd:documentation>Ein oder mehrere Transformationswege können von der Applikation an MOA mitgeteilt werden. Die zu prüfende Signatur hat zumindest einem dieser Transformationswege zu entsprechen. Die Angabe kann explizit oder als Profilbezeichner erfolgen.</xsd:documentation> </xsd:annotation> <xsd:element ref="VerifyTransformsInfoProfile"/> <xsd:element name="VerifyTransformsInfoProfileID" type="xsd:string"> <xsd:annotation> <xsd:documentation>Profilbezeichner für einen Transformationsweg</xsd:documentation> </xsd:annotation> </xsd:element> </xsd:choice> </xsd:complexType> <xsd:element name="QualifiedCertificate"/> <xsd:element name="PublicAuthority" type="PublicAuthorityType"/> <xsd:complexType name="PublicAuthorityType"> <xsd:sequence> <xsd:element name="Code" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:simpleType name="SignatoriesType"> <xsd:union memberTypes="AllSignatoriesType"> <xsd:simpleType> <xsd:list itemType="xsd:positiveInteger"/> </xsd:simpleType> </xsd:union> </xsd:simpleType> <xsd:simpleType name="AllSignatoriesType"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="all"/> </xsd:restriction> </xsd:simpleType> <xsd:complexType name="CreateSignatureLocationType"> <xsd:simpleContent> <xsd:extension base="xsd:token"> <xsd:attribute name="Index" type="xsd:integer" use="required"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> <xsd:complexType name="TransformParameterType"> <xsd:choice minOccurs="0"> <xsd:annotation> <xsd:documentation>Die Angabe des Transformationsparameters (explizit oder als Hashwert) kann unterlassen werden, wenn die Applikation von der Unveränderlichkeit des Inhalts der in "Transformationsparamter", Attribut "URI" angegebenen URI ausgehen kann.</xsd:documentation> </xsd:annotation> <xsd:element name="Base64Content" type="xsd:base64Binary"> <xsd:annotation> <xsd:documentation>Der Transformationsparameter explizit angegeben.</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="Hash"> <xsd:annotation> <xsd:documentation>Der Hashwert des Transformationsparameters.</xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:sequence> <xsd:element ref="dsig:DigestMethod"/> <xsd:element ref="dsig:DigestValue"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:choice> <xsd:attribute name="URI" type="xsd:anyURI" use="required"/> </xsd:complexType> <xsd:element name="CreateSignatureEnvironmentProfile"> <xsd:complexType> <xsd:sequence> <xsd:element name="CreateSignatureLocation" type="CreateSignatureLocationType"/> <xsd:element name="Supplement" type="XMLDataObjectAssociationType" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="VerifyTransformsInfoProfile"> <xsd:annotation> <xsd:documentation>Explizite Angabe des Transformationswegs</xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:sequence> <xsd:element ref="dsig:Transforms" minOccurs="0"/> <xsd:element name="TransformParameter" type="TransformParameterType" minOccurs="0" maxOccurs="unbounded"> <xsd:annotation> <xsd:documentation>Alle impliziten Transformationsparameter, die zum Durchlaufen der oben angeführten Transformationskette bekannt sein müssen, müssen hier angeführt werden. Das Attribut "URI" bezeichnet den Transformationsparameter in exakt jener Weise, wie er in der zu überprüfenden Signatur gebraucht wird.</xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="Supplement" type="XMLDataObjectAssociationType"/> <xsd:element name="SupplementProfile" type="XMLDataObjectAssociationType"/> <xsd:element name="CreateTransformsInfoProfile"> <xsd:complexType> <xsd:sequence> <xsd:element name="CreateTransformsInfo" type="TransformsInfoType"/> <xsd:element ref="Supplement" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema>