[KEYS] Lenstra, A.K. and Verheul, E.R., Selecting Cryptographic
Key Sizes. October 1999. Presented at Public Key
Cryptography Conference, Melbourne, Australia, January
2000. http://www.cryptosavvy.com/
[RFC3061] Mealling, M., "A URN Namespace of Object Identifiers",
RFC 3061, February 2001.
[RFC3279] Bassham, L., Polk, W., and R. Housley, "Algorithms and
Identifiers for the Internet X.509 Public Key
Infrastructure Certificate and Certificate Revocation
List (CRL) Profile", RFC 3279, April 2002.
[SEC1] Standards for Efficient Cryptography Group, SEC 1:
Elliptic Curve Cryptography, Version 1.0, September
2000. http://www.secg.org
[SEC2] Standards for Efficient Cryptography Group, SEC 2:
Recommended Elliptic Curve Domain Parameters, Version
1.0, September 2000. http://www.secg.org
[XML] Bray, T., Maler, E., Paoli, J., and Sperberg-McQueen, C.
M., Extensible Markup Language (XML) 1.0 (Second
Edition), W3C Recommendation, October 2000.
http://www.w3.org/TR/2000/REC-xml-20001006
[XML-ns] Bray, T., Hollander, D., and Layman, A., Namespaces in
XML, W3C Recommendation, January 1999.
http://www.w3.org/TR/1999/REC-xml-names-19990114/
7. Acknowledgements
The authors would like to acknowledge the many helpful comments of
Wolfgang Bauer, Donald Eastlake, Tom Gindin, Chris Hawk, Akihiro
Kato, Shiho Moriai, Joseph M. Reagle Jr., and Francois Rousseau.
Appendix A. Aggregate XML Schema
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
targetNamespace="http://www.w3.org/2001/04/xmldsig-more#"
xmlns:ecdsa="http://www.w3.org/2001/04/xmldsig-more#"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
version="0.2">
<!--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>
Appendix B. Aggregate DTD
<!ELEMENT ECDSAKeyValue (DomainParameters?, PublicKey)>
<!ELEMENT PublicKey (X, Y)?>
<!ELEMENT X EMPTY>
<!ATTLIST X Value CDATA #REQUIRED>
<!ELEMENT Y EMPTY>
<!ATTLIST Y Value CDATA #REQUIRED>
<!ELEMENT DomainParameters (ExplicitParams | NamedCurve)>
<!ELEMENT NamedCurve EMPTY>
<!ATTLIST NamedCurve URN CDATA #REQUIRED>
<!ELEMENT ExplicitParams (FieldParams, CurveParams, BasePointParams)>
<!ELEMENT FieldParams (P | (M, K) | (M, K1, K2, K3) | (M, W))>
<!ELEMENT P (#PCDATA)>
<!ELEMENT M (#PCDATA)>
<!ELEMENT W (#PCDATA)>
<!ELEMENT K (#PCDATA)>
<!ELEMENT K1 (#PCDATA)>
<!ELEMENT K2 (#PCDATA)>
<!ELEMENT K3 (#PCDATA)>
<!ELEMENT CurveParams (A, B, Seed?)>
<!ELEMENT A EMPTY>
<!ATTLIST A Value CDATA #REQUIRED>
<!ELEMENT B EMPTY>
<!ATTLIST B Value CDATA #REQUIRED>
<!ELEMENT Seed (#PCDATA)>
<!ELEMENT BasePointParams (BasePoint, Order, Cofactor?)>
<!ELEMENT BasePoint (X, Y)?>
<!ELEMENT Order (#PCDATA)>
<!ELEMENT Cofactor (#PCDATA)>
Authors’ Addresses
Simon Blake-Wilson
BCI
96 Spadina Ave, Unit 606
Toronto, ON, M5V 2J6, Canada
EMail: sblakewilson@bcisse.com
Gregor Karlinger
Federal Staff Office for IT Strategies/Federal Chancellery
Ballhausplatz 2
1014 Wien, Austria
EMail: gregor.karlinger@cio.gv.at
Tetsutaro Kobayashi
NTT Laboratories
1-1 Hikarinooka, Yokosuka, 239-0847, Japan
EMail: kotetsu@isl.ntt.co.jp
Yongge Wang
University of North Carolina at Charlotte
9201 University City Blvd
Charlotte, NC 28223, USA
EMail: yonwang@uncc.edu
Full Copyright Statement
Copyright (C) The Internet Society (2005).
This document is subject to the rights, licenses and restrictions
contained in BCP 78, and except as set forth therein, the authors
retain all their rights.
This document and the information contained herein are provided on an
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Intellectual Property
The IETF takes no position regarding the validity or scope of any
Intellectual Property Rights or other rights that might be claimed to
pertain to the implementation or use of the technology described in
this document or the extent to which any license under such rights
might or might not be available; nor does it represent that it has
made any independent effort to identify any such rights. Information
on the procedures with respect to rights in RFC documents can be
found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat and any
assurances of licenses to be made available, or the result of an
attempt made to obtain a general license or permission for the use of
such proprietary rights by implementers or users of this
specification can be obtained from the IETF on-line IPR repository at
http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary
rights that may cover technology that may be required to implement
this standard. Please address the information to the IETF at ietf-
ipr@ietf.org.
Acknowledgement
Funding for the RFC Editor function is currently provided by the
Internet Society.