diff --git a/crypto/evp/evp_extra_test.cc b/crypto/evp/evp_extra_test.cc
index be91bc8..bb1746c 100644
--- a/crypto/evp/evp_extra_test.cc
+++ b/crypto/evp/evp_extra_test.cc
@@ -584,186 +584,16 @@
       20:1b:e5:df
 )");
 
+  // We don't support printing DSA keys.
   bssl::UniquePtr<EVP_PKEY> dsa = ParsePrivateKey(
       EVP_PKEY_DSA, kExampleDSAKeyDER, sizeof(kExampleDSAKeyDER));
   ASSERT_TRUE(dsa);
   EXPECT_EQ(PrintToString(dsa.get(), /*indent=*/2, &EVP_PKEY_print_params),
-            R"(  DSA-Parameters: (2048 bit)
-  P:
-      00:9e:12:fa:b3:de:12:21:35:01:dd:82:aa:10:ca:
-      2d:10:1d:2d:4e:bf:ef:4d:2a:3f:8d:aa:0f:e0:ce:
-      da:d8:d6:af:85:61:6a:a2:f3:25:2c:0a:2b:5a:6d:
-      b0:9e:6f:14:90:0e:0d:db:83:11:87:6d:d8:f9:66:
-      95:25:f9:9e:d6:59:49:e1:84:d5:06:47:93:27:11:
-      69:a2:28:68:0b:95:ec:12:f5:9a:8e:20:b2:1f:2b:
-      58:eb:2a:20:12:d3:5b:de:2e:e3:51:82:2f:e8:f3:
-      2d:0a:33:05:65:dc:ce:5c:67:2b:72:59:c1:4b:24:
-      33:d0:b5:b2:ca:2b:2d:b0:ab:62:6e:8f:13:f4:7f:
-      e0:34:5d:90:4e:72:94:bb:03:8e:9c:e2:1a:9e:58:
-      0b:83:35:62:78:70:6c:fe:76:84:36:c6:9d:e1:49:
-      cc:ff:98:b4:aa:b8:cb:4f:63:85:c9:f1:02:ce:59:
-      34:6e:ae:ef:27:e0:ad:22:2d:53:d6:e8:9c:c8:cd:
-      e5:77:6d:d0:00:57:b0:3f:2d:88:ab:3c:ed:ba:fd:
-      7b:58:5f:0b:7f:78:35:e1:7a:37:28:bb:f2:5e:a6:
-      25:72:f2:45:dc:11:1f:3c:e3:9c:b6:ff:ac:c3:1b:
-      0a:27:90:e7:bd:e9:02:24:ea:9b:09:31:53:62:af:
-      3d:2b
-  Q:
-      00:f3:81:dc:f5:3e:bf:72:4f:8b:2e:5c:a8:2c:01:
-      0f:b4:b5:ed:a9:35:8d:0f:d8:8e:d2:78:58:94:88:
-      b5:4f:c3
-  G:
-      0c:40:2a:72:5d:cc:3a:62:e0:2b:f4:cf:43:cd:17:
-      f4:a4:93:59:12:20:22:36:69:cf:41:93:ed:ab:42:
-      3a:d0:8d:fb:55:2e:30:8a:6a:57:a5:ff:bc:7c:d0:
-      fb:20:87:f8:1f:8d:f0:cb:08:ab:21:33:28:7d:2b:
-      69:68:71:4a:94:f6:33:c9:40:84:5a:48:a3:e1:67:
-      08:dd:e7:61:cc:6a:8e:ab:2d:84:db:21:b6:ea:5b:
-      07:68:14:93:cc:9c:31:fb:c3:68:b2:43:f6:dd:f8:
-      c9:32:a8:b4:03:8f:44:e7:b1:5c:a8:76:34:4a:14:
-      78:59:f2:b4:3b:39:45:86:68:ad:5e:0a:1a:9a:66:
-      95:46:dd:28:12:e3:b3:61:7a:0a:ef:99:d5:8e:3b:
-      b4:cc:87:fd:94:22:5e:01:d2:dc:c4:69:a7:72:68:
-      14:6c:51:91:8f:18:e8:b4:d7:0a:a1:f0:c7:62:3b:
-      cc:52:cf:37:31:d3:86:41:b2:d2:83:0b:7e:ec:b2:
-      f0:95:52:ff:13:7d:04:6e:49:4e:7f:33:c3:59:00:
-      02:b1:6d:1b:97:d9:36:fd:a2:8f:90:c3:ed:3c:a3:
-      53:38:16:8a:c1:6f:77:c3:c5:7a:dc:2e:8f:7c:6c:
-      22:56:e4:1a:5f:65:45:05:90:db:b5:bc:f0:6d:66:
-      61
-)");
+            "  Parameters algorithm unsupported\n");
   EXPECT_EQ(PrintToString(dsa.get(), /*indent=*/2, &EVP_PKEY_print_public),
-            R"(  Public-Key: (2048 bit)
-  pub:
-      31:97:31:a1:4e:38:56:88:db:94:1d:bf:65:5c:da:
-      4b:c2:10:de:74:20:03:ce:13:60:f2:25:1d:55:7c:
-      5d:94:82:54:08:53:db:85:95:bf:dd:5e:50:d5:96:
-      e0:79:51:1b:bf:4d:4e:b9:3a:c5:ee:c4:5e:98:75:
-      7b:be:ff:30:e6:d0:7b:a6:f1:bc:29:ea:df:ec:f3:
-      8b:fa:83:11:9f:3f:f0:5d:06:51:32:aa:21:fc:26:
-      17:e7:50:c2:16:ba:fa:54:b7:7e:1d:2c:a6:a3:41:
-      66:33:94:83:b9:bf:a0:4f:bd:a6:fd:2c:81:58:35:
-      33:39:c0:6d:33:40:56:64:12:5a:cd:35:53:21:78:
-      8f:27:24:37:66:8a:df:5e:5f:63:fc:8b:2d:ef:57:
-      db:40:25:d5:17:53:0b:e4:a5:ae:54:bf:46:4f:a6:
-      79:c3:74:fa:1f:85:34:64:6d:c5:03:eb:72:98:80:
-      7b:c0:8f:35:11:a7:09:eb:51:e0:b0:ac:92:14:f2:
-      ad:37:95:5a:ba:8c:c4:db:ed:c4:4e:8b:8f:84:33:
-      64:f8:57:12:d7:08:7e:90:66:df:91:50:23:f2:73:
-      c0:6b:b1:15:dd:64:d7:c9:75:17:73:72:da:33:c4:
-      6f:a5:47:a1:cc:d1:c6:62:e5:ca:ab:5f:2a:8f:6b:
-      cc
-  P:
-      00:9e:12:fa:b3:de:12:21:35:01:dd:82:aa:10:ca:
-      2d:10:1d:2d:4e:bf:ef:4d:2a:3f:8d:aa:0f:e0:ce:
-      da:d8:d6:af:85:61:6a:a2:f3:25:2c:0a:2b:5a:6d:
-      b0:9e:6f:14:90:0e:0d:db:83:11:87:6d:d8:f9:66:
-      95:25:f9:9e:d6:59:49:e1:84:d5:06:47:93:27:11:
-      69:a2:28:68:0b:95:ec:12:f5:9a:8e:20:b2:1f:2b:
-      58:eb:2a:20:12:d3:5b:de:2e:e3:51:82:2f:e8:f3:
-      2d:0a:33:05:65:dc:ce:5c:67:2b:72:59:c1:4b:24:
-      33:d0:b5:b2:ca:2b:2d:b0:ab:62:6e:8f:13:f4:7f:
-      e0:34:5d:90:4e:72:94:bb:03:8e:9c:e2:1a:9e:58:
-      0b:83:35:62:78:70:6c:fe:76:84:36:c6:9d:e1:49:
-      cc:ff:98:b4:aa:b8:cb:4f:63:85:c9:f1:02:ce:59:
-      34:6e:ae:ef:27:e0:ad:22:2d:53:d6:e8:9c:c8:cd:
-      e5:77:6d:d0:00:57:b0:3f:2d:88:ab:3c:ed:ba:fd:
-      7b:58:5f:0b:7f:78:35:e1:7a:37:28:bb:f2:5e:a6:
-      25:72:f2:45:dc:11:1f:3c:e3:9c:b6:ff:ac:c3:1b:
-      0a:27:90:e7:bd:e9:02:24:ea:9b:09:31:53:62:af:
-      3d:2b
-  Q:
-      00:f3:81:dc:f5:3e:bf:72:4f:8b:2e:5c:a8:2c:01:
-      0f:b4:b5:ed:a9:35:8d:0f:d8:8e:d2:78:58:94:88:
-      b5:4f:c3
-  G:
-      0c:40:2a:72:5d:cc:3a:62:e0:2b:f4:cf:43:cd:17:
-      f4:a4:93:59:12:20:22:36:69:cf:41:93:ed:ab:42:
-      3a:d0:8d:fb:55:2e:30:8a:6a:57:a5:ff:bc:7c:d0:
-      fb:20:87:f8:1f:8d:f0:cb:08:ab:21:33:28:7d:2b:
-      69:68:71:4a:94:f6:33:c9:40:84:5a:48:a3:e1:67:
-      08:dd:e7:61:cc:6a:8e:ab:2d:84:db:21:b6:ea:5b:
-      07:68:14:93:cc:9c:31:fb:c3:68:b2:43:f6:dd:f8:
-      c9:32:a8:b4:03:8f:44:e7:b1:5c:a8:76:34:4a:14:
-      78:59:f2:b4:3b:39:45:86:68:ad:5e:0a:1a:9a:66:
-      95:46:dd:28:12:e3:b3:61:7a:0a:ef:99:d5:8e:3b:
-      b4:cc:87:fd:94:22:5e:01:d2:dc:c4:69:a7:72:68:
-      14:6c:51:91:8f:18:e8:b4:d7:0a:a1:f0:c7:62:3b:
-      cc:52:cf:37:31:d3:86:41:b2:d2:83:0b:7e:ec:b2:
-      f0:95:52:ff:13:7d:04:6e:49:4e:7f:33:c3:59:00:
-      02:b1:6d:1b:97:d9:36:fd:a2:8f:90:c3:ed:3c:a3:
-      53:38:16:8a:c1:6f:77:c3:c5:7a:dc:2e:8f:7c:6c:
-      22:56:e4:1a:5f:65:45:05:90:db:b5:bc:f0:6d:66:
-      61
-)");
+            "  Public Key algorithm unsupported\n");
   EXPECT_EQ(PrintToString(dsa.get(), /*indent=*/2, &EVP_PKEY_print_private),
-            R"(  Private-Key: (2048 bit)
-  priv:
-      00:b0:c7:68:70:27:43:bc:51:24:29:93:a9:71:a5:
-      28:89:79:54:44:f7:c6:45:22:03:d0:ce:84:fe:61:
-      17:d4:6e
-  pub:
-      31:97:31:a1:4e:38:56:88:db:94:1d:bf:65:5c:da:
-      4b:c2:10:de:74:20:03:ce:13:60:f2:25:1d:55:7c:
-      5d:94:82:54:08:53:db:85:95:bf:dd:5e:50:d5:96:
-      e0:79:51:1b:bf:4d:4e:b9:3a:c5:ee:c4:5e:98:75:
-      7b:be:ff:30:e6:d0:7b:a6:f1:bc:29:ea:df:ec:f3:
-      8b:fa:83:11:9f:3f:f0:5d:06:51:32:aa:21:fc:26:
-      17:e7:50:c2:16:ba:fa:54:b7:7e:1d:2c:a6:a3:41:
-      66:33:94:83:b9:bf:a0:4f:bd:a6:fd:2c:81:58:35:
-      33:39:c0:6d:33:40:56:64:12:5a:cd:35:53:21:78:
-      8f:27:24:37:66:8a:df:5e:5f:63:fc:8b:2d:ef:57:
-      db:40:25:d5:17:53:0b:e4:a5:ae:54:bf:46:4f:a6:
-      79:c3:74:fa:1f:85:34:64:6d:c5:03:eb:72:98:80:
-      7b:c0:8f:35:11:a7:09:eb:51:e0:b0:ac:92:14:f2:
-      ad:37:95:5a:ba:8c:c4:db:ed:c4:4e:8b:8f:84:33:
-      64:f8:57:12:d7:08:7e:90:66:df:91:50:23:f2:73:
-      c0:6b:b1:15:dd:64:d7:c9:75:17:73:72:da:33:c4:
-      6f:a5:47:a1:cc:d1:c6:62:e5:ca:ab:5f:2a:8f:6b:
-      cc
-  P:
-      00:9e:12:fa:b3:de:12:21:35:01:dd:82:aa:10:ca:
-      2d:10:1d:2d:4e:bf:ef:4d:2a:3f:8d:aa:0f:e0:ce:
-      da:d8:d6:af:85:61:6a:a2:f3:25:2c:0a:2b:5a:6d:
-      b0:9e:6f:14:90:0e:0d:db:83:11:87:6d:d8:f9:66:
-      95:25:f9:9e:d6:59:49:e1:84:d5:06:47:93:27:11:
-      69:a2:28:68:0b:95:ec:12:f5:9a:8e:20:b2:1f:2b:
-      58:eb:2a:20:12:d3:5b:de:2e:e3:51:82:2f:e8:f3:
-      2d:0a:33:05:65:dc:ce:5c:67:2b:72:59:c1:4b:24:
-      33:d0:b5:b2:ca:2b:2d:b0:ab:62:6e:8f:13:f4:7f:
-      e0:34:5d:90:4e:72:94:bb:03:8e:9c:e2:1a:9e:58:
-      0b:83:35:62:78:70:6c:fe:76:84:36:c6:9d:e1:49:
-      cc:ff:98:b4:aa:b8:cb:4f:63:85:c9:f1:02:ce:59:
-      34:6e:ae:ef:27:e0:ad:22:2d:53:d6:e8:9c:c8:cd:
-      e5:77:6d:d0:00:57:b0:3f:2d:88:ab:3c:ed:ba:fd:
-      7b:58:5f:0b:7f:78:35:e1:7a:37:28:bb:f2:5e:a6:
-      25:72:f2:45:dc:11:1f:3c:e3:9c:b6:ff:ac:c3:1b:
-      0a:27:90:e7:bd:e9:02:24:ea:9b:09:31:53:62:af:
-      3d:2b
-  Q:
-      00:f3:81:dc:f5:3e:bf:72:4f:8b:2e:5c:a8:2c:01:
-      0f:b4:b5:ed:a9:35:8d:0f:d8:8e:d2:78:58:94:88:
-      b5:4f:c3
-  G:
-      0c:40:2a:72:5d:cc:3a:62:e0:2b:f4:cf:43:cd:17:
-      f4:a4:93:59:12:20:22:36:69:cf:41:93:ed:ab:42:
-      3a:d0:8d:fb:55:2e:30:8a:6a:57:a5:ff:bc:7c:d0:
-      fb:20:87:f8:1f:8d:f0:cb:08:ab:21:33:28:7d:2b:
-      69:68:71:4a:94:f6:33:c9:40:84:5a:48:a3:e1:67:
-      08:dd:e7:61:cc:6a:8e:ab:2d:84:db:21:b6:ea:5b:
-      07:68:14:93:cc:9c:31:fb:c3:68:b2:43:f6:dd:f8:
-      c9:32:a8:b4:03:8f:44:e7:b1:5c:a8:76:34:4a:14:
-      78:59:f2:b4:3b:39:45:86:68:ad:5e:0a:1a:9a:66:
-      95:46:dd:28:12:e3:b3:61:7a:0a:ef:99:d5:8e:3b:
-      b4:cc:87:fd:94:22:5e:01:d2:dc:c4:69:a7:72:68:
-      14:6c:51:91:8f:18:e8:b4:d7:0a:a1:f0:c7:62:3b:
-      cc:52:cf:37:31:d3:86:41:b2:d2:83:0b:7e:ec:b2:
-      f0:95:52:ff:13:7d:04:6e:49:4e:7f:33:c3:59:00:
-      02:b1:6d:1b:97:d9:36:fd:a2:8f:90:c3:ed:3c:a3:
-      53:38:16:8a:c1:6f:77:c3:c5:7a:dc:2e:8f:7c:6c:
-      22:56:e4:1a:5f:65:45:05:90:db:b5:bc:f0:6d:66:
-      61
-)");
+            "  Private Key algorithm unsupported\n");
 
   bssl::UniquePtr<EVP_PKEY> ec =
       ParsePrivateKey(EVP_PKEY_EC, kExampleECKeyDER, sizeof(kExampleECKeyDER));
