Repository: randombit/botan
Pull request #3327 (2023-02-26 18:05:59)

Remove EMSA1 from OIDs and other internal uses


Patch:
diff --git a/doc/migration_guide.rst b/doc/migration_guide.rst
index f67961464..11cf0be00 100644
--- a/doc/migration_guide.rst
+++ b/doc/migration_guide.rst
@@ -310,6 +310,24 @@ If you must generates such signatures for some horrible reason, you can pre-hash
 the message using a hash function as usual, and then sign using a "Raw" padding,
 which will allow you to sign any arbitrary bits with no preprocessing.
 
+ECDSA/DSA with "EMSA1" padding
+---------------------------------
+
+Previous versions of Botan required using a hash specifier like "EMSA1(SHA-256)"
+when generating or verifying ECDSA/DSA signatures, with the specified hash. The
+"EMSA1" was a reference to a now obsolete IEEE standard.
+
+In Botan 3 the "EMSA1" notation is still accepted, but now also it is possible
+to simply use the name of the hash, eg "EMSA1(SHA-256)" becomes "SHA-256".
+
+Signature Algorithm OIDs
+-----------------------------
+
+In line with the previous entries, previously Botan used a string like
+"ECDSA/EMSA1(SHA-256)" to identify the OID 1.2.840.10045.4.3.2. Now it
+uses the string "ECDSA/SHA-256" instead, and does not recognize the
+EMSA1 variant at all (for example in ``OID::from_string``).
+
 Public Key Signature Padding
 -----------------------------
 
diff --git a/src/build-data/oids.txt b/src/build-data/oids.txt
index b30ff05fa..8c2e1586b 100644
--- a/src/build-data/oids.txt
+++ b/src/build-data/oids.txt
@@ -175,50 +175,50 @@
 1.2.156.10197.1.501 = SM2_Sig/SM3
 1.2.156.10197.1.504 = RSA/EMSA3(SM3)
 
-1.2.840.10040.4.3 = DSA/EMSA1(SHA-1)
-
-2.16.840.1.101.3.4.3.1 = DSA/EMSA1(SHA-224)
-2.16.840.1.101.3.4.3.2 = DSA/EMSA1(SHA-256)
-2.16.840.1.101.3.4.3.3 = DSA/EMSA1(SHA-384)
-2.16.840.1.101.3.4.3.4 = DSA/EMSA1(SHA-512)
-2.16.840.1.101.3.4.3.5 = DSA/EMSA1(SHA-3(224))
-2.16.840.1.101.3.4.3.6 = DSA/EMSA1(SHA-3(256))
-2.16.840.1.101.3.4.3.7 = DSA/EMSA1(SHA-3(384))
-2.16.840.1.101.3.4.3.8 = DSA/EMSA1(SHA-3(512))
-
-2.16.840.1.101.3.4.3.9 = ECDSA/EMSA1(SHA-3(224))
-2.16.840.1.101.3.4.3.10 = ECDSA/EMSA1(SHA-3(256))
-2.16.840.1.101.3.4.3.11 = ECDSA/EMSA1(SHA-3(384))
-2.16.840.1.101.3.4.3.12 = ECDSA/EMSA1(SHA-3(512))
+1.2.840.10040.4.3 = DSA/SHA-1
+
+2.16.840.1.101.3.4.3.1 = DSA/SHA-224
+2.16.840.1.101.3.4.3.2 = DSA/SHA-256
+2.16.840.1.101.3.4.3.3 = DSA/SHA-384
+2.16.840.1.101.3.4.3.4 = DSA/SHA-512
+2.16.840.1.101.3.4.3.5 = DSA/SHA-3(224)
+2.16.840.1.101.3.4.3.6 = DSA/SHA-3(256)
+2.16.840.1.101.3.4.3.7 = DSA/SHA-3(384)
+2.16.840.1.101.3.4.3.8 = DSA/SHA-3(512)
+
+2.16.840.1.101.3.4.3.9 = ECDSA/SHA-3(224)
+2.16.840.1.101.3.4.3.10 = ECDSA/SHA-3(256)
+2.16.840.1.101.3.4.3.11 = ECDSA/SHA-3(384)
+2.16.840.1.101.3.4.3.12 = ECDSA/SHA-3(512)
 
 2.16.840.1.101.3.4.3.13 = RSA/EMSA3(SHA-3(224))
 2.16.840.1.101.3.4.3.14 = RSA/EMSA3(SHA-3(256))
 2.16.840.1.101.3.4.3.15 = RSA/EMSA3(SHA-3(384))
 2.16.840.1.101.3.4.3.16 = RSA/EMSA3(SHA-3(512))
 
-1.2.840.10045.4.1 = ECDSA/EMSA1(SHA-1)
-1.2.840.10045.4.3.1 = ECDSA/EMSA1(SHA-224)
-1.2.840.10045.4.3.2 = ECDSA/EMSA1(SHA-256)
-1.2.840.10045.4.3.3 = ECDSA/EMSA1(SHA-384)
-1.2.840.10045.4.3.4 = ECDSA/EMSA1(SHA-512)
+1.2.840.10045.4.1 = ECDSA/SHA-1
+1.2.840.10045.4.3.1 = ECDSA/SHA-224
+1.2.840.10045.4.3.2 = ECDSA/SHA-256
+1.2.840.10045.4.3.3 = ECDSA/SHA-384
+1.2.840.10045.4.3.4 = ECDSA/SHA-512
 
-1.3.36.3.3.2.5.4.1 = ECGDSA/EMSA1(RIPEMD-160)
-1.3.36.3.3.2.5.4.2 = ECGDSA/EMSA1(SHA-1)
-1.3.36.3.3.2.5.4.3 = ECGDSA/EMSA1(SHA-224)
-1.3.36.3.3.2.5.4.4 = ECGDSA/EMSA1(SHA-256)
-1.3.36.3.3.2.5.4.5 = ECGDSA/EMSA1(SHA-384)
-1.3.36.3.3.2.5.4.6 = ECGDSA/EMSA1(SHA-512)
+1.3.36.3.3.2.5.4.1 = ECGDSA/RIPEMD-160
+1.3.36.3.3.2.5.4.2 = ECGDSA/SHA-1
+1.3.36.3.3.2.5.4.3 = ECGDSA/SHA-224
+1.3.36.3.3.2.5.4.4 = ECGDSA/SHA-256
+1.3.36.3.3.2.5.4.5 = ECGDSA/SHA-384
+1.3.36.3.3.2.5.4.6 = ECGDSA/SHA-512
 
-1.2.410.200004.1.100.4.3 = ECKCDSA/EMSA1(SHA-1)
-1.2.410.200004.1.100.4.4 = ECKCDSA/EMSA1(SHA-224)
-1.2.410.200004.1.100.4.5 = ECKCDSA/EMSA1(SHA-256)
+1.2.410.200004.1.100.4.3 = ECKCDSA/SHA-1
+1.2.410.200004.1.100.4.4 = ECKCDSA/SHA-224
+1.2.410.200004.1.100.4.5 = ECKCDSA/SHA-256
 
-1.2.643.2.2.3 = GOST-34.10/EMSA1(GOST-R-34.11-94)
+1.2.643.2.2.3 = GOST-34.10/GOST-R-34.11-94
 
