1
0
mirror of https://github.com/ARMmbed/mbedtls.git synced 2025-05-19 06:58:24 +08:00
Jethro Beekman d2df936e67 Fix parsing of PKCS#8 encoded Elliptic Curve keys.
The relevant ASN.1 definitions for a PKCS#8 encoded Elliptic Curve key are:

PrivateKeyInfo ::= SEQUENCE {
  version                   Version,
  privateKeyAlgorithm       PrivateKeyAlgorithmIdentifier,
  privateKey                PrivateKey,
  attributes           [0]  IMPLICIT Attributes OPTIONAL
}

AlgorithmIdentifier  ::=  SEQUENCE  {
  algorithm   OBJECT IDENTIFIER,
  parameters  ANY DEFINED BY algorithm OPTIONAL
}

ECParameters ::= CHOICE {
  namedCurve         OBJECT IDENTIFIER
  -- implicitCurve   NULL
  -- specifiedCurve  SpecifiedECDomain
}

ECPrivateKey ::= SEQUENCE {
  version        INTEGER { ecPrivkeyVer1(1) } (ecPrivkeyVer1),
  privateKey     OCTET STRING,
  parameters [0] ECParameters {{ NamedCurve }} OPTIONAL,
  publicKey  [1] BIT STRING OPTIONAL
}

Because of the two optional fields, there are 4 possible variants that need to
be parsed: no optional fields, only parameters, only public key, and both
optional fields. Previously mbedTLS was unable to parse keys with "only
parameters". Also, only "only public key" was tested. There was a test for "no
optional fields", but it was labelled incorrectly as SEC.1 and not run because
of a great renaming mixup.
2018-03-22 18:01:18 -07:00
..
2017-07-27 21:44:33 +01:00
2018-03-16 16:25:12 +00:00
2017-09-06 17:51:14 +03:00
2017-10-10 19:04:27 +03:00
2018-02-02 18:09:45 +00:00
2018-02-22 10:24:30 +00:00
2018-02-22 10:24:30 +00:00
2018-02-22 10:24:30 +00:00
2015-09-04 14:21:07 +02:00
2015-09-04 14:21:07 +02:00
2017-10-29 17:53:52 +02:00
2017-07-27 21:44:33 +01:00
2018-01-29 10:24:50 +01:00
2015-09-04 14:21:07 +02:00