diff options
author | tholenst <tholenst@google.com> | 2023-07-11 02:41:48 -0700 |
---|---|---|
committer | Copybara-Service <copybara-worker@google.com> | 2023-07-11 02:42:55 -0700 |
commit | 2c21a67ee63ccd45728eadd10dfce04ce550e1fd (patch) | |
tree | 0cf5d35ece1e92b61068f562aef7bf330b165cc2 /java_src/src/test/java/com/google | |
parent | 89688db0f4f91c5cf33aa5aa841c2cd55d959c0a (diff) | |
download | tink-2c21a67ee63ccd45728eadd10dfce04ce550e1fd.tar.gz |
Signature: Replace the validation tests with tests checking if the key generation succeeds.
This is a bit more accurate, but has the disadvantage of being potentially slower. Anyhow, i want to change the template functions to not return these pairs (output_prefix, format) anymore, so we need to change this.
PiperOrigin-RevId: 547128537
Diffstat (limited to 'java_src/src/test/java/com/google')
5 files changed, 104 insertions, 48 deletions
diff --git a/java_src/src/test/java/com/google/crypto/tink/signature/BUILD.bazel b/java_src/src/test/java/com/google/crypto/tink/signature/BUILD.bazel index 738e07a99..f1ae31541 100644 --- a/java_src/src/test/java/com/google/crypto/tink/signature/BUILD.bazel +++ b/java_src/src/test/java/com/google/crypto/tink/signature/BUILD.bazel @@ -10,6 +10,7 @@ java_test( "//proto:tink_java_proto", "//src/main/java/com/google/crypto/tink:key", "//src/main/java/com/google/crypto/tink:key_template", + "//src/main/java/com/google/crypto/tink:key_templates", "//src/main/java/com/google/crypto/tink:public_key_sign", "//src/main/java/com/google/crypto/tink:public_key_verify", "//src/main/java/com/google/crypto/tink:registry_cluster", @@ -62,6 +63,7 @@ java_test( "//proto:tink_java_proto", "//src/main/java/com/google/crypto/tink:key", "//src/main/java/com/google/crypto/tink:key_template", + "//src/main/java/com/google/crypto/tink:key_templates", "//src/main/java/com/google/crypto/tink:public_key_sign", "//src/main/java/com/google/crypto/tink:public_key_verify", "//src/main/java/com/google/crypto/tink:registry_cluster", @@ -117,7 +119,9 @@ java_test( "//proto:ecdsa_java_proto", "//proto:tink_java_proto", "//src/main/java/com/google/crypto/tink:key_template", + "//src/main/java/com/google/crypto/tink:key_templates", "//src/main/java/com/google/crypto/tink:public_key_sign", + "//src/main/java/com/google/crypto/tink:registry_cluster", "//src/main/java/com/google/crypto/tink/internal:key_type_manager", "//src/main/java/com/google/crypto/tink/signature:ecdsa_parameters", "//src/main/java/com/google/crypto/tink/signature:ecdsa_sign_key_manager", @@ -314,8 +318,10 @@ java_test( "//proto:ed25519_java_proto", "//proto:tink_java_proto", "//src/main/java/com/google/crypto/tink:key_template", + "//src/main/java/com/google/crypto/tink:key_templates", "//src/main/java/com/google/crypto/tink:public_key_sign", "//src/main/java/com/google/crypto/tink:public_key_verify", + "//src/main/java/com/google/crypto/tink:registry_cluster", "//src/main/java/com/google/crypto/tink/internal:key_type_manager", "//src/main/java/com/google/crypto/tink/signature:ed25519_parameters", "//src/main/java/com/google/crypto/tink/signature:ed25519_private_key_manager", diff --git a/java_src/src/test/java/com/google/crypto/tink/signature/EcdsaSignKeyManagerTest.java b/java_src/src/test/java/com/google/crypto/tink/signature/EcdsaSignKeyManagerTest.java index ab96ce7e8..db3582772 100644 --- a/java_src/src/test/java/com/google/crypto/tink/signature/EcdsaSignKeyManagerTest.java +++ b/java_src/src/test/java/com/google/crypto/tink/signature/EcdsaSignKeyManagerTest.java @@ -21,6 +21,8 @@ import static com.google.crypto.tink.testing.KeyTypeManagerTestUtil.testKeyTempl import static org.junit.Assert.assertThrows; import com.google.crypto.tink.KeyTemplate; +import com.google.crypto.tink.KeyTemplates; +import com.google.crypto.tink.KeysetHandle; import com.google.crypto.tink.PublicKeySign; import com.google.crypto.tink.internal.KeyTypeManager; import com.google.crypto.tink.proto.EcdsaKeyFormat; @@ -38,11 +40,14 @@ import java.util.Set; import java.util.TreeSet; import org.junit.Before; import org.junit.Test; +import org.junit.experimental.theories.DataPoints; +import org.junit.experimental.theories.FromDataPoints; +import org.junit.experimental.theories.Theories; +import org.junit.experimental.theories.Theory; import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; /** Unit tests for EcdsaSignKeyManager. */ -@RunWith(JUnit4.class) +@RunWith(Theories.class) public class EcdsaSignKeyManagerTest { private final EcdsaSignKeyManager manager = new EcdsaSignKeyManager(); private final KeyTypeManager.KeyFactory<EcdsaKeyFormat, EcdsaPrivateKey> factory = @@ -342,19 +347,25 @@ public class EcdsaSignKeyManagerTest { testKeyTemplateCompatible(manager, EcdsaSignKeyManager.rawEcdsaP256Template()); } - @Test - public void testKeyFormats() throws Exception { - factory.validateKeyFormat(factory.keyFormats().get("ECDSA_P256").keyFormat); - factory.validateKeyFormat(factory.keyFormats().get("ECDSA_P256_IEEE_P1363").keyFormat); - factory.validateKeyFormat(factory.keyFormats().get("ECDSA_P256_RAW").keyFormat); - factory.validateKeyFormat( - factory.keyFormats().get("ECDSA_P256_IEEE_P1363_WITHOUT_PREFIX").keyFormat); - - factory.validateKeyFormat(factory.keyFormats().get("ECDSA_P384_SHA384").keyFormat); - factory.validateKeyFormat(factory.keyFormats().get("ECDSA_P384_SHA512").keyFormat); - factory.validateKeyFormat(factory.keyFormats().get("ECDSA_P384_IEEE_P1363").keyFormat); + @DataPoints("templateNames") + public static final String[] KEY_TEMPLATES = + new String[] { + "ECDSA_P256", + "ECDSA_P256_IEEE_P1363", + "ECDSA_P256_RAW", + "ECDSA_P256_IEEE_P1363_WITHOUT_PREFIX", + "ECDSA_P384_SHA384", + "ECDSA_P384_SHA512", + "ECDSA_P384_IEEE_P1363", + "ECDSA_P521", + "ECDSA_P521_IEEE_P1363", + }; - factory.validateKeyFormat(factory.keyFormats().get("ECDSA_P521").keyFormat); - factory.validateKeyFormat(factory.keyFormats().get("ECDSA_P521_IEEE_P1363").keyFormat); + @Theory + public void testTemplates(@FromDataPoints("templateNames") String templateName) throws Exception { + KeysetHandle h = KeysetHandle.generateNew(KeyTemplates.get(templateName)); + assertThat(h.size()).isEqualTo(1); + assertThat(h.getAt(0).getKey().getParameters()) + .isEqualTo(KeyTemplates.get(templateName).toParameters()); } } diff --git a/java_src/src/test/java/com/google/crypto/tink/signature/Ed25519PrivateKeyManagerTest.java b/java_src/src/test/java/com/google/crypto/tink/signature/Ed25519PrivateKeyManagerTest.java index 996aab8c2..95324fb9e 100644 --- a/java_src/src/test/java/com/google/crypto/tink/signature/Ed25519PrivateKeyManagerTest.java +++ b/java_src/src/test/java/com/google/crypto/tink/signature/Ed25519PrivateKeyManagerTest.java @@ -21,6 +21,8 @@ import static com.google.crypto.tink.testing.KeyTypeManagerTestUtil.testKeyTempl import static org.junit.Assert.assertThrows; import com.google.crypto.tink.KeyTemplate; +import com.google.crypto.tink.KeyTemplates; +import com.google.crypto.tink.KeysetHandle; import com.google.crypto.tink.PublicKeySign; import com.google.crypto.tink.PublicKeyVerify; import com.google.crypto.tink.internal.KeyTypeManager; @@ -39,11 +41,14 @@ import java.util.Set; import java.util.TreeSet; import org.junit.Before; import org.junit.Test; +import org.junit.experimental.theories.DataPoints; +import org.junit.experimental.theories.FromDataPoints; +import org.junit.experimental.theories.Theories; +import org.junit.experimental.theories.Theory; import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; /** Unit tests for Ed25519PrivateKeyManager. */ -@RunWith(JUnit4.class) +@RunWith(Theories.class) public class Ed25519PrivateKeyManagerTest { private final Ed25519PrivateKeyManager manager = new Ed25519PrivateKeyManager(); private final KeyTypeManager.KeyFactory<Ed25519KeyFormat, Ed25519PrivateKey> factory = @@ -243,10 +248,17 @@ public class Ed25519PrivateKeyManagerTest { new ByteArrayInputStream(keyMaterial))); } - @Test - public void testKeyFormats() throws Exception { - factory.validateKeyFormat(factory.keyFormats().get("ED25519").keyFormat); - factory.validateKeyFormat(factory.keyFormats().get("ED25519_RAW").keyFormat); - factory.validateKeyFormat(factory.keyFormats().get("ED25519WithRawOutput").keyFormat); + @DataPoints("templateNames") + public static final String[] KEY_TEMPLATES = + new String[] { + "ED25519", "ED25519_RAW", "ED25519WithRawOutput", + }; + + @Theory + public void testTemplates(@FromDataPoints("templateNames") String templateName) throws Exception { + KeysetHandle h = KeysetHandle.generateNew(KeyTemplates.get(templateName)); + assertThat(h.size()).isEqualTo(1); + assertThat(h.getAt(0).getKey().getParameters()) + .isEqualTo(KeyTemplates.get(templateName).toParameters()); } } diff --git a/java_src/src/test/java/com/google/crypto/tink/signature/RsaSsaPkcs1SignKeyManagerTest.java b/java_src/src/test/java/com/google/crypto/tink/signature/RsaSsaPkcs1SignKeyManagerTest.java index 67b28e0be..3033ddf05 100644 --- a/java_src/src/test/java/com/google/crypto/tink/signature/RsaSsaPkcs1SignKeyManagerTest.java +++ b/java_src/src/test/java/com/google/crypto/tink/signature/RsaSsaPkcs1SignKeyManagerTest.java @@ -22,6 +22,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThrows; import com.google.crypto.tink.KeyTemplate; +import com.google.crypto.tink.KeyTemplates; import com.google.crypto.tink.KeysetHandle; import com.google.crypto.tink.PublicKeySign; import com.google.crypto.tink.PublicKeyVerify; @@ -49,11 +50,14 @@ import java.util.Set; import java.util.TreeSet; import org.junit.BeforeClass; import org.junit.Test; +import org.junit.experimental.theories.DataPoints; +import org.junit.experimental.theories.FromDataPoints; +import org.junit.experimental.theories.Theories; +import org.junit.experimental.theories.Theory; import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; /** Unit tests for RsaSsaPkcs1SignKeyManager. */ -@RunWith(JUnit4.class) +@RunWith(Theories.class) public class RsaSsaPkcs1SignKeyManagerTest { @BeforeClass @@ -356,16 +360,25 @@ public class RsaSsaPkcs1SignKeyManagerTest { () -> manager.getPrimitive(corruptedKey, PublicKeySign.class)); } - @Test - public void testKeyFormats() throws Exception { - factory.validateKeyFormat(factory.keyFormats().get("RSA_SSA_PKCS1_3072_SHA256_F4").keyFormat); - factory.validateKeyFormat( - factory.keyFormats().get("RSA_SSA_PKCS1_3072_SHA256_F4_RAW").keyFormat); - - factory.validateKeyFormat(factory.keyFormats().get("RSA_SSA_PKCS1_4096_SHA512_F4").keyFormat); - factory.validateKeyFormat( - factory.keyFormats().get("RSA_SSA_PKCS1_4096_SHA512_F4_RAW").keyFormat); - factory.validateKeyFormat( - factory.keyFormats().get("RSA_SSA_PKCS1_3072_SHA256_F4_WITHOUT_PREFIX").keyFormat); + @DataPoints("templateNames") + public static final String[] KEY_TEMPLATES = + new String[] { + "RSA_SSA_PKCS1_3072_SHA256_F4", + "RSA_SSA_PKCS1_3072_SHA256_F4_RAW", + "RSA_SSA_PKCS1_4096_SHA512_F4", + "RSA_SSA_PKCS1_4096_SHA512_F4_RAW", + "RSA_SSA_PKCS1_3072_SHA256_F4_WITHOUT_PREFIX" + }; + + @Theory + public void testTemplates(@FromDataPoints("templateNames") String templateName) throws Exception { + if (TestUtil.isTsan()) { + // factory.createKey is too slow in Tsan. + return; + } + KeysetHandle h = KeysetHandle.generateNew(KeyTemplates.get(templateName)); + assertThat(h.size()).isEqualTo(1); + assertThat(h.getAt(0).getKey().getParameters()) + .isEqualTo(KeyTemplates.get(templateName).toParameters()); } } diff --git a/java_src/src/test/java/com/google/crypto/tink/signature/RsaSsaPssSignKeyManagerTest.java b/java_src/src/test/java/com/google/crypto/tink/signature/RsaSsaPssSignKeyManagerTest.java index 4bfc02988..10a7d2bab 100644 --- a/java_src/src/test/java/com/google/crypto/tink/signature/RsaSsaPssSignKeyManagerTest.java +++ b/java_src/src/test/java/com/google/crypto/tink/signature/RsaSsaPssSignKeyManagerTest.java @@ -22,6 +22,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThrows; import com.google.crypto.tink.KeyTemplate; +import com.google.crypto.tink.KeyTemplates; import com.google.crypto.tink.KeysetHandle; import com.google.crypto.tink.PublicKeySign; import com.google.crypto.tink.PublicKeyVerify; @@ -49,11 +50,14 @@ import java.util.Set; import java.util.TreeSet; import org.junit.BeforeClass; import org.junit.Test; +import org.junit.experimental.theories.DataPoints; +import org.junit.experimental.theories.FromDataPoints; +import org.junit.experimental.theories.Theories; +import org.junit.experimental.theories.Theory; import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; /** Unit tests for RsaSsaPssSignKeyManager. */ -@RunWith(JUnit4.class) +@RunWith(Theories.class) public class RsaSsaPssSignKeyManagerTest { private final RsaSsaPssSignKeyManager manager = new RsaSsaPssSignKeyManager(); private final KeyTypeManager.KeyFactory<RsaSsaPssKeyFormat, RsaSsaPssPrivateKey> factory = @@ -410,16 +414,26 @@ public class RsaSsaPssSignKeyManagerTest { testKeyTemplateCompatible(manager, RsaSsaPssSignKeyManager.rawRsa4096PssSha512F4Template()); } - @Test - public void testKeyFormats() throws Exception { - factory.validateKeyFormat(factory.keyFormats().get("RSA_SSA_PSS_3072_SHA256_F4").keyFormat); - factory.validateKeyFormat(factory.keyFormats().get("RSA_SSA_PSS_3072_SHA256_F4_RAW").keyFormat); - factory.validateKeyFormat( - factory.keyFormats().get("RSA_SSA_PSS_3072_SHA256_SHA256_32_F4").keyFormat); - - factory.validateKeyFormat(factory.keyFormats().get("RSA_SSA_PSS_4096_SHA512_F4").keyFormat); - factory.validateKeyFormat(factory.keyFormats().get("RSA_SSA_PSS_4096_SHA512_F4_RAW").keyFormat); - factory.validateKeyFormat( - factory.keyFormats().get("RSA_SSA_PSS_4096_SHA512_SHA512_64_F4").keyFormat); + @DataPoints("templateNames") + public static final String[] KEY_TEMPLATES = + new String[] { + "RSA_SSA_PSS_3072_SHA256_F4", + "RSA_SSA_PSS_3072_SHA256_F4_RAW", + "RSA_SSA_PSS_3072_SHA256_SHA256_32_F4", + "RSA_SSA_PSS_4096_SHA512_F4", + "RSA_SSA_PSS_4096_SHA512_F4_RAW", + "RSA_SSA_PSS_4096_SHA512_SHA512_64_F4", + }; + + @Theory + public void testTemplates(@FromDataPoints("templateNames") String templateName) throws Exception { + if (TestUtil.isTsan()) { + // factory.createKey is too slow in Tsan. + return; + } + KeysetHandle h = KeysetHandle.generateNew(KeyTemplates.get(templateName)); + assertThat(h.size()).isEqualTo(1); + assertThat(h.getAt(0).getKey().getParameters()) + .isEqualTo(KeyTemplates.get(templateName).toParameters()); } } |