<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.w3.org/2001/04/xmldsig-more#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ecdsa="http://www.w3.org/2001/04/xmldsig-more#" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0.3">
	<!--ECDSA key value root element-->
	<xs:element name="ECDSAKeyValue" type="ecdsa:ECDSAKeyValueType"/>
	<xs:complexType name="ECDSAKeyValueType">
		<xs:sequence>
			<xs:element name="DomainParameters" type="ecdsa:DomainParamsType" minOccurs="0"/>
			<xs:element name="PublicKey" type="ecdsa:ECPointType"/>
		</xs:sequence>
	</xs:complexType>
	<!--EC domain parameters-->
	<xs:complexType name="DomainParamsType">
		<xs:choice>
			<xs:element name="ExplicitParams" type="ecdsa:ExplicitParamsType"/>
			<xs:element name="NamedCurve">
				<xs:complexType>
					<xs:attribute name="URN" type="xs:anyURI" use="required"/>
				</xs:complexType>
			</xs:element>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="FieldParamsType" abstract="true"/>
	<xs:complexType name="PrimeFieldParamsType">
		<xs:complexContent>
			<xs:extension base="ecdsa:FieldParamsType">
				<xs:sequence>
					<xs:element name="P" type="xs:positiveInteger"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="CharTwoFieldParamsType" abstract="true">
		<xs:complexContent>
			<xs:extension base="ecdsa:FieldParamsType">
				<xs:sequence>
					<xs:element name="M" type="xs:positiveInteger"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="OddCharExtensionFieldParamsType">
		<xs:complexContent>
			<xs:extension base="ecdsa:FieldParamsType">
				<xs:sequence>
					<xs:element name="M" type="xs:positiveInteger"/>
					<xs:element name="W" type="xs:positiveInteger"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="TnBFieldParamsType">
		<xs:complexContent>
			<xs:extension base="ecdsa:CharTwoFieldParamsType">
				<xs:sequence>
					<xs:element name="K" type="xs:positiveInteger"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="PnBFieldParamsType">
		<xs:complexContent>
			<xs:extension base="ecdsa:CharTwoFieldParamsType">
				<xs:sequence>
					<xs:element name="K1" type="xs:positiveInteger"/>
					<xs:element name="K2" type="xs:positiveInteger"/>
					<xs:element name="K3" type="xs:positiveInteger"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="ExplicitParamsType">
		<xs:sequence>
			<xs:element name="FieldParams" type="ecdsa:FieldParamsType"/>
			<xs:element name="CurveParams" type="ecdsa:CurveParamsType"/>
			<xs:element name="BasePointParams" type="ecdsa:BasePointParamsType"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="CurveParamsType">
		<xs:sequence>
			<xs:element name="A" type="ecdsa:FieldElemType"/>
			<xs:element name="B" type="ecdsa:FieldElemType"/>
			<xs:element name="Seed" type="xs:hexBinary" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="BasePointParamsType">
		<xs:sequence>
			<xs:element name="BasePoint" type="ecdsa:ECPointType"/>
			<xs:element name="Order" type="xs:positiveInteger"/>
			<xs:element name="Cofactor" type="xs:positiveInteger" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<!--EC point-->
	<xs:complexType name="ECPointType">
		<xs:sequence minOccurs="0">
			<xs:element name="X" type="ecdsa:FieldElemType"/>
			<xs:element name="Y" type="ecdsa:FieldElemType"/>
		</xs:sequence>
	</xs:complexType>
	<!--Field element-->
	<xs:complexType name="FieldElemType" abstract="true"/>
	<xs:complexType name="PrimeFieldElemType">
		<xs:complexContent>
			<xs:extension base="ecdsa:FieldElemType">
				<xs:attribute name="Value" type="xs:nonNegativeInteger" use="required"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="CharTwoFieldElemType">
		<xs:complexContent>
			<xs:extension base="ecdsa:FieldElemType">
				<xs:attribute name="Value" type="xs:hexBinary" use="required"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="OddCharExtensionFieldElemType">
		<xs:complexContent>
			<xs:extension base="ecdsa:FieldElemType">
				<xs:attribute name="Value" type="xs:nonNegativeInteger" use="required"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
</xs:schema>