aboutsummaryrefslogtreecommitdiff
path: root/java_src/src/test/java/com/google/crypto/tink
diff options
context:
space:
mode:
authorioannanedelcu <ioannanedelcu@google.com>2023-07-05 04:54:09 -0700
committerCopybara-Service <copybara-worker@google.com>2023-07-05 04:55:09 -0700
commit40606fd99b1b0d75f176e7a59a4faae4c229126b (patch)
tree11b540b8e81d01187a414556d455f108248f5cbe /java_src/src/test/java/com/google/crypto/tink
parentc4f961f0a2e1433089c776710f048fe0b1440c6b (diff)
downloadtink-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.java52
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,
() ->