diff options
author | ioannanedelcu <ioannanedelcu@google.com> | 2023-07-05 04:54:09 -0700 |
---|---|---|
committer | Copybara-Service <copybara-worker@google.com> | 2023-07-05 04:55:09 -0700 |
commit | 40606fd99b1b0d75f176e7a59a4faae4c229126b (patch) | |
tree | 11b540b8e81d01187a414556d455f108248f5cbe /java_src/src/test/java/com/google/crypto/tink | |
parent | c4f961f0a2e1433089c776710f048fe0b1440c6b (diff) | |
download | tink-40606fd99b1b0d75f176e7a59a4faae4c229126b.tar.gz |
Check that X25519 only accepts compressed elliptic curve points.
PiperOrigin-RevId: 545634490
Diffstat (limited to 'java_src/src/test/java/com/google/crypto/tink')
-rw-r--r-- | java_src/src/test/java/com/google/crypto/tink/hybrid/EciesParametersTest.java | 52 |
1 files changed, 45 insertions, 7 deletions
diff --git a/java_src/src/test/java/com/google/crypto/tink/hybrid/EciesParametersTest.java b/java_src/src/test/java/com/google/crypto/tink/hybrid/EciesParametersTest.java index 2ec5bc8ff..37ec99156 100644 --- a/java_src/src/test/java/com/google/crypto/tink/hybrid/EciesParametersTest.java +++ b/java_src/src/test/java/com/google/crypto/tink/hybrid/EciesParametersTest.java @@ -42,12 +42,11 @@ public final class EciesParametersTest { private static final Bytes SALT = Bytes.copyFrom(Hex.decode("2023af")); @DataPoints("curveTypes") - public static final EciesParameters.CurveType[] CURVE_TYPES = + public static final EciesParameters.CurveType[] NIST_CURVE_TYPES = new EciesParameters.CurveType[] { EciesParameters.CurveType.NIST_P256, EciesParameters.CurveType.NIST_P384, EciesParameters.CurveType.NIST_P521, - EciesParameters.CurveType.X25519 }; @DataPoints("hashTypes") @@ -77,7 +76,7 @@ public final class EciesParametersTest { }; @Theory - public void buildParametersWithAesGcm_hasExpectedValues( + public void buildWithNistCurvesAndAesGcmDem_hasExpectedValues( @FromDataPoints("variants") EciesParameters.Variant variant, @FromDataPoints("hashTypes") EciesParameters.HashType hashType, @FromDataPoints("curveTypes") EciesParameters.CurveType curveType, @@ -110,7 +109,7 @@ public final class EciesParametersTest { } @Test - public void buildWithAesCtrHmacAead_succeeds() throws Exception { + public void buildWithAesCtrHmacAeadDem_succeeds() throws Exception { Parameters aesCtrHmacAeadParameters = AesCtrHmacAeadParameters.builder() .setAesKeySizeBytes(16) @@ -135,7 +134,7 @@ public final class EciesParametersTest { } @Theory - public void buildParametersWithXChaCha20Poly1305_succeeds() throws Exception { + public void buildWithXChaCha20Poly1305Dem_succeeds() throws Exception { Parameters xChaCha20Poly1305Parameters = XChaCha20Poly1305Parameters.create(); EciesParameters params = @@ -152,7 +151,7 @@ public final class EciesParametersTest { } @Theory - public void buildParametersWithAesSiv_succeeds() throws Exception { + public void buildWithAesSivDem_succeeds() throws Exception { Parameters aesSivParameters = AesSivParameters.builder().setKeySizeBytes(32).build(); EciesParameters params = @@ -168,6 +167,45 @@ public final class EciesParametersTest { assertThat(params.getDemParameters()).isEqualTo(aesSivParameters); } + @Theory + public void buildWithX25519_succeeds( + @FromDataPoints("variants") EciesParameters.Variant variant, + @FromDataPoints("hashTypes") EciesParameters.HashType hashType) + throws Exception { + Parameters xChaCha20Poly1305Parameters = XChaCha20Poly1305Parameters.create(); + + EciesParameters params = + EciesParameters.builder() + .setCurveType(EciesParameters.CurveType.X25519) + .setHashType(hashType) + .setPointFormat(EciesParameters.PointFormat.COMPRESSED) + .setVariant(variant) + .setDemParameters(xChaCha20Poly1305Parameters) + .setSalt(SALT) + .build(); + + assertThat(params.getCurveType()).isEqualTo(EciesParameters.CurveType.X25519); + assertThat(params.getPointFormat()).isEqualTo(EciesParameters.PointFormat.COMPRESSED); + assertThat(params.getHashType()).isEqualTo(hashType); + assertThat(params.getVariant()).isEqualTo(variant); + } + + @Theory + public void buildWithX25519Uncompressed_fails() throws Exception { + Parameters xChaCha20Poly1305Parameters = XChaCha20Poly1305Parameters.create(); + + EciesParameters.Builder builder = + EciesParameters.builder() + .setCurveType(EciesParameters.CurveType.X25519) + .setHashType(EciesParameters.HashType.SHA256) + .setPointFormat(EciesParameters.PointFormat.UNCOMPRESSED) + .setVariant(EciesParameters.Variant.NO_PREFIX) + .setDemParameters(xChaCha20Poly1305Parameters) + .setSalt(SALT); + + assertThrows(GeneralSecurityException.class, builder::build); + } + @Test public void buildWithoutSettingSalt_succeeds() throws Exception { EciesParameters parameters = @@ -278,7 +316,7 @@ public final class EciesParametersTest { } @Test - public void sethUnsupportedDemParameters_fails() throws Exception { + public void setUnsupportedDemParameters_fails() throws Exception { assertThrows( GeneralSecurityException.class, () -> |