[x500standard] ASN.1 to support ECDSA

  • From: "Erik Andersen" <era@xxxxxxx>
  • To: "Directory list" <x500standard@xxxxxxxxxxxxx>, "SG17-Q11" <t13sg17q11@xxxxxxxxxxxxx>
  • Date: Fri, 28 Aug 2015 17:01:45 +0200

The X.509 defines the AlgorithmIdentifier as



AlgorithmIdentifier{ALGORITHM:SupportedAlgorithms} ::= SEQUENCE {

algorithm ALGORITHM.&id({SupportedAlgorithms}),

parameters ALGORITHM.&Type({SupportedAlgorithms}{@algorithm}) OPTIONAL,

... }



where



ALGORITHM ::= CLASS {

&Type OPTIONAL,

&id OBJECT IDENTIFIER UNIQUE }

WITH SYNTAX {

[PARMS &Type]

IDENTIFIED BY &id }



As to RFC 5480 the parameter for ECDSA is an object identifier for the curve
to be used.



To get a more formal specification I tried to define:



CURVE ::= CLASS {

&id OBJECT IDENTIFIER UNIQUE }

WITH SYNTAX {

IDENTIFIED BY &id }



SupportedCurves CURVE ::= {...} -- to be filled by referencing specification



The ECDSA public key algorithm may then be written as:



ecPublicKey ALGORITHM ::= { -- IETF RFC 5480

PARMS CURVE.&id ({SupportedCurves})

IDENTIFIED BY id-ecPublicKey }



It is then possible in a referencing specification to formally specify in
the ASN.1 what curve(s) may be used and thereby make optimal use of tools..



Most likely, the ASN.1 guys (Jean-Paul and Paul) can find a more elegant way
of doing the same thing or at least check whether the proposed ASN.1 is
correct (it compiles).



Your comments will be highly appreciated.



Erik





Other related posts: