Repair PEM_write_PrivateKey and PEM_write_bio_PrivateKey.
authorBodo Möller <bodo@openssl.org>
Wed, 9 Jun 1999 23:12:08 +0000 (23:12 +0000)
committerBodo Möller <bodo@openssl.org>
Wed, 9 Jun 1999 23:12:08 +0000 (23:12 +0000)
crypto/pem/pem_all.c

index b283b6b4ba09170ef7ddd125e1534942cb83e1f4..bc473f3cff4a457e1f1b526adf201f047e090489 100644 (file)
@@ -102,5 +102,12 @@ IMPLEMENT_PEM_rw(DHparams, DH, PEM_STRING_DHPARAMS, DHparams)
 
 #endif
 
-IMPLEMENT_PEM_rw_cb(PrivateKey, EVP_PKEY, PEM_STRING_EVP_PKEY, PrivateKey)
 
+/* The PrivateKey case is not that straightforward.
+ *   IMPLEMENT_PEM_rw_cb(PrivateKey, EVP_PKEY, PEM_STRING_EVP_PKEY, PrivateKey)
+ * does not work, RSA and DSA keys have specific strings.
+ * (When reading, parameter PEM_STRING_EVP_PKEY is a wildcard for anything
+ * appropriate.)
+ */
+IMPLEMENT_PEM_read(PrivateKey, EVP_PKEY, PEM_STRING_EVP_PKEY, PrivateKey)
+IMPLEMENT_PEM_write_cb(PrivateKey, EVP_PKEY, ((x->type == EVP_PKEY_DSA)?PEM_STRING_DSA:PEM_STRING_RSA), PrivateKey)