-1.2.643.7.1.1.3.2 = GOST-34.10-2012-256/EMSA1(Streebog-256)
-1.2.643.7.1.1.3.3 = GOST-34.10-2012-512/EMSA1(Streebog-512)
+1.2.643.7.1.1.3.2 = GOST-34.10-2012-256/Streebog-256
+1.2.643.7.1.1.3.3 = GOST-34.10-2012-512/Streebog-512
 
-1.3.6.1.4.1.25258.1.6.1 = GOST-34.10-2012-256/EMSA1(SHA-256)
+1.3.6.1.4.1.25258.1.6.1 = GOST-34.10-2012-256/SHA-256
 
 # Encryption algos
 [encryption]
diff --git a/src/cli/speed.cpp b/src/cli/speed.cpp
index 8f408dfdd..174e8f5a7 100644
--- a/src/cli/speed.cpp
+++ b/src/cli/speed.cpp
@@ -1977,7 +1977,7 @@ class Speed final : public Command
                        const std::string& provider,
                        std::chrono::milliseconds msec)
          {
-         return bench_pk_sig_ecc("ECDSA", "EMSA1(SHA-256)", provider, groups, msec);
+         return bench_pk_sig_ecc("ECDSA", "SHA-256", provider, groups, msec);
          }
 
       void bench_ecdsa_recovery(const std::vector<std::string>& groups,
@@ -2027,7 +2027,7 @@ class Speed final : public Command
                          const std::string& provider,
                          std::chrono::milliseconds msec)
          {
-         return bench_pk_sig_ecc("ECKCDSA", "EMSA1(SHA-256)", provider, groups, msec);
+         return bench_pk_sig_ecc("ECKCDSA", "SHA-256", provider, groups, msec);
          }
 #endif
 
@@ -2035,7 +2035,7 @@ class Speed final : public Command
       void bench_gost_3410(const std::string& provider,
                            std::chrono::milliseconds msec)
          {
-         return bench_pk_sig_ecc("GOST-34.10", "EMSA1(GOST-34.11)", provider, {"gost_256A"}, msec);
+         return bench_pk_sig_ecc("GOST-34.10", "GOST-34.11", provider, {"gost_256A"}, msec);
          }
 #endif
 
@@ -2053,7 +2053,7 @@ class Speed final : public Command
                         const std::string& provider,
                         std::chrono::milliseconds msec)
          {
-         return bench_pk_sig_ecc("ECGDSA", "EMSA1(SHA-256)", provider, groups, msec);
+         return bench_pk_sig_ecc("ECGDSA", "SHA-256", provider, groups, msec);
          }
 #endif
 
@@ -2098,7 +2098,7 @@ class Speed final : public Command
 
             record_result(keygen_timer);
 
-            bench_pk_sig(*key, nm, provider, "EMSA1(SHA-256)", msec);
+            bench_pk_sig(*key, nm, provider, "SHA-256", msec);
             }
          }
 #endif
