aboutsummaryrefslogtreecommitdiff
path: root/java_src/src/test/java/com/google/crypto/tink
diff options
context:
space:
mode:
authorioannanedelcu <ioannanedelcu@google.com>2023-07-05 03:51:51 -0700
committerCopybara-Service <copybara-worker@google.com>2023-07-05 03:53:20 -0700
commit1001873facdce717e6cf510082c70325f6e98102 (patch)
treefcc9f1bb20e28fe388ff262896e83e0d00fd08e9 /java_src/src/test/java/com/google/crypto/tink
parentd14920fb36ff6c5183b510cc6c396498d1280956 (diff)
downloadtink-1001873facdce717e6cf510082c70325f6e98102.tar.gz
Add EciesParameters class in Java.
PiperOrigin-RevId: 545623249
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/BUILD.bazel19
-rw-r--r--java_src/src/test/java/com/google/crypto/tink/hybrid/EciesParametersTest.java525
2 files changed, 544 insertions, 0 deletions
diff --git a/java_src/src/test/java/com/google/crypto/tink/hybrid/BUILD.bazel b/java_src/src/test/java/com/google/crypto/tink/hybrid/BUILD.bazel
index 80bb9f5bf..3f0091afa 100644
--- a/java_src/src/test/java/com/google/crypto/tink/hybrid/BUILD.bazel
+++ b/java_src/src/test/java/com/google/crypto/tink/hybrid/BUILD.bazel
@@ -355,3 +355,22 @@ java_test(
"@maven//:junit_junit",
],
)
+
+java_test(
+ name = "EciesParametersTest",
+ size = "small",
+ srcs = ["EciesParametersTest.java"],
+ deps = [
+ "//src/main/java/com/google/crypto/tink:parameters",
+ "//src/main/java/com/google/crypto/tink/aead:aes_ctr_hmac_aead_parameters",
+ "//src/main/java/com/google/crypto/tink/aead:aes_gcm_parameters",
+ "//src/main/java/com/google/crypto/tink/aead:cha_cha20_poly1305_parameters",
+ "//src/main/java/com/google/crypto/tink/aead:x_cha_cha20_poly1305_parameters",
+ "//src/main/java/com/google/crypto/tink/daead:aes_siv_parameters",
+ "//src/main/java/com/google/crypto/tink/hybrid:ecies_parameters",
+ "//src/main/java/com/google/crypto/tink/subtle:hex",
+ "//src/main/java/com/google/crypto/tink/util:bytes",
+ "@maven//:com_google_truth_truth",
+ "@maven//:junit_junit",
+ ],
+)
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
new file mode 100644
index 000000000..2ec5bc8ff
--- /dev/null
+++ b/java_src/src/test/java/com/google/crypto/tink/hybrid/EciesParametersTest.java
@@ -0,0 +1,525 @@
+// Copyright 2023 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package com.google.crypto.tink.hybrid;
+
+import static com.google.common.truth.Truth.assertThat;
+import static java.nio.charset.StandardCharsets.UTF_8;
+import static org.junit.Assert.assertThrows;
+
+import com.google.crypto.tink.Parameters;
+import com.google.crypto.tink.aead.AesCtrHmacAeadParameters;
+import com.google.crypto.tink.aead.AesGcmParameters;
+import com.google.crypto.tink.aead.ChaCha20Poly1305Parameters;
+import com.google.crypto.tink.aead.XChaCha20Poly1305Parameters;
+import com.google.crypto.tink.daead.AesSivParameters;
+import com.google.crypto.tink.subtle.Hex;
+import com.google.crypto.tink.util.Bytes;
+import java.security.GeneralSecurityException;
+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;
+
+@RunWith(Theories.class)
+public final class EciesParametersTest {
+
+ private static final Bytes SALT = Bytes.copyFrom(Hex.decode("2023af"));
+
+ @DataPoints("curveTypes")
+ public static final EciesParameters.CurveType[] CURVE_TYPES =
+ new EciesParameters.CurveType[] {
+ EciesParameters.CurveType.NIST_P256,
+ EciesParameters.CurveType.NIST_P384,
+ EciesParameters.CurveType.NIST_P521,
+ EciesParameters.CurveType.X25519
+ };
+
+ @DataPoints("hashTypes")
+ public static final EciesParameters.HashType[] HASH_TYPES =
+ new EciesParameters.HashType[] {
+ EciesParameters.HashType.SHA1,
+ EciesParameters.HashType.SHA224,
+ EciesParameters.HashType.SHA256,
+ EciesParameters.HashType.SHA384,
+ EciesParameters.HashType.SHA512,
+ };
+
+ @DataPoints("pointFormats")
+ public static final EciesParameters.PointFormat[] POINT_FORMATS =
+ new EciesParameters.PointFormat[] {
+ EciesParameters.PointFormat.COMPRESSED,
+ EciesParameters.PointFormat.UNCOMPRESSED,
+ EciesParameters.PointFormat.LEGACY_UNCOMPRESSED,
+ };
+
+ @DataPoints("variants")
+ public static final EciesParameters.Variant[] VARIANTS =
+ new EciesParameters.Variant[] {
+ EciesParameters.Variant.TINK,
+ EciesParameters.Variant.CRUNCHY,
+ EciesParameters.Variant.NO_PREFIX,
+ };
+
+ @Theory
+ public void buildParametersWithAesGcm_hasExpectedValues(
+ @FromDataPoints("variants") EciesParameters.Variant variant,
+ @FromDataPoints("hashTypes") EciesParameters.HashType hashType,
+ @FromDataPoints("curveTypes") EciesParameters.CurveType curveType,
+ @FromDataPoints("pointFormats") EciesParameters.PointFormat pointFormat)
+ throws Exception {
+ Parameters aesGcmParameters =
+ AesGcmParameters.builder()
+ .setKeySizeBytes(16)
+ .setIvSizeBytes(16)
+ .setTagSizeBytes(16)
+ .setVariant(AesGcmParameters.Variant.NO_PREFIX)
+ .build();
+
+ EciesParameters params =
+ EciesParameters.builder()
+ .setCurveType(curveType)
+ .setHashType(hashType)
+ .setPointFormat(pointFormat)
+ .setVariant(variant)
+ .setDemParameters(aesGcmParameters)
+ .setSalt(SALT)
+ .build();
+
+ assertThat(params.getVariant()).isEqualTo(variant);
+ assertThat(params.getCurveType()).isEqualTo(curveType);
+ assertThat(params.getHashType()).isEqualTo(hashType);
+ assertThat(params.getPointFormat()).isEqualTo(pointFormat);
+ assertThat(params.getDemParameters()).isEqualTo(aesGcmParameters);
+ assertThat(params.getSalt()).isEqualTo(SALT);
+ }
+
+ @Test
+ public void buildWithAesCtrHmacAead_succeeds() throws Exception {
+ Parameters aesCtrHmacAeadParameters =
+ AesCtrHmacAeadParameters.builder()
+ .setAesKeySizeBytes(16)
+ .setHmacKeySizeBytes(16)
+ .setIvSizeBytes(16)
+ .setTagSizeBytes(21)
+ .setHashType(AesCtrHmacAeadParameters.HashType.SHA256)
+ .setVariant(AesCtrHmacAeadParameters.Variant.NO_PREFIX)
+ .build();
+
+ EciesParameters params =
+ EciesParameters.builder()
+ .setCurveType(EciesParameters.CurveType.NIST_P521)
+ .setHashType(EciesParameters.HashType.SHA512)
+ .setPointFormat(EciesParameters.PointFormat.UNCOMPRESSED)
+ .setVariant(EciesParameters.Variant.TINK)
+ .setDemParameters(aesCtrHmacAeadParameters)
+ .setSalt(SALT)
+ .build();
+
+ assertThat(params.getDemParameters()).isEqualTo(aesCtrHmacAeadParameters);
+ }
+
+ @Theory
+ public void buildParametersWithXChaCha20Poly1305_succeeds() throws Exception {
+ Parameters xChaCha20Poly1305Parameters = XChaCha20Poly1305Parameters.create();
+
+ EciesParameters params =
+ EciesParameters.builder()
+ .setCurveType(EciesParameters.CurveType.NIST_P256)
+ .setHashType(EciesParameters.HashType.SHA256)
+ .setPointFormat(EciesParameters.PointFormat.COMPRESSED)
+ .setVariant(EciesParameters.Variant.CRUNCHY)
+ .setDemParameters(xChaCha20Poly1305Parameters)
+ .setSalt(SALT)
+ .build();
+
+ assertThat(params.getDemParameters()).isEqualTo(xChaCha20Poly1305Parameters);
+ }
+
+ @Theory
+ public void buildParametersWithAesSiv_succeeds() throws Exception {
+ Parameters aesSivParameters = AesSivParameters.builder().setKeySizeBytes(32).build();
+
+ EciesParameters params =
+ EciesParameters.builder()
+ .setCurveType(EciesParameters.CurveType.NIST_P256)
+ .setHashType(EciesParameters.HashType.SHA256)
+ .setPointFormat(EciesParameters.PointFormat.UNCOMPRESSED)
+ .setVariant(EciesParameters.Variant.NO_PREFIX)
+ .setDemParameters(aesSivParameters)
+ .setSalt(SALT)
+ .build();
+
+ assertThat(params.getDemParameters()).isEqualTo(aesSivParameters);
+ }
+
+ @Test
+ public void buildWithoutSettingSalt_succeeds() throws Exception {
+ EciesParameters parameters =
+ EciesParameters.builder()
+ .setCurveType(EciesParameters.CurveType.NIST_P256)
+ .setHashType(EciesParameters.HashType.SHA256)
+ .setPointFormat(EciesParameters.PointFormat.UNCOMPRESSED)
+ .setVariant(EciesParameters.Variant.NO_PREFIX)
+ .setDemParameters(XChaCha20Poly1305Parameters.create())
+ .build();
+
+ assertThat(parameters.getSalt()).isNull();
+ }
+
+ @Test
+ public void buildWithEmptySalt_succeeds() throws Exception {
+ EciesParameters parameters =
+ EciesParameters.builder()
+ .setCurveType(EciesParameters.CurveType.NIST_P256)
+ .setHashType(EciesParameters.HashType.SHA256)
+ .setPointFormat(EciesParameters.PointFormat.UNCOMPRESSED)
+ .setVariant(EciesParameters.Variant.NO_PREFIX)
+ .setDemParameters(XChaCha20Poly1305Parameters.create())
+ .setSalt(Bytes.copyFrom("".getBytes(UTF_8)))
+ .build();
+
+ assertThat(parameters.getSalt()).isNull();
+ }
+
+ @Test
+ public void clearSaltWithEmptyString_succeeds() throws Exception {
+ EciesParameters parameters =
+ EciesParameters.builder()
+ .setCurveType(EciesParameters.CurveType.NIST_P256)
+ .setHashType(EciesParameters.HashType.SHA256)
+ .setPointFormat(EciesParameters.PointFormat.UNCOMPRESSED)
+ .setVariant(EciesParameters.Variant.NO_PREFIX)
+ .setDemParameters(XChaCha20Poly1305Parameters.create())
+ .setSalt(Bytes.copyFrom("Some Salt".getBytes(UTF_8)))
+ .setSalt(Bytes.copyFrom("".getBytes(UTF_8)))
+ .build();
+
+ assertThat(parameters.getSalt()).isNull();
+ }
+
+ @Theory
+ public void buildWithDefaultVariant_hasNoPrefix() throws Exception {
+ Parameters demParameters = XChaCha20Poly1305Parameters.create();
+ EciesParameters params =
+ EciesParameters.builder()
+ .setCurveType(EciesParameters.CurveType.NIST_P256)
+ .setHashType(EciesParameters.HashType.SHA256)
+ .setPointFormat(EciesParameters.PointFormat.UNCOMPRESSED)
+ .setVariant(EciesParameters.Variant.NO_PREFIX)
+ .setDemParameters(demParameters)
+ .setSalt(SALT)
+ .build();
+
+ assertThat(params.getVariant()).isEqualTo(EciesParameters.Variant.NO_PREFIX);
+ }
+
+ @Test
+ public void buildWithoutCurveType_fails() throws Exception {
+ EciesParameters.Builder builder =
+ EciesParameters.builder()
+ .setHashType(EciesParameters.HashType.SHA256)
+ .setPointFormat(EciesParameters.PointFormat.UNCOMPRESSED)
+ .setVariant(EciesParameters.Variant.NO_PREFIX)
+ .setDemParameters(XChaCha20Poly1305Parameters.create());
+
+ assertThrows(GeneralSecurityException.class, builder::build);
+ }
+
+ @Test
+ public void buildWithoutHashType_fails() throws Exception {
+ EciesParameters.Builder builder =
+ EciesParameters.builder()
+ .setCurveType(EciesParameters.CurveType.NIST_P256)
+ .setPointFormat(EciesParameters.PointFormat.UNCOMPRESSED)
+ .setVariant(EciesParameters.Variant.NO_PREFIX)
+ .setDemParameters(XChaCha20Poly1305Parameters.create());
+
+ assertThrows(GeneralSecurityException.class, builder::build);
+ }
+
+ @Test
+ public void buildWithoutPointFormat_fails() throws Exception {
+ EciesParameters.Builder builder =
+ EciesParameters.builder()
+ .setHashType(EciesParameters.HashType.SHA256)
+ .setCurveType(EciesParameters.CurveType.NIST_P256)
+ .setVariant(EciesParameters.Variant.NO_PREFIX)
+ .setDemParameters(XChaCha20Poly1305Parameters.create());
+
+ assertThrows(GeneralSecurityException.class, builder::build);
+ }
+
+ @Test
+ public void buildWithoutDemParameters_fails() throws Exception {
+ EciesParameters.Builder builder =
+ EciesParameters.builder()
+ .setHashType(EciesParameters.HashType.SHA256)
+ .setCurveType(EciesParameters.CurveType.NIST_P256)
+ .setPointFormat(EciesParameters.PointFormat.COMPRESSED)
+ .setVariant(EciesParameters.Variant.NO_PREFIX);
+
+ assertThrows(GeneralSecurityException.class, builder::build);
+ }
+
+ @Test
+ public void sethUnsupportedDemParameters_fails() throws Exception {
+ assertThrows(
+ GeneralSecurityException.class,
+ () ->
+ EciesParameters.builder()
+ .setHashType(EciesParameters.HashType.SHA256)
+ .setCurveType(EciesParameters.CurveType.NIST_P256)
+ .setPointFormat(EciesParameters.PointFormat.COMPRESSED)
+ .setVariant(EciesParameters.Variant.NO_PREFIX)
+ .setDemParameters(ChaCha20Poly1305Parameters.create())
+ .build());
+ }
+
+ @Test
+ public void setDemParametersWithIdRequirement_fails() throws Exception {
+ assertThrows(
+ GeneralSecurityException.class,
+ () ->
+ EciesParameters.builder()
+ .setHashType(EciesParameters.HashType.SHA256)
+ .setCurveType(EciesParameters.CurveType.NIST_P256)
+ .setPointFormat(EciesParameters.PointFormat.COMPRESSED)
+ .setVariant(EciesParameters.Variant.NO_PREFIX)
+ .setDemParameters(
+ XChaCha20Poly1305Parameters.create(XChaCha20Poly1305Parameters.Variant.TINK))
+ .build());
+ }
+
+ @Test
+ public void buildWithVariantSetToNull_fails() throws Exception {
+ EciesParameters.Builder builder =
+ EciesParameters.builder()
+ .setHashType(EciesParameters.HashType.SHA256)
+ .setCurveType(EciesParameters.CurveType.NIST_P256)
+ .setPointFormat(EciesParameters.PointFormat.COMPRESSED)
+ .setDemParameters(XChaCha20Poly1305Parameters.create())
+ .setVariant(null);
+
+ assertThrows(GeneralSecurityException.class, builder::build);
+ }
+
+ @Test
+ public void buildWithNoPrefix_doesNotHaveIdRequirement() throws Exception {
+ EciesParameters noPrefixParams =
+ EciesParameters.builder()
+ .setCurveType(EciesParameters.CurveType.NIST_P256)
+ .setHashType(EciesParameters.HashType.SHA256)
+ .setPointFormat(EciesParameters.PointFormat.UNCOMPRESSED)
+ .setVariant(EciesParameters.Variant.NO_PREFIX)
+ .setDemParameters(XChaCha20Poly1305Parameters.create())
+ .build();
+
+ assertThat(noPrefixParams.hasIdRequirement()).isFalse();
+ }
+
+ @Test
+ public void buildWithTink_hasIdRequirement() throws Exception {
+ EciesParameters tinkParams =
+ EciesParameters.builder()
+ .setCurveType(EciesParameters.CurveType.NIST_P256)
+ .setHashType(EciesParameters.HashType.SHA256)
+ .setPointFormat(EciesParameters.PointFormat.UNCOMPRESSED)
+ .setVariant(EciesParameters.Variant.TINK)
+ .setDemParameters(XChaCha20Poly1305Parameters.create())
+ .build();
+
+ assertThat(tinkParams.hasIdRequirement()).isTrue();
+ }
+
+ @Test
+ public void buildWithCrunchy_hasIdRequirement() throws Exception {
+
+ EciesParameters crunchyParams =
+ EciesParameters.builder()
+ .setCurveType(EciesParameters.CurveType.NIST_P256)
+ .setHashType(EciesParameters.HashType.SHA256)
+ .setPointFormat(EciesParameters.PointFormat.UNCOMPRESSED)
+ .setVariant(EciesParameters.Variant.CRUNCHY)
+ .setDemParameters(XChaCha20Poly1305Parameters.create())
+ .build();
+
+ assertThat(crunchyParams.hasIdRequirement()).isTrue();
+ }
+
+ @Test
+ public void testEqualsAndEqualHashCode() throws Exception {
+ EciesParameters params =
+ EciesParameters.builder()
+ .setCurveType(EciesParameters.CurveType.NIST_P256)
+ .setHashType(EciesParameters.HashType.SHA256)
+ .setPointFormat(EciesParameters.PointFormat.UNCOMPRESSED)
+ .setVariant(EciesParameters.Variant.NO_PREFIX)
+ .setDemParameters(XChaCha20Poly1305Parameters.create())
+ .setSalt(SALT)
+ .build();
+ EciesParameters duplicateParams =
+ EciesParameters.builder()
+ .setCurveType(EciesParameters.CurveType.NIST_P256)
+ .setHashType(EciesParameters.HashType.SHA256)
+ .setPointFormat(EciesParameters.PointFormat.UNCOMPRESSED)
+ .setVariant(EciesParameters.Variant.NO_PREFIX)
+ .setDemParameters(XChaCha20Poly1305Parameters.create())
+ .setSalt(SALT)
+ .build();
+
+ assertThat(params).isEqualTo(duplicateParams);
+ assertThat(params.hashCode()).isEqualTo(duplicateParams.hashCode());
+ }
+
+ @Test
+ public void parametersWithDifferentVariants_areNotEqual() throws Exception {
+ EciesParameters crunchyParams =
+ EciesParameters.builder()
+ .setCurveType(EciesParameters.CurveType.NIST_P256)
+ .setHashType(EciesParameters.HashType.SHA256)
+ .setPointFormat(EciesParameters.PointFormat.UNCOMPRESSED)
+ .setVariant(EciesParameters.Variant.CRUNCHY)
+ .setDemParameters(XChaCha20Poly1305Parameters.create())
+ .build();
+
+ EciesParameters tinkParams =
+ EciesParameters.builder()
+ .setCurveType(EciesParameters.CurveType.NIST_P256)
+ .setHashType(EciesParameters.HashType.SHA256)
+ .setPointFormat(EciesParameters.PointFormat.UNCOMPRESSED)
+ .setVariant(EciesParameters.Variant.TINK)
+ .setDemParameters(XChaCha20Poly1305Parameters.create())
+ .build();
+
+ assertThat(crunchyParams).isNotEqualTo(tinkParams);
+ assertThat(crunchyParams.hashCode()).isNotEqualTo(tinkParams.hashCode());
+ }
+
+ @Test
+ public void parametersWithDifferentCurveTypes_areNotEqual() throws Exception {
+ EciesParameters p256Params =
+ EciesParameters.builder()
+ .setCurveType(EciesParameters.CurveType.NIST_P256)
+ .setHashType(EciesParameters.HashType.SHA256)
+ .setPointFormat(EciesParameters.PointFormat.UNCOMPRESSED)
+ .setDemParameters(XChaCha20Poly1305Parameters.create())
+ .build();
+
+ EciesParameters p521Params =
+ EciesParameters.builder()
+ .setCurveType(EciesParameters.CurveType.NIST_P521)
+ .setHashType(EciesParameters.HashType.SHA256)
+ .setPointFormat(EciesParameters.PointFormat.UNCOMPRESSED)
+ .setDemParameters(XChaCha20Poly1305Parameters.create())
+ .build();
+
+ assertThat(p256Params).isNotEqualTo(p521Params);
+ assertThat(p256Params.hashCode()).isNotEqualTo(p521Params.hashCode());
+ }
+
+ @Test
+ public void parametersWithDifferentHashTypes_areNotEqual() throws Exception {
+ EciesParameters sha256Params =
+ EciesParameters.builder()
+ .setCurveType(EciesParameters.CurveType.NIST_P256)
+ .setHashType(EciesParameters.HashType.SHA256)
+ .setPointFormat(EciesParameters.PointFormat.UNCOMPRESSED)
+ .setDemParameters(XChaCha20Poly1305Parameters.create())
+ .build();
+
+ EciesParameters sha512Params =
+ EciesParameters.builder()
+ .setCurveType(EciesParameters.CurveType.NIST_P256)
+ .setHashType(EciesParameters.HashType.SHA512)
+ .setPointFormat(EciesParameters.PointFormat.UNCOMPRESSED)
+ .setDemParameters(XChaCha20Poly1305Parameters.create())
+ .build();
+
+ assertThat(sha256Params).isNotEqualTo(sha512Params);
+ assertThat(sha256Params.hashCode()).isNotEqualTo(sha512Params.hashCode());
+ }
+
+ @Test
+ public void parametersWithDifferenPointFormats_areNotEqual() throws Exception {
+ EciesParameters compressedParams =
+ EciesParameters.builder()
+ .setCurveType(EciesParameters.CurveType.NIST_P256)
+ .setHashType(EciesParameters.HashType.SHA256)
+ .setPointFormat(EciesParameters.PointFormat.COMPRESSED)
+ .setDemParameters(XChaCha20Poly1305Parameters.create())
+ .build();
+
+ EciesParameters uncompressedParams =
+ EciesParameters.builder()
+ .setCurveType(EciesParameters.CurveType.NIST_P256)
+ .setHashType(EciesParameters.HashType.SHA256)
+ .setPointFormat(EciesParameters.PointFormat.UNCOMPRESSED)
+ .setDemParameters(XChaCha20Poly1305Parameters.create())
+ .build();
+
+ assertThat(compressedParams).isNotEqualTo(uncompressedParams);
+ assertThat(compressedParams.hashCode()).isNotEqualTo(uncompressedParams.hashCode());
+ }
+
+ @Test
+ public void parametersWithDifferentDemParameters_areNotEqual() throws Exception {
+ EciesParameters aesSivParams =
+ EciesParameters.builder()
+ .setCurveType(EciesParameters.CurveType.NIST_P256)
+ .setHashType(EciesParameters.HashType.SHA256)
+ .setPointFormat(EciesParameters.PointFormat.UNCOMPRESSED)
+ .setDemParameters(AesSivParameters.builder().setKeySizeBytes(32).build())
+ .build();
+
+ EciesParameters xChaCha20Poly1305Params =
+ EciesParameters.builder()
+ .setCurveType(EciesParameters.CurveType.NIST_P256)
+ .setHashType(EciesParameters.HashType.SHA256)
+ .setPointFormat(EciesParameters.PointFormat.UNCOMPRESSED)
+ .setDemParameters(XChaCha20Poly1305Parameters.create())
+ .build();
+
+ assertThat(aesSivParams).isNotEqualTo(xChaCha20Poly1305Params);
+ assertThat(aesSivParams.hashCode()).isNotEqualTo(xChaCha20Poly1305Params.hashCode());
+ }
+
+ @Test
+ public void parametersWithDifferentSalts_areNotEqual() throws Exception {
+ EciesParameters nonEmptySaltParams =
+ EciesParameters.builder()
+ .setCurveType(EciesParameters.CurveType.NIST_P256)
+ .setHashType(EciesParameters.HashType.SHA256)
+ .setPointFormat(EciesParameters.PointFormat.UNCOMPRESSED)
+ .setDemParameters(XChaCha20Poly1305Parameters.create())
+ .setSalt(SALT)
+ .build();
+
+ EciesParameters emptySaltParams =
+ EciesParameters.builder()
+ .setCurveType(EciesParameters.CurveType.NIST_P256)
+ .setHashType(EciesParameters.HashType.SHA256)
+ .setPointFormat(EciesParameters.PointFormat.UNCOMPRESSED)
+ .setDemParameters(XChaCha20Poly1305Parameters.create())
+ .setSalt(Bytes.copyFrom("".getBytes(UTF_8)))
+ .build();
+
+ assertThat(emptySaltParams).isNotEqualTo(nonEmptySaltParams);
+ assertThat(emptySaltParams.hashCode()).isNotEqualTo(nonEmptySaltParams.hashCode());
+ }
+}