From e64564e166a2bb25b13dad941b3d9e35bf44cf03 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?=
 <grubba@grubba.org>
Date: Wed, 23 Sep 2015 17:42:13 +0200
Subject: [PATCH] Standards.X509: parse_private_key() now knows about PKCS#8.

---
 lib/modules/Standards.pmod/X509.pmod | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/lib/modules/Standards.pmod/X509.pmod b/lib/modules/Standards.pmod/X509.pmod
index 55ba94eff3..53deb8e6d6 100644
--- a/lib/modules/Standards.pmod/X509.pmod
+++ b/lib/modules/Standards.pmod/X509.pmod
@@ -1819,12 +1819,16 @@ Crypto.Sign.State parse_private_key(Sequence seq)
     return Standards.PKCS.DSA.parse_private_key(seq);
   case 9:
     return Standards.PKCS.RSA.parse_private_key(seq);
-#if constant(Nettle.ECC_Curve)
   case 2:
     // ECDSA, implicit curve. Not supported yet.
     return UNDEFINED;
   case 3:
   case 4:
+    // Either PKCS#8 or ECDSA.
+    Crypto.Sign res = Standards.PKCS.parse_private_key(seq);
+    if (res) return res;
+#if constant(Nettle.ECC_Curve)
+    // EDCSA
     return Standards.PKCS.ECDSA.parse_private_key(seq);
 #endif
   }
-- 
GitLab