diff --git a/lib/modules/Standards.pmod/X509.pmod b/lib/modules/Standards.pmod/X509.pmod
index 55ba94eff33aa8d4c06d54001c2bd382b13ec9e4..53deb8e6d6987f3037960df138a663d7f5647b98 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
   }