diff --git a/crypto/evp/print.cc b/crypto/evp/print.cc
index b4c0cd5..01357e5 100644
--- a/crypto/evp/print.cc
+++ b/crypto/evp/print.cc
@@ -150,55 +150,6 @@
 }
 
 
-// DSA keys.
-
-static int do_dsa_print(BIO *bp, const DSA *x, int off, int ptype) {
-  const BIGNUM *priv_key = NULL;
-  if (ptype == 2) {
-    priv_key = DSA_get0_priv_key(x);
-  }
-
-  const BIGNUM *pub_key = NULL;
-  if (ptype > 0) {
-    pub_key = DSA_get0_pub_key(x);
-  }
-
-  const char *ktype = "DSA-Parameters";
-  if (ptype == 2) {
-    ktype = "Private-Key";
-  } else if (ptype == 1) {
-    ktype = "Public-Key";
-  }
-
-  if (!BIO_indent(bp, off, 128) ||
-      BIO_printf(bp, "%s: (%u bit)\n", ktype, BN_num_bits(DSA_get0_p(x))) <=
-          0 ||
-      // |priv_key| and |pub_key| may be NULL, in which case |bn_print| will
-      // silently skip them.
-      !bn_print(bp, "priv:", priv_key, off) ||
-      !bn_print(bp, "pub:", pub_key, off) ||
-      !bn_print(bp, "P:", DSA_get0_p(x), off) ||
-      !bn_print(bp, "Q:", DSA_get0_q(x), off) ||
-      !bn_print(bp, "G:", DSA_get0_g(x), off)) {
-    return 0;
-  }
-
-  return 1;
-}
-
-static int dsa_param_print(BIO *bp, const EVP_PKEY *pkey, int indent) {
-  return do_dsa_print(bp, EVP_PKEY_get0_DSA(pkey), indent, 0);
-}
-
-static int dsa_pub_print(BIO *bp, const EVP_PKEY *pkey, int indent) {
-  return do_dsa_print(bp, EVP_PKEY_get0_DSA(pkey), indent, 1);
-}
-
-static int dsa_priv_print(BIO *bp, const EVP_PKEY *pkey, int indent) {
-  return do_dsa_print(bp, EVP_PKEY_get0_DSA(pkey), indent, 2);
-}
-
-
 // EC keys.
 
 static int do_EC_KEY_print(BIO *bp, const EC_KEY *x, int off, int ktype) {
@@ -280,13 +231,7 @@
         EVP_PKEY_RSA,
         rsa_pub_print,
         rsa_priv_print,
-        NULL /* param_print */,
-    },
-    {
-        EVP_PKEY_DSA,
-        dsa_pub_print,
-        dsa_priv_print,
-        dsa_param_print,
+        /*param_print=*/nullptr,
     },
     {
         EVP_PKEY_EC,