diff --git a/src/lib/asn1/oid_maps.cpp b/src/lib/asn1/oid_maps.cpp
index 286624af5..46664258c 100644
--- a/src/lib/asn1/oid_maps.cpp
+++ b/src/lib/asn1/oid_maps.cpp
@@ -1,7 +1,7 @@
 /*
 * OID maps
 *
-* This file was automatically generated by ./src/scripts/dev_tools/gen_oids.py on 2023-02-22
+* This file was automatically generated by ./src/scripts/dev_tools/gen_oids.py on 2023-02-26
 *
 * All manual edits to this file will be lost. Edit the script
 * then regenerate this source file.
@@ -36,15 +36,15 @@ std::unordered_map<std::string, std::string> OIDS::load_oid2str_map()
       { "1.2.392.200011.61.1.1.1.2", "Camellia-128/CBC" },
       { "1.2.392.200011.61.1.1.1.3", "Camellia-192/CBC" },
       { "1.2.392.200011.61.1.1.1.4", "Camellia-256/CBC" },
-      { "1.2.410.200004.1.100.4.3", "ECKCDSA/EMSA1(SHA-1)" },
-      { "1.2.410.200004.1.100.4.4", "ECKCDSA/EMSA1(SHA-224)" },
-      { "1.2.410.200004.1.100.4.5", "ECKCDSA/EMSA1(SHA-256)" },
+      { "1.2.410.200004.1.100.4.3", "ECKCDSA/SHA-1" },
+      { "1.2.410.200004.1.100.4.4", "ECKCDSA/SHA-224" },
+      { "1.2.410.200004.1.100.4.5", "ECKCDSA/SHA-256" },
       { "1.2.410.200004.1.4", "SEED/CBC" },
       { "1.2.643.100.1", "GOST.OGRN" },
       { "1.2.643.100.111", "GOST.SubjectSigningTool" },
       { "1.2.643.100.112", "GOST.IssuerSigningTool" },
       { "1.2.643.2.2.19", "GOST-34.10" },
-      { "1.2.643.2.2.3", "GOST-34.10/EMSA1(GOST-R-34.11-94)" },
+      { "1.2.643.2.2.3", "GOST-34.10/GOST-R-34.11-94" },
       { "1.2.643.2.2.35.1", "gost_256A" },
       { "1.2.643.2.2.36.0", "gost_256A" },
       { "1.2.643.3.131.1.1", "GOST.INN" },
@@ -52,14 +52,14 @@ std::unordered_map<std::string, std::string> OIDS::load_oid2str_map()
       { "1.2.643.7.1.1.1.2", "GOST-34.10-2012-512" },
       { "1.2.643.7.1.1.2.2", "Streebog-256" },
       { "1.2.643.7.1.1.2.3", "Streebog-512" },
-      { "1.2.643.7.1.1.3.2", "GOST-34.10-2012-256/EMSA1(Streebog-256)" },
-      { "1.2.643.7.1.1.3.3", "GOST-34.10-2012-512/EMSA1(Streebog-512)" },
+      { "1.2.643.7.1.1.3.2", "GOST-34.10-2012-256/Streebog-256" },
+      { "1.2.643.7.1.1.3.3", "GOST-34.10-2012-512/Streebog-512" },
       { "1.2.643.7.1.2.1.1.1", "gost_256A" },
       { "1.2.643.7.1.2.1.1.2", "gost_256B" },
       { "1.2.643.7.1.2.1.2.1", "gost_512A" },
       { "1.2.643.7.1.2.1.2.2", "gost_512B" },
       { "1.2.840.10040.4.1", "DSA" },
-      { "1.2.840.10040.4.3", "DSA/EMSA1(SHA-1)" },
+      { "1.2.840.10040.4.3", "DSA/SHA-1" },
       { "1.2.840.10045.2.1", "ECDSA" },
       { "1.2.840.10045.3.1.1", "secp192r1" },
       { "1.2.840.10045.3.1.2", "x962_p192v2" },
@@ -68,11 +68,11 @@ std::unordered_map<std::string, std::string> OIDS::load_oid2str_map()
       { "1.2.840.10045.3.1.5", "x962_p239v2" },
       { "1.2.840.10045.3.1.6", "x962_p239v3" },
       { "1.2.840.10045.3.1.7", "secp256r1" },
-      { "1.2.840.10045.4.1", "ECDSA/EMSA1(SHA-1)" },
-      { "1.2.840.10045.4.3.1", "ECDSA/EMSA1(SHA-224)" },
-      { "1.2.840.10045.4.3.2", "ECDSA/EMSA1(SHA-256)" },
-      { "1.2.840.10045.4.3.3", "ECDSA/EMSA1(SHA-384)" },
-      { "1.2.840.10045.4.3.4", "ECDSA/EMSA1(SHA-512)" },
+      { "1.2.840.10045.4.1", "ECDSA/SHA-1" },
+      { "1.2.840.10045.4.3.1", "ECDSA/SHA-224" },
+      { "1.2.840.10045.4.3.2", "ECDSA/SHA-256" },
+      { "1.2.840.10045.4.3.3", "ECDSA/SHA-384" },
+      { "1.2.840.10045.4.3.4", "ECDSA/SHA-512" },
       { "1.2.840.10046.2.1", "DH" },
       { "1.2.840.113533.7.66.10", "CAST-128/CBC" },
       { "1.2.840.113533.7.66.15", "KeyWrap.CAST-128" },
@@ -123,12 +123,12 @@ std::unordered_map<std::string, std::string> OIDS::load_oid2str_map()
       { "1.3.36.3.2.1", "RIPEMD-160" },
       { "1.3.36.3.3.1.2", "RSA/EMSA3(RIPEMD-160)" },
       { "1.3.36.3.3.2.5.2.1", "ECGDSA" },
-      { "1.3.36.3.3.2.5.4.1", "ECGDSA/EMSA1(RIPEMD-160)" },
-      { "1.3.36.3.3.2.5.4.2", "ECGDSA/EMSA1(SHA-1)" },
-      { "1.3.36.3.3.2.5.4.3", "ECGDSA/EMSA1(SHA-224)" },
-      { "1.3.36.3.3.2.5.4.4", "ECGDSA/EMSA1(SHA-256)" },
-      { "1.3.36.3.3.2.5.4.5", "ECGDSA/EMSA1(SHA-384)" },
-      { "1.3.36.3.3.2.5.4.6", "ECGDSA/EMSA1(SHA-512)" },
+      { "1.3.36.3.3.2.5.4.1", "ECGDSA/RIPEMD-160" },
+      { "1.3.36.3.3.2.5.4.2", "ECGDSA/SHA-1" },
+      { "1.3.36.3.3.2.5.4.3", "ECGDSA/SHA-224" },
+      { "1.3.36.3.3.2.5.4.4", "ECGDSA/SHA-256" },
+      { "1.3.36.3.3.2.5.4.5", "ECGDSA/SHA-384" },
+      { "1.3.36.3.3.2.5.4.6", "ECGDSA/SHA-512" },
       { "1.3.36.3.3.2.8.1.1.1", "brainpool160r1" },
       { "1.3.36.3.3.2.8.1.1.11", "brainpool384r1" },
       { "1.3.36.3.3.2.8.1.1.13", "brainpool512r1" },
@@ -146,7 +146,7 @@ std::unordered_map<std::string, std::string> OIDS::load_oid2str_map()
       { "1.3.6.1.4.1.25258.1.11.3", "Kyber-1024-90s-r3" },
       { "1.3.6.1.4.1.25258.1.3", "McEliece" },
       { "1.3.6.1.4.1.25258.1.5", "XMSS-draft6" },
-      { "1.3.6.1.4.1.25258.1.6.1", "GOST-34.10-2012-256/EMSA1(SHA-256)" },
+      { "1.3.6.1.4.1.25258.1.6.1", "GOST-34.10-2012-256/SHA-256" },
       { "1.3.6.1.4.1.25258.1.7.1", "Kyber-512-r3" },
       { "1.3.6.1.4.1.25258.1.7.2", "Kyber-768-r3" },
       { "1.3.6.1.4.1.25258.1.7.3", "Kyber-1024-r3" },
@@ -219,22 +219,22 @@ std::unordered_map<std::string, std::string> OIDS::load_oid2str_map()
       { "2.16.840.1.101.3.4.2.7", "SHA-3(224)" },
       { "2.16.840.1.101.3.4.2.8", "SHA-3(256)" },
       { "2.16.840.1.101.3.4.2.9", "SHA-3(384)" },
-      { "2.16.840.1.101.3.4.3.1", "DSA/EMSA1(SHA-224)" },
-      { "2.16.840.1.101.3.4.3.10", "ECDSA/EMSA1(SHA-3(256))" },
-      { "2.16.840.1.101.3.4.3.11", "ECDSA/EMSA1(SHA-3(384))" },
-      { "2.16.840.1.101.3.4.3.12", "ECDSA/EMSA1(SHA-3(512))" },
+      { "2.16.840.1.101.3.4.3.1", "DSA/SHA-224" },
+      { "2.16.840.1.101.3.4.3.10", "ECDSA/SHA-3(256)" },
+      { "2.16.840.1.101.3.4.3.11", "ECDSA/SHA-3(384)" },
+      { "2.16.840.1.101.3.4.3.12", "ECDSA/SHA-3(512)" },
       { "2.16.840.1.101.3.4.3.13", "RSA/EMSA3(SHA-3(224))" },
       { "2.16.840.1.101.3.4.3.14", "RSA/EMSA3(SHA-3(256))" },
       { "2.16.840.1.101.3.4.3.15", "RSA/EMSA3(SHA-3(384))" },
       { "2.16.840.1.101.3.4.3.16", "RSA/EMSA3(SHA-3(512))" },
-      { "2.16.840.1.101.3.4.3.2", "DSA/EMSA1(SHA-256)" },
-      { "2.16.840.1.101.3.4.3.3", "DSA/EMSA1(SHA-384)" },
-      { "2.16.840.1.101.3.4.3.4", "DSA/EMSA1(SHA-512)" },
-      { "2.16.840.1.101.3.4.3.5", "DSA/EMSA1(SHA-3(224))" },
-      { "2.16.840.1.101.3.4.3.6", "DSA/EMSA1(SHA-3(256))" },
-      { "2.16.840.1.101.3.4.3.7", "DSA/EMSA1(SHA-3(384))" },
-      { "2.16.840.1.101.3.4.3.8", "DSA/EMSA1(SHA-3(512))" },
-      { "2.16.840.1.101.3.4.3.9", "ECDSA/EMSA1(SHA-3(224))" },
+      { "2.16.840.1.101.3.4.3.2", "DSA/SHA-256" },
+      { "2.16.840.1.101.3.4.3.3", "DSA/SHA-384" },
+      { "2.16.840.1.101.3.4.3.4", "DSA/SHA-512" },
+      { "2.16.840.1.101.3.4.3.5", "DSA/SHA-3(224)" },
+      { "2.16.840.1.101.3.4.3.6", "DSA/SHA-3(256)" },
+      { "2.16.840.1.101.3.4.3.7", "DSA/SHA-3(384)" },
+      { "2.16.840.1.101.3.4.3.8", "DSA/SHA-3(512)" },
+      { "2.16.840.1.101.3.4.3.9", "ECDSA/SHA-3(224)" },
       { "2.16.840.1.113730.1.13", "Certificate Comment" },
       { "2.5.29.14", "X509v3.SubjectKeyIdentifier" },
       { "2.5.29.15", "X509v3.KeyUsage" },
@@ -311,15 +311,15 @@ std::unordered_map<std::string, OID> OIDS::load_str2oid_map()
       { "DES/CBC", OID({1,3,14,3,2,7}) },
       { "DH", OID({1,2,840,10046,2,1}) },
       { "DSA", OID({1,2,840,10040,4,1}) },
-      { "DSA/EMSA1(SHA-1)", OID({1,2,840,10040,4,3}) },
-      { "DSA/EMSA1(SHA-224)", OID({2,16,840,1,101,3,4,3,1}) },
-      { "DSA/EMSA1(SHA-256)", OID({2,16,840,1,101,3,4,3,2}) },
-      { "DSA/EMSA1(SHA-3(224))", OID({2,16,840,1,101,3,4,3,5}) },
-      { "DSA/EMSA1(SHA-3(256))", OID({2,16,840,1,101,3,4,3,6}) },
-      { "DSA/EMSA1(SHA-3(384))", OID({2,16,840,1,101,3,4,3,7}) },
-      { "DSA/EMSA1(SHA-3(512))", OID({2,16,840,1,101,3,4,3,8}) },
-      { "DSA/EMSA1(SHA-384)", OID({2,16,840,1,101,3,4,3,3}) },
-      { "DSA/EMSA1(SHA-512)", OID({2,16,840,1,101,3,4,3,4}) },
+      { "DSA/SHA-1", OID({1,2,840,10040,4,3}) },
+      { "DSA/SHA-224", OID({2,16,840,1,101,3,4,3,1}) },
+      { "DSA/SHA-256", OID({2,16,840,1,101,3,4,3,2}) },
+      { "DSA/SHA-3(224)", OID({2,16,840,1,101,3,4,3,5}) },
+      { "DSA/SHA-3(256)", OID({2,16,840,1,101,3,4,3,6}) },
+      { "DSA/SHA-3(384)", OID({2,16,840,1,101,3,4,3,7}) },
+      { "DSA/SHA-3(512)", OID({2,16,840,1,101,3,4,3,8}) },
+      { "DSA/SHA-384", OID({2,16,840,1,101,3,4,3,3}) },
+      { "DSA/SHA-512", OID({2,16,840,1,101,3,4,3,4}) },
       { "Dilithium-4x4-AES-r3", OID({1,3,6,1,4,1,25258,1,10,1}) },
       { "Dilithium-4x4-r3", OID({1,3,6,1,4,1,25258,1,9,1}) },
       { "Dilithium-6x5-AES-r3", OID({1,3,6,1,4,1,25258,1,10,2}) },
@@ -328,35 +328,35 @@ std::unordered_map<std::string, OID> OIDS::load_str2oid_map()
       { "Dilithium-8x7-r3", OID({1,3,6,1,4,1,25258,1,9,3}) },
       { "ECDH", OID({1,3,132,1,12}) },
       { "ECDSA", OID({1,2,840,10045,2,1}) },
-      { "ECDSA/EMSA1(SHA-1)", OID({1,2,840,10045,4,1}) },
-      { "ECDSA/EMSA1(SHA-224)", OID({1,2,840,10045,4,3,1}) },
-      { "ECDSA/EMSA1(SHA-256)", OID({1,2,840,10045,4,3,2}) },
-      { "ECDSA/EMSA1(SHA-3(224))", OID({2,16,840,1,101,3,4,3,9}) },
-      { "ECDSA/EMSA1(SHA-3(256))", OID({2,16,840,1,101,3,4,3,10}) },
-      { "ECDSA/EMSA1(SHA-3(384))", OID({2,16,840,1,101,3,4,3,11}) },
-      { "ECDSA/EMSA1(SHA-3(512))", OID({2,16,840,1,101,3,4,3,12}) },
-      { "ECDSA/EMSA1(SHA-384)", OID({1,2,840,10045,4,3,3}) },
-      { "ECDSA/EMSA1(SHA-512)", OID({1,2,840,10045,4,3,4}) },
+      { "ECDSA/SHA-1", OID({1,2,840,10045,4,1}) },
+      { "ECDSA/SHA-224", OID({1,2,840,10045,4,3,1}) },
+      { "ECDSA/SHA-256", OID({1,2,840,10045,4,3,2}) },
+      { "ECDSA/SHA-3(224)", OID({2,16,840,1,101,3,4,3,9}) },
+      { "ECDSA/SHA-3(256)", OID({2,16,840,1,101,3,4,3,10}) },
+      { "ECDSA/SHA-3(384)", OID({2,16,840,1,101,3,4,3,11}) },
+      { "ECDSA/SHA-3(512)", OID({2,16,840,1,101,3,4,3,12}) },
+      { "ECDSA/SHA-384", OID({1,2,840,10045,4,3,3}) },
+      { "ECDSA/SHA-512", OID({1,2,840,10045,4,3,4}) },
       { "ECGDSA", OID({1,3,36,3,3,2,5,2,1}) },
-      { "ECGDSA/EMSA1(RIPEMD-160)", OID({1,3,36,3,3,2,5,4,1}) },
-      { "ECGDSA/EMSA1(SHA-1)", OID({1,3,36,3,3,2,5,4,2}) },
-      { "ECGDSA/EMSA1(SHA-224)", OID({1,3,36,3,3,2,5,4,3}) },
-      { "ECGDSA/EMSA1(SHA-256)", OID({1,3,36,3,3,2,5,4,4}) },
-      { "ECGDSA/EMSA1(SHA-384)", OID({1,3,36,3,3,2,5,4,5}) },
-      { "ECGDSA/EMSA1(SHA-512)", OID({1,3,36,3,3,2,5,4,6}) },
+      { "ECGDSA/RIPEMD-160", OID({1,3,36,3,3,2,5,4,1}) },
+      { "ECGDSA/SHA-1", OID({1,3,36,3,3,2,5,4,2}) },
+      { "ECGDSA/SHA-224", OID({1,3,36,3,3,2,5,4,3}) },
+      { "ECGDSA/SHA-256", OID({1,3,36,3,3,2,5,4,4}) },
+      { "ECGDSA/SHA-384", OID({1,3,36,3,3,2,5,4,5}) },
+      { "ECGDSA/SHA-512", OID({1,3,36,3,3,2,5,4,6}) },
       { "ECKCDSA", OID({1,0,14888,3,0,5}) },
-      { "ECKCDSA/EMSA1(SHA-1)", OID({1,2,410,200004,1,100,4,3}) },
-      { "ECKCDSA/EMSA1(SHA-224)", OID({1,2,410,200004,1,100,4,4}) },
-      { "ECKCDSA/EMSA1(SHA-256)", OID({1,2,410,200004,1,100,4,5}) },
+      { "ECKCDSA/SHA-1", OID({1,2,410,200004,1,100,4,3}) },
+      { "ECKCDSA/SHA-224", OID({1,2,410,200004,1,100,4,4}) },
+      { "ECKCDSA/SHA-256", OID({1,2,410,200004,1,100,4,5}) },
       { "Ed25519", OID({1,3,101,112}) },
       { "ElGamal", OID({1,3,6,1,4,1,3029,1,2,1}) },
       { "GOST-34.10", OID({1,2,643,2,2,19}) },
       { "GOST-34.10-2012-256", OID({1,2,643,7,1,1,1,1}) },
-      { "GOST-34.10-2012-256/EMSA1(SHA-256)", OID({1,3,6,1,4,1,25258,1,6,1}) },
-      { "GOST-34.10-2012-256/EMSA1(Streebog-256)", OID({1,2,643,7,1,1,3,2}) },
+      { "GOST-34.10-2012-256/SHA-256", OID({1,3,6,1,4,1,25258,1,6,1}) },
+      { "GOST-34.10-2012-256/Streebog-256", OID({1,2,643,7,1,1,3,2}) },
       { "GOST-34.10-2012-512", OID({1,2,643,7,1,1,1,2}) },
-      { "GOST-34.10-2012-512/EMSA1(Streebog-512)", OID({1,2,643,7,1,1,3,3}) },
-      { "GOST-34.10/EMSA1(GOST-R-34.11-94)", OID({1,2,643,2,2,3}) },
+      { "GOST-34.10-2012-512/Streebog-512", OID({1,2,643,7,1,1,3,3}) },
+      { "GOST-34.10/GOST-R-34.11-94", OID({1,2,643,2,2,3}) },
       { "GOST.INN", OID({1,2,643,3,131,1,1}) },
       { "GOST.IssuerSigningTool", OID({1,2,643,100,112}) },
       { "GOST.OGRN", OID({1,2,643,100,1}) },
diff --git a/src/lib/prov/pkcs11/p11_ecdsa.cpp b/src/lib/prov/pkcs11/p11_ecdsa.cpp
index ae5d9d32e..5f3e519c7 100644
--- a/src/lib/prov/pkcs11/p11_ecdsa.cpp
+++ b/src/lib/prov/pkcs11/p11_ecdsa.cpp
@@ -35,7 +35,7 @@ bool PKCS11_ECDSA_PrivateKey::check_key(RandomNumberGenerator& rng, bool strong)
       }
 
    ECDSA_PublicKey pubkey(domain(), public_point());
-   return KeyPair::signature_consistency_check(rng, *this, pubkey, "EMSA1(SHA-256)");
+   return KeyPair::signature_consistency_check(rng, *this, pubkey, "SHA-256");
    }
 
 ECDSA_PrivateKey PKCS11_ECDSA_PrivateKey::export_key() const
@@ -123,7 +123,7 @@ class PKCS11_ECDSA_Signature_Operation final : public PK_Ops::Signature
 
 AlgorithmIdentifier PKCS11_ECDSA_Signature_Operation::algorithm_identifier() const
    {
-   const std::string full_name = "ECDSA/EMSA1(" + hash_function() + ")";
+   const std::string full_name = "ECDSA/" + hash_function();
    const OID oid = OID::from_string(full_name);
    return AlgorithmIdentifier(oid, AlgorithmIdentifier::USE_EMPTY_PARAM);
    }
diff --git a/src/lib/pubkey/dsa/dsa.cpp b/src/lib/pubkey/dsa/dsa.cpp
index 9fd781875..6256eec3b 100644
--- a/src/lib/pubkey/dsa/dsa.cpp
+++ b/src/lib/pubkey/dsa/dsa.cpp
@@ -121,7 +121,7 @@ class DSA_Signature_Operation final : public PK_Ops::Signature_with_Hash
 
 AlgorithmIdentifier DSA_Signature_Operation::algorithm_identifier() const
    {
-   const std::string full_name = "DSA/EMSA1(" + hash_function() + ")";
+   const std::string full_name = "DSA/" + hash_function();
    const OID oid = OID::from_string(full_name);
    return AlgorithmIdentifier(oid, AlgorithmIdentifier::USE_EMPTY_PARAM);
    }
diff --git a/src/lib/pubkey/ecdsa/ecdsa.cpp b/src/lib/pubkey/ecdsa/ecdsa.cpp
index 6576137c3..94f75be95 100644
--- a/src/lib/pubkey/ecdsa/ecdsa.cpp
+++ b/src/lib/pubkey/ecdsa/ecdsa.cpp
@@ -172,7 +172,7 @@ class ECDSA_Signature_Operation final : public PK_Ops::Signature_with_Hash
 
 AlgorithmIdentifier ECDSA_Signature_Operation::algorithm_identifier() const
    {
-   const std::string full_name = "ECDSA/EMSA1(" + hash_function() + ")";
+   const std::string full_name = "ECDSA/" + hash_function();
    const OID oid = OID::from_string(full_name);
    return AlgorithmIdentifier(oid, AlgorithmIdentifier::USE_EMPTY_PARAM);
    }
diff --git a/src/lib/pubkey/ecgdsa/ecgdsa.cpp b/src/lib/pubkey/ecgdsa/ecgdsa.cpp
index a2857251c..4abb0c91d 100644
--- a/src/lib/pubkey/ecgdsa/ecgdsa.cpp
+++ b/src/lib/pubkey/ecgdsa/ecgdsa.cpp
@@ -62,7 +62,7 @@ class ECGDSA_Signature_Operation final : public PK_Ops::Signature_with_Hash
 
 AlgorithmIdentifier ECGDSA_Signature_Operation::algorithm_identifier() const
    {
-   const std::string full_name = "ECGDSA/EMSA1(" + hash_function() + ")";
+   const std::string full_name = "ECGDSA/" + hash_function();
    const OID oid = OID::from_string(full_name);
    return AlgorithmIdentifier(oid, AlgorithmIdentifier::USE_EMPTY_PARAM);
    }
diff --git a/src/lib/pubkey/eckcdsa/eckcdsa.cpp b/src/lib/pubkey/eckcdsa/eckcdsa.cpp
index 96404b1e7..928335240 100644
--- a/src/lib/pubkey/eckcdsa/eckcdsa.cpp
+++ b/src/lib/pubkey/eckcdsa/eckcdsa.cpp
@@ -139,7 +139,7 @@ class ECKCDSA_Signature_Operation final : public PK_Ops::Signature
 
 AlgorithmIdentifier ECKCDSA_Signature_Operation::algorithm_identifier() const
    {
-   const std::string full_name = "ECKCDSA/EMSA1(" + m_hash->name() + ")";
+   const std::string full_name = "ECKCDSA/" + m_hash->name();
    const OID oid = OID::from_string(full_name);
    return AlgorithmIdentifier(oid, AlgorithmIdentifier::USE_EMPTY_PARAM);
    }
diff --git a/src/lib/pubkey/gost_3410/gost_3410.cpp b/src/lib/pubkey/gost_3410/gost_3410.cpp
index 77acad39c..da6cc190c 100644
--- a/src/lib/pubkey/gost_3410/gost_3410.cpp
+++ b/src/lib/pubkey/gost_3410/gost_3410.cpp
@@ -163,13 +163,13 @@ AlgorithmIdentifier GOST_3410_Signature_Operation::algorithm_identifier() const
 
    std::string oid_name;
    if(hash_fn == "GOST-R-34.11-94")
-      oid_name = "GOST-34.10/EMSA1(GOST-R-34.11-94)";
+      oid_name = "GOST-34.10/GOST-R-34.11-94";
    else if(hash_fn == "Streebog-256" && p_bits == 256)
-      oid_name = "GOST-34.10-2012-256/EMSA1(Streebog-256)";
+      oid_name = "GOST-34.10-2012-256/Streebog-256";
    else if(hash_fn == "Streebog-512" && p_bits == 512)
-      oid_name = "GOST-34.10-2012-512/EMSA1(Streebog-512)";
+      oid_name = "GOST-34.10-2012-512/Streebog-512";
    else if(hash_fn == "SHA-256" && p_bits == 256)
-      oid_name = "GOST-34.10-2012-256/EMSA1(SHA-256)";
+      oid_name = "GOST-34.10-2012-256/SHA-256";
 
    if(oid_name.empty())
       throw Not_Implemented("No encoding defined for GOST with " + hash_fn);
diff --git a/src/lib/tls/tls_signature_scheme.cpp b/src/lib/tls/tls_signature_scheme.cpp
index e899ec39a..aa024e46b 100644
--- a/src/lib/tls/tls_signature_scheme.cpp
+++ b/src/lib/tls/tls_signature_scheme.cpp
@@ -157,13 +157,13 @@ std::string Signature_Scheme::padding_string() const noexcept
          return "EMSA_PKCS1(SHA-512)";
 
       case ECDSA_SHA1:
-         return "EMSA1(SHA-1)";
+         return "SHA-1";
       case ECDSA_SHA256:
-         return "EMSA1(SHA-256)";
+         return "SHA-256";
       case ECDSA_SHA384:
-         return "EMSA1(SHA-384)";
+         return "SHA-384";
       case ECDSA_SHA512:
-         return "EMSA1(SHA-512)";
+         return "SHA-512";
 
       case RSA_PSS_SHA256:
          return "PSSR(SHA-256,MGF1,32)";
@@ -255,13 +255,13 @@ AlgorithmIdentifier Signature_Scheme::algorithm_identifier() const noexcept
          return AlgorithmIdentifier(OID::from_string("RSA/EMSA3(SHA-512)"), AlgorithmIdentifier::USE_NULL_PARAM);
 
       case ECDSA_SHA1:
-         return AlgorithmIdentifier(OID::from_string("ECDSA/EMSA1(SHA-1)"), AlgorithmIdentifier::USE_EMPTY_PARAM);
+         return AlgorithmIdentifier(OID::from_string("ECDSA/SHA-1"), AlgorithmIdentifier::USE_EMPTY_PARAM);
       case ECDSA_SHA256:
-         return AlgorithmIdentifier(OID::from_string("ECDSA/EMSA1(SHA-256)"), AlgorithmIdentifier::USE_EMPTY_PARAM);
+         return AlgorithmIdentifier(OID::from_string("ECDSA/SHA-256"), AlgorithmIdentifier::USE_EMPTY_PARAM);
       case ECDSA_SHA384:
-         return AlgorithmIdentifier(OID::from_string("ECDSA/EMSA1(SHA-384)"), AlgorithmIdentifier::USE_EMPTY_PARAM);
+         return AlgorithmIdentifier(OID::from_string("ECDSA/SHA-384"), AlgorithmIdentifier::USE_EMPTY_PARAM);
       case ECDSA_SHA512:
-         return AlgorithmIdentifier(OID::from_string("ECDSA/EMSA1(SHA-512)"), AlgorithmIdentifier::USE_EMPTY_PARAM);
+         return AlgorithmIdentifier(OID::from_string("ECDSA/SHA-512"), AlgorithmIdentifier::USE_EMPTY_PARAM);
 
       case RSA_PSS_SHA256:
          return AlgorithmIdentifier(OID::from_string("RSA/EMSA4"),


Test patch:
diff --git a/src/tests/test_dsa.cpp b/src/tests/test_dsa.cpp
index 12c321c53..4054e64c0 100644
--- a/src/tests/test_dsa.cpp
+++ b/src/tests/test_dsa.cpp
@@ -50,7 +50,7 @@ class DSA_KAT_Tests final : public PK_Signature_Generation_Test
 
       std::string default_padding(const VarMap& vars) const override
          {
-         return "EMSA1(" + vars.get_req_str("Hash") + ")";
+         return vars.get_req_str("Hash");
          }
    };
 
@@ -89,7 +89,7 @@ class DSA_KAT_Verification_Tests final : public PK_Signature_Verification_Test
 
       std::string default_padding(const VarMap& vars) const override
          {
-         return "EMSA1(" + vars.get_req_str("Hash") + ")";
+         return vars.get_req_str("Hash");
          }
    };
 
diff --git a/src/tests/test_ecdsa.cpp b/src/tests/test_ecdsa.cpp
index 782d42d4f..2b0a6afbd 100644
--- a/src/tests/test_ecdsa.cpp
+++ b/src/tests/test_ecdsa.cpp
@@ -88,7 +88,7 @@ class ECDSA_Wycheproof_Verification_Tests final : public PK_Signature_Verificati
 
       std::string default_padding(const VarMap& vars) const override
          {
-         return "EMSA1(" + vars.get_req_str("Hash") + ")";
+         return vars.get_req_str("Hash");
          }
    };
 
@@ -121,10 +121,7 @@ class ECDSA_Signature_KAT_Tests final : public PK_Signature_Generation_Test
 
       std::string default_padding(const VarMap& vars) const override
          {
-         std::string hash = vars.get_req_str("Hash");
-         if(hash.substr(0,3) == "Raw")
-            return hash;
-         return "EMSA1(" + hash + ")";
+         return vars.get_req_str("Hash");
          }
 
 #if !defined(BOTAN_HAS_RFC6979_GENERATOR)
@@ -168,10 +165,7 @@ class ECDSA_KAT_Verification_Tests final : public PK_Signature_Verification_Test
 
       std::string default_padding(const VarMap& vars) const override
          {
-         std::string hash = vars.get_req_str("Hash");
-         if(hash.substr(0,3) == "Raw")
-            return hash;
-         return "EMSA1(" + hash + ")";
+         return vars.get_req_str("Hash");
          }
    };
 
@@ -179,7 +173,7 @@ class ECDSA_Sign_Verify_DER_Test final : public PK_Sign_Verify_DER_Test
    {
    public:
       ECDSA_Sign_Verify_DER_Test() :
-         PK_Sign_Verify_DER_Test("ECDSA", "EMSA1(SHA-512)") {}
+         PK_Sign_Verify_DER_Test("ECDSA", "SHA-512") {}
 
       std::unique_ptr<Botan::Private_Key> key() const override
          {
diff --git a/src/tests/test_ecgdsa.cpp b/src/tests/test_ecgdsa.cpp
index df8e03194..77e9fbede 100644
--- a/src/tests/test_ecgdsa.cpp
+++ b/src/tests/test_ecgdsa.cpp
@@ -43,7 +43,7 @@ class ECGDSA_Signature_KAT_Tests final : public PK_Signature_Generation_Test
 
       std::string default_padding(const VarMap& vars) const override
          {
-         return "EMSA1(" + vars.get_req_str("Hash") + ")";
+         return vars.get_req_str("Hash");
          }
 
       std::unique_ptr<Botan::RandomNumberGenerator> test_rng(const std::vector<uint8_t>& nonce) const override
diff --git a/src/tests/test_eckcdsa.cpp b/src/tests/test_eckcdsa.cpp
index 71d2f5544..617a940af 100644
--- a/src/tests/test_eckcdsa.cpp
+++ b/src/tests/test_eckcdsa.cpp
@@ -39,7 +39,7 @@ class ECKCDSA_Signature_KAT_Tests final : public PK_Signature_Generation_Test
 
       std::string default_padding(const VarMap& vars) const override
          {
-         return "EMSA1(" + vars.get_req_str("Hash") + ")";
+         return vars.get_req_str("Hash");
          }
 
       std::unique_ptr<Botan::RandomNumberGenerator> test_rng(const std::vector<uint8_t>& nonce) const override
diff --git a/src/tests/test_ffi.cpp b/src/tests/test_ffi.cpp
index a5212d627..3b1b0fdc2 100644
--- a/src/tests/test_ffi.cpp
+++ b/src/tests/test_ffi.cpp
@@ -2115,7 +2115,7 @@ class FFI_Unit_Tests final : public Test
             std::vector<uint8_t> message(6, 6);
             std::vector<uint8_t> signature;
 
-            if(TEST_FFI_OK(botan_pk_op_sign_create, (&signer, loaded_privkey, "EMSA1(SHA-256)", 0)))
+            if(TEST_FFI_OK(botan_pk_op_sign_create, (&signer, loaded_privkey, "SHA-256", 0)))
                {
                // TODO: break input into multiple calls to update
                TEST_FFI_OK(botan_pk_op_sign_update, (signer, message.data(), message.size()));
@@ -2134,7 +2134,7 @@ class FFI_Unit_Tests final : public Test
 
             botan_pk_op_verify_t verifier = nullptr;
 
-            if(!signature.empty() && TEST_FFI_OK(botan_pk_op_verify_create, (&verifier, pub, "EMSA1(SHA-256)", 0)))
+            if(!signature.empty() && TEST_FFI_OK(botan_pk_op_verify_create, (&verifier, pub, "SHA-256", 0)))
                {
                TEST_FFI_OK(botan_pk_op_verify_update, (verifier, message.data(), message.size()));
                TEST_FFI_OK(botan_pk_op_verify_finish, (verifier, signature.data(), signature.size()));
@@ -2225,7 +2225,7 @@ class FFI_Unit_Tests final : public Test
          for(uint32_t flags = 0; flags <= 1; ++flags)
             {
             botan_pk_op_sign_t signer;
-            if(TEST_FFI_OK(botan_pk_op_sign_create, (&signer, loaded_privkey, "EMSA1(SHA-384)", flags)))
+            if(TEST_FFI_OK(botan_pk_op_sign_create, (&signer, loaded_privkey, "SHA-384", flags)))
                {
                // TODO: break input into multiple calls to update
                TEST_FFI_OK(botan_pk_op_sign_update, (signer, message.data(), message.size()));
@@ -2244,7 +2244,7 @@ class FFI_Unit_Tests final : public Test
 
             botan_pk_op_verify_t verifier = nullptr;
 
-            if(!signature.empty() && TEST_FFI_OK(botan_pk_op_verify_create, (&verifier, pub, "EMSA1(SHA-384)", flags)))
+            if(!signature.empty() && TEST_FFI_OK(botan_pk_op_verify_create, (&verifier, pub, "SHA-384", flags)))
                {
                TEST_FFI_OK(botan_pk_op_verify_update, (verifier, message.data(), message.size()));
                TEST_FFI_OK(botan_pk_op_verify_finish, (verifier, signature.data(), signature.size()));
diff --git a/src/tests/test_gost_3410.cpp b/src/tests/test_gost_3410.cpp
index f9d46699a..de29b0c16 100644
--- a/src/tests/test_gost_3410.cpp
+++ b/src/tests/test_gost_3410.cpp
@@ -48,10 +48,7 @@ class GOST_3410_2001_Verification_Tests final : public PK_Signature_Verification
 
       std::string default_padding(const VarMap& vars) const override
          {
-         auto hash = vars.get_req_str("Hash");
-         if(hash == "Raw")
-            return hash;
-         return "EMSA1(" + hash + ")";
+         return vars.get_req_str("Hash");
          }
    };
 
@@ -83,10 +80,7 @@ class GOST_3410_2001_Signature_Tests final : public PK_Signature_Generation_Test
 
       std::string default_padding(const VarMap& vars) const override
          {
-         auto hash = vars.get_req_str("Hash");
-         if(hash == "Raw")
-            return hash;
-         return "EMSA1(" + hash + ")";
+         return vars.get_req_str("Hash");
          }
 
       std::unique_ptr<Botan::RandomNumberGenerator> test_rng(const std::vector<uint8_t>& nonce) const override
diff --git a/src/tests/test_pkcs11_high_level.cpp b/src/tests/test_pkcs11_high_level.cpp
index 6c9765ef0..87b6b2b68 100644
--- a/src/tests/test_pkcs11_high_level.cpp
+++ b/src/tests/test_pkcs11_high_level.cpp
@@ -1184,8 +1184,8 @@ Test::Result test_ecdsa_sign_verify_core(EC_Group_Encoding ec_dompar_enc, const
         // SoftHSMv2 until now only supports "Raw"
         if(manufacturer.find("SoftHSM project") == std::string::npos)
            {
-           sign_and_verify("EMSA1(SHA-256)", Botan::Signature_Format::Standard, true);
-           sign_and_verify("EMSA1(SHA-256)", Botan::Signature_Format::DerSequence, true);
+           sign_and_verify("SHA-256", Botan::Signature_Format::Standard, true);
+           sign_and_verify("SHA-256", Botan::Signature_Format::DerSequence, true);
            }
 
 #if defined (BOTAN_HAS_EMSA_RAW)
diff --git a/src/tests/test_tls_rfc8448.cpp b/src/tests/test_tls_rfc8448.cpp
index e439b6001..569141b13 100644
--- a/src/tests/test_tls_rfc8448.cpp
+++ b/src/tests/test_tls_rfc8448.cpp
@@ -263,7 +263,7 @@ class Test_TLS_13_Callbacks : public Botan::TLS::Callbacks
                throw Test_Error("TLS implementation selected unexpected signature format for ECDSA");
                }
 
-            if(emsa != "EMSA1(SHA-256)")
+            if(emsa != "SHA-256")
                {
                throw Test_Error("TLS implementation selected unexpected padding for ECDSA: " + emsa);
                }
diff --git a/src/tests/unit_ecdsa.cpp b/src/tests/unit_ecdsa.cpp
index 86814384a..ff1708b1d 100644
--- a/src/tests/unit_ecdsa.cpp
+++ b/src/tests/unit_ecdsa.cpp
@@ -59,17 +59,17 @@ Test::Result test_hash_larger_than_n()
       return result;
       }
 
-   Botan::PK_Signer pk_signer_160(priv_key, Test::rng(), "EMSA1(SHA-1)");
-   Botan::PK_Verifier pk_verifier_160(priv_key, "EMSA1(SHA-1)");
+   Botan::PK_Signer pk_signer_160(priv_key, Test::rng(), "SHA-1");
+   Botan::PK_Verifier pk_verifier_160(priv_key, "SHA-1");
 
    // Verify we can sign and verify with SHA-1
    std::vector<uint8_t> signature_160 = pk_signer_160.sign_message(message, Test::rng());
    result.test_eq("message verifies", pk_verifier_160.verify_message(message, signature_160), true);
 
    // Verify we can sign and verify with SHA-224
-   Botan::PK_Signer pk_signer(priv_key, Test::rng(), "EMSA1(SHA-224)");
+   Botan::PK_Signer pk_signer(priv_key, Test::rng(), "SHA-224");
    std::vector<uint8_t> signature = pk_signer.sign_message(message, Test::rng());
-   Botan::PK_Verifier pk_verifier(priv_key, "EMSA1(SHA-224)");
+   Botan::PK_Verifier pk_verifier(priv_key, "SHA-224");
    result.test_eq("message verifies", pk_verifier.verify_message(message, signature), true);
 
    return result;
@@ -81,7 +81,7 @@ Test::Result test_decode_ecdsa_X509()
    Test::Result result("ECDSA Unit");
    Botan::X509_Certificate cert(Test::data_file("x509/ecc/CSCA.CSCA.csca-germany.1.crt"));
 
-   result.test_eq("correct signature oid", cert.signature_algorithm().oid().to_formatted_string(), "ECDSA/EMSA1(SHA-224)");
+   result.test_eq("correct signature oid", cert.signature_algorithm().oid().to_formatted_string(), "ECDSA/SHA-224");
 
    result.test_eq("serial number", cert.serial_number(), Botan::hex_decode("01"));
    result.test_eq("authority key id", cert.authority_key_id(), cert.subject_key_id());
@@ -133,12 +133,12 @@ Test::Result test_sign_then_ver()
    Botan::EC_Group dom_pars("secp160r1");
    Botan::ECDSA_PrivateKey ecdsa(Test::rng(), dom_pars);
 
-   Botan::PK_Signer signer(ecdsa, Test::rng(), "EMSA1(SHA-256)");
+   Botan::PK_Signer signer(ecdsa, Test::rng(), "SHA-256");
 
    auto msg = Botan::hex_decode("12345678901234567890abcdef12");
    std::vector<uint8_t> sig = signer.sign_message(msg, Test::rng());
 
-   Botan::PK_Verifier verifier(ecdsa, "EMSA1(SHA-256)");
+   Botan::PK_Verifier verifier(ecdsa, "SHA-256");
 
    result.confirm("signature verifies", verifier.verify_message(msg, sig));
 
@@ -155,8 +155,8 @@ Test::Result test_ec_sign()
       {
       Botan::EC_Group dom_pars("secp160r1");
       Botan::ECDSA_PrivateKey priv_key(Test::rng(), dom_pars);
-      Botan::PK_Signer signer(priv_key, Test::rng(), "EMSA1(SHA-224)");
-      Botan::PK_Verifier verifier(priv_key, "EMSA1(SHA-224)");
+      Botan::PK_Signer signer(priv_key, Test::rng(), "SHA-224");
+      Botan::PK_Verifier verifier(priv_key, "SHA-224");
 
       for(size_t i = 0; i != 256; ++i)
          {
@@ -210,7 +210,7 @@ Test::Result test_ecdsa_create_save_load()
       Botan::EC_Group dom_pars("secp160r1");
       Botan::ECDSA_PrivateKey key(Test::rng(), dom_pars);
 
-      Botan::PK_Signer signer(key, Test::rng(), "EMSA1(SHA-256)");
+      Botan::PK_Signer signer(key, Test::rng(), "SHA-256");
       msg_signature = signer.sign_message(msg, Test::rng());
 
       ecc_private_key_pem = Botan::PKCS8::PEM_encode(key);
@@ -229,7 +229,7 @@ Test::Result test_ecdsa_create_save_load()
       {
       result.confirm("the loaded key produces equal encoding",
                      (ecc_private_key_pem == Botan::PKCS8::PEM_encode(*loaded_ec_key)));
-      Botan::PK_Verifier verifier(*loaded_ec_key, "EMSA1(SHA-256)");
+      Botan::PK_Verifier verifier(*loaded_ec_key, "SHA-256");
       result.confirm("generated signature valid", verifier.verify_message(msg, msg_signature));
       }
 
@@ -337,8 +337,8 @@ Test::Result test_read_pkcs8()
          throw Test_Error("Unable to load valid PKCS8 ECDSA key");
          }
 
-      Botan::PK_Signer signer(*ecdsa_nodp, Test::rng(), "EMSA1(SHA-256)");
-      Botan::PK_Verifier verifier(*ecdsa_nodp, "EMSA1(SHA-256)");
+      Botan::PK_Signer signer(*ecdsa_nodp, Test::rng(), "SHA-256");
+      Botan::PK_Verifier verifier(*ecdsa_nodp, "SHA-256");
 
       std::vector<uint8_t> signature_nodp = signer.sign_message(msg, Test::rng());
 
@@ -418,8 +418,8 @@ Test::Result test_curve_registry()
          Botan::EC_Group group(group_name);
          Botan::ECDSA_PrivateKey ecdsa(Test::rng(), group);
 
-         Botan::PK_Signer signer(ecdsa, Test::rng(), "EMSA1(SHA-256)");
-         Botan::PK_Verifier verifier(ecdsa, "EMSA1(SHA-256)");
+         Botan::PK_Signer signer(ecdsa, Test::rng(), "SHA-256");
+         Botan::PK_Verifier verifier(ecdsa, "SHA-256");
 
          const std::vector<uint8_t> msg = Botan::hex_decode("12345678901234567890abcdef12");
          const std::vector<uint8_t> sig = signer.sign_message(msg, Test::rng());
diff --git a/src/tests/unit_x509.cpp b/src/tests/unit_x509.cpp
index e1b2f80e1..9436e5728 100644
--- a/src/tests/unit_x509.cpp
+++ b/src/tests/unit_x509.cpp
@@ -1537,13 +1537,14 @@ Test::Result test_hashes(const Botan::Private_Key& key,
    return result;
    }
 
-std::vector<std::string> get_sig_paddings(const std::string& sig_algo)
+std::vector<std::string> get_sig_paddings(const std::string& sig_algo,
+                                          const std::string& hash)
    {
    if(sig_algo == "RSA")
-      return {"EMSA3", "EMSA4"};
+      return {"EMSA3(" + hash + ")", "EMSA4(" + hash + ")" };
    else if(sig_algo == "DSA" || sig_algo == "ECDSA" || sig_algo == "ECGDSA" ||
            sig_algo == "ECKCDSA" || sig_algo == "GOST-34.10")
-      return {"EMSA1"};
+      return {hash};
    else if(sig_algo == "Ed25519")
       return {"Pure"};
    else if(sig_algo == "Dilithium")
@@ -1594,7 +1595,7 @@ class X509_Cert_Unit_Tests final : public Test
                }
             results.push_back(usage_result);
 
-            for(const auto& padding_scheme : get_sig_paddings(algo))
+            for(const auto& padding_scheme : get_sig_paddings(algo, hash))
                {
                Test::Result cert_result("X509 Unit");