   PKIX1Algorithms88 { iso(1) identified-organization(3) dod(6)
   internet(1) security(5) mechanisms(5) pkix(7) id-mod(0)
   id-mod-pkix1-algorithms(17) }

   DEFINITIONS EXPLICIT TAGS ::= BEGIN

   -- EXPORTS All;

   -- IMPORTS NONE;

   --
   --   One-way Hash Functions
   -- md2, md5, id-sha1 see PKCS-1

   --
   --   DSA Keys and Signatures
   --

   -- OID for DSA public key

   id-dsa OBJECT IDENTIFIER ::= {
        iso(1) member-body(2) us(840) x9-57(10040) x9algorithm(4) 1 }

   -- encoding for DSA public key

   DSAPublicKey ::= INTEGER  -- public key, y

   Dss-Parms  ::=  SEQUENCE  {
      p             INTEGER,
      q             INTEGER,
      g             INTEGER  }

   -- OID for DSA signature generated with SHA-1 hash

   id-dsa-with-sha1 OBJECT IDENTIFIER ::=  {
        iso(1) member-body(2) us(840) x9-57 (10040) x9algorithm(4) 3 }

   id-dsaWithSHA1 OBJECT IDENTIFIER ::= {
	iso(1) identified-organization(3) oiw(14) secsig(3) algorithms(2) dsaWithSHA1(27)
  }
   -- encoding for DSA signature generated with SHA-1 hash

   Dss-Sig-Value  ::=  SEQUENCE  {
      r       INTEGER,
      s       INTEGER  }

   --
   --   RSA Keys and Signatures, see PKCS-1 
   --
   
   --
   --   Diffie-Hellman Keys
   --

   dhpublicnumber OBJECT IDENTIFIER ::= {
        iso(1) member-body(2) us(840) ansi-x942(10046)
        number-type(2) 1 }

   -- encoding for DSA public key

   DHPublicKey ::= INTEGER  -- public key, y = g^x mod p

   DomainParameters ::= SEQUENCE {
      p       INTEGER,           -- odd prime, p=jq +1
      g       INTEGER,           -- generator, g
      q       INTEGER,           -- factor of p-1
      j       INTEGER OPTIONAL,  -- subgroup factor, j>= 2
      validationParms  ValidationParms OPTIONAL }

   ValidationParms ::= SEQUENCE {
      seed             BIT STRING,
      pgenCounter      INTEGER }

   --
   --   KEA Keys
   --

   id-keyExchangeAlgorithm  OBJECT IDENTIFIER  ::=
        { 2 16 840 1 101 2 1 1 22 }

   KEA-Parms-Id ::= OCTET STRING

   --
   --   Elliptic Curve Keys, Signatures, and Curves
   --

   ansi-X9-62 OBJECT IDENTIFIER ::= {
        iso(1) member-body(2) us(840) 10045 }

   FieldID ::= SEQUENCE {                    -- Finite field
      fieldType   OBJECT IDENTIFIER,
      parameters  ANY DEFINED BY fieldType }

   -- Arc for ECDSA signature OIDS

   id-ecSigType OBJECT IDENTIFIER ::= { ansi-X9-62 signatures(4) }

   -- OID for ECDSA signatures with SHA-1

   ecdsa-with-SHA1 OBJECT IDENTIFIER ::= { id-ecSigType 1 }
   ecdsa-with-SHA2 OBJECT IDENTIFIER ::= { id-ecSigType 3 }
   ecdsa-with-SHA224 OBJECT IDENTIFIER ::= { ecdsa-with-SHA2 1 }
   ecdsa-with-SHA256 OBJECT IDENTIFIER ::= { ecdsa-with-SHA2 2 }
   ecdsa-with-SHA384 OBJECT IDENTIFIER ::= { ecdsa-with-SHA2 3 }
   ecdsa-with-SHA512 OBJECT IDENTIFIER ::= { ecdsa-with-SHA2 4 }

   -- OID for an elliptic curve signature
   -- format for the value of an ECDSA signature value

   ECDSA-Sig-Value ::= SEQUENCE {
      r     INTEGER,
      s     INTEGER }

   -- recognized field type OIDs are defined in the following arc

   id-fieldType OBJECT IDENTIFIER ::= { ansi-X9-62 fieldType(1) }

   -- where fieldType is prime-field, the parameters are of type Prime-p

   prime-field OBJECT IDENTIFIER ::= { id-fieldType 1 }

   Prime-p ::= INTEGER -- Finite field F(p), where p is an odd prime

   -- where fieldType is characteristic-two-field, the parameters are
   -- of type Characteristic-two

   characteristic-two-field OBJECT IDENTIFIER ::= { id-fieldType 2 }

   Characteristic-two ::= SEQUENCE {
      m           INTEGER,                   -- Field size 2^m
      basis       OBJECT IDENTIFIER,
      parameters  ANY DEFINED BY basis }

   -- recognized basis type OIDs are defined in the following arc

   id-characteristic-two-basis OBJECT IDENTIFIER ::= {
        characteristic-two-field basisType(3) }

   -- gnbasis is identified by OID gnBasis and indicates
   -- parameters are NULL

   gnBasis OBJECT IDENTIFIER ::= { id-characteristic-two-basis 1 }

   -- parameters for this basis are NULL

   -- trinomial basis is identified by OID tpBasis and indicates
   -- parameters of type Pentanomial

   tpBasis OBJECT IDENTIFIER ::= { id-characteristic-two-basis 2 }

   -- Trinomial basis representation of F2^m
   -- Integer k for reduction polynomial xm + xk + 1

   Trinomial ::= INTEGER

   -- for pentanomial basis is identified by OID ppBasis and indicates
   -- parameters of type Pentanomial

   ppBasis OBJECT IDENTIFIER ::= { id-characteristic-two-basis 3 }

   -- Pentanomial basis representation of F2^m
   -- reduction polynomial integers k1, k2, k3
   -- f(x) = x**m + x**k3 + x**k2 + x**k1 + 1

   Pentanomial ::= SEQUENCE {
      k1  INTEGER,
      k2  INTEGER,
      k3  INTEGER }

   -- The object identifiers gnBasis, tpBasis and ppBasis name
   -- three kinds of basis for characteristic-two finite fields

   FieldElement ::= OCTET STRING             -- Finite field element

   ECPoint  ::= OCTET STRING                 -- Elliptic curve point

   -- Elliptic Curve parameters may be specified explicitly,
   -- specified implicitly through a "named curve", or
   -- inherited from the CA

   EcpkParameters ::= CHOICE {
      ecParameters  ECParameters,
      namedCurve    OBJECT IDENTIFIER,
      implicitlyCA  NULL }

   ECParameters  ::= SEQUENCE {         -- Elliptic curve parameters
      version   ECPVer,
      fieldID   FieldID,
      curve     Curve,
      base      ECPoint,                -- Base point G
      order     INTEGER,                -- Order n of the base point
      cofactor  INTEGER  OPTIONAL }     -- The integer h = #E(Fq)/n

   ECPVer ::= INTEGER {ecpVer1(1)}

   Curve  ::= SEQUENCE {
      a     FieldElement,            -- Elliptic curve coefficient a
      b     FieldElement,            -- Elliptic curve coefficient b
      seed  BIT STRING  OPTIONAL }

   id-publicKeyType OBJECT IDENTIFIER  ::= { ansi-X9-62 keyType(2) }

   id-ecPublicKey OBJECT IDENTIFIER ::= { id-publicKeyType 1 }

   -- Named Elliptic Curves in ANSI X9.62.

   --   ellipticCurve OBJECT IDENTIFIER ::= { ansi-X9-62 curves(3) }

   --   c-TwoCurve OBJECT IDENTIFIER ::= {
   --        ansi-ellipticCurve characteristicTwo(0) }

   --   c2pnb163v1  OBJECT IDENTIFIER  ::=  { c-TwoCurve  1 }
   --   c2pnb163v2  OBJECT IDENTIFIER  ::=  { c-TwoCurve  2 }
   --   c2pnb163v3  OBJECT IDENTIFIER  ::=  { c-TwoCurve  3 }
   --   c2pnb176w1  OBJECT IDENTIFIER  ::=  { c-TwoCurve  4 }
   --   c2tnb191v1  OBJECT IDENTIFIER  ::=  { c-TwoCurve  5 }
   --   c2tnb191v2  OBJECT IDENTIFIER  ::=  { c-TwoCurve  6 }
   --   c2tnb191v3  OBJECT IDENTIFIER  ::=  { c-TwoCurve  7 }
   --   c2onb191v4  OBJECT IDENTIFIER  ::=  { c-TwoCurve  8 }
   --   c2onb191v5  OBJECT IDENTIFIER  ::=  { c-TwoCurve  9 }
   --   c2pnb208w1  OBJECT IDENTIFIER  ::=  { c-TwoCurve 10 }
   --   c2tnb239v1  OBJECT IDENTIFIER  ::=  { c-TwoCurve 11 }
   --   c2tnb239v2  OBJECT IDENTIFIER  ::=  { c-TwoCurve 12 }
   --   c2tnb239v3  OBJECT IDENTIFIER  ::=  { c-TwoCurve 13 }
   --   c2onb239v4  OBJECT IDENTIFIER  ::=  { c-TwoCurve 14 }
   --   c2onb239v5  OBJECT IDENTIFIER  ::=  { c-TwoCurve 15 }
   --   c2pnb272w1  OBJECT IDENTIFIER  ::=  { c-TwoCurve 16 }
   --   c2pnb304w1  OBJECT IDENTIFIER  ::=  { c-TwoCurve 17 }
   --   c2tnb359v1  OBJECT IDENTIFIER  ::=  { c-TwoCurve 18 }
   --   c2pnb368w1  OBJECT IDENTIFIER  ::=  { c-TwoCurve 19 }
   --   c2tnb431r1  OBJECT IDENTIFIER  ::=  { c-TwoCurve 20 }

   --   primeCurve OBJECT IDENTIFIER ::= { ansi-ellipticCurve prime(1) }

   --   prime192v1  OBJECT IDENTIFIER  ::=  { primeCurve  1 }
   --   prime192v2  OBJECT IDENTIFIER  ::=  { primeCurve  2 }
   --   prime192v3  OBJECT IDENTIFIER  ::=  { primeCurve  3 }
   --   prime239v1  OBJECT IDENTIFIER  ::=  { primeCurve  4 }
   --   prime239v2  OBJECT IDENTIFIER  ::=  { primeCurve  5 }
   --   prime239v3  OBJECT IDENTIFIER  ::=  { primeCurve  6 }
   --   prime256v1  OBJECT IDENTIFIER  ::=  { primeCurve  7 }

   certicom-arc OBJECT IDENTIFIER ::= {
        iso(1) identified-organization(3) certicom(132)
   }

   ellipticCurve OBJECT IDENTIFIER ::= {
        iso(1) identified-organization(3) certicom(132) curve(0)
   }

   secp192r1 OBJECT IDENTIFIER ::= { ansi-X9-62 curves(3) prime(1) 1 }
   secp256r1 OBJECT IDENTIFIER ::= { ansi-X9-62 curves(3) prime(1) 7 }

   sect163k1 OBJECT IDENTIFIER ::= { ellipticCurve 1 }
   sect163r1 OBJECT IDENTIFIER ::= { ellipticCurve 2 }
   sect239k1 OBJECT IDENTIFIER ::= { ellipticCurve 3 }
   sect113r1 OBJECT IDENTIFIER ::= { ellipticCurve 4 }
   sect113r2 OBJECT IDENTIFIER ::= { ellipticCurve 5 }
   secp112r1 OBJECT IDENTIFIER ::= { ellipticCurve 6 }
   secp112r2 OBJECT IDENTIFIER ::= { ellipticCurve 7 }
   secp160r1 OBJECT IDENTIFIER ::= { ellipticCurve 8 }
   secp160k1 OBJECT IDENTIFIER ::= { ellipticCurve 9 }
   secp256k1 OBJECT IDENTIFIER ::= { ellipticCurve 10 }
   sect163r2 OBJECT IDENTIFIER ::= { ellipticCurve 15 }
   sect283k1 OBJECT IDENTIFIER ::= { ellipticCurve 16 }
   sect283r1 OBJECT IDENTIFIER ::= { ellipticCurve 17 }
   sect131r1 OBJECT IDENTIFIER ::= { ellipticCurve 22 }
   sect131r2 OBJECT IDENTIFIER ::= { ellipticCurve 23 }
   sect193r1 OBJECT IDENTIFIER ::= { ellipticCurve 24 }
   sect193r2 OBJECT IDENTIFIER ::= { ellipticCurve 25 }
   sect233k1 OBJECT IDENTIFIER ::= { ellipticCurve 26 }
   sect233r1 OBJECT IDENTIFIER ::= { ellipticCurve 27 }
   secp128r1 OBJECT IDENTIFIER ::= { ellipticCurve 28 }
   secp128r2 OBJECT IDENTIFIER ::= { ellipticCurve 29 }
   secp160r2 OBJECT IDENTIFIER ::= { ellipticCurve 30 }
   secp192k1 OBJECT IDENTIFIER ::= { ellipticCurve 31 }
   secp224k1 OBJECT IDENTIFIER ::= { ellipticCurve 32 }
   secp224r1 OBJECT IDENTIFIER ::= { ellipticCurve 33 }
   secp384r1 OBJECT IDENTIFIER ::= { ellipticCurve 34 }
   secp521r1 OBJECT IDENTIFIER ::= { ellipticCurve 35 }
   sect409k1 OBJECT IDENTIFIER ::= { ellipticCurve 36 }
   sect409r1 OBJECT IDENTIFIER ::= { ellipticCurve 37 }
   sect571k1 OBJECT IDENTIFIER ::= { ellipticCurve 38 }
   sect571r1 OBJECT IDENTIFIER ::= { ellipticCurve 39 }

   
   id-edwards-curve-algs OBJECT IDENTIFIER ::= { 1 3 101 }

   id-X25519        OBJECT IDENTIFIER ::= { id-edwards-curve-algs 110 }
   id-X448          OBJECT IDENTIFIER ::= { id-edwards-curve-algs 111 }
   id-Ed25519       OBJECT IDENTIFIER ::= { id-edwards-curve-algs 112 }
   id-Ed448         OBJECT IDENTIFIER ::= { id-edwards-curve-algs 113 }

   END
