<?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>