1 // Copyright 2023 Google LLC 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 // 15 //////////////////////////////////////////////////////////////////////////////// 16 17 package com.google.crypto.tink.signature; 18 19 import static com.google.common.truth.Truth.assertThat; 20 21 import org.junit.Test; 22 import org.junit.runner.RunWith; 23 import org.junit.runners.JUnit4; 24 25 @RunWith(JUnit4.class) 26 public final class Ed25519ParametersTest { 27 private static final Ed25519Parameters.Variant NO_PREFIX = Ed25519Parameters.Variant.NO_PREFIX; 28 private static final Ed25519Parameters.Variant TINK = Ed25519Parameters.Variant.TINK; 29 private static final Ed25519Parameters.Variant CRUNCHY = Ed25519Parameters.Variant.CRUNCHY; 30 private static final Ed25519Parameters.Variant LEGACY = Ed25519Parameters.Variant.LEGACY; 31 32 @Test buildParametersAndGetProperties_noPrefix()33 public void buildParametersAndGetProperties_noPrefix() throws Exception { 34 Ed25519Parameters parameters = Ed25519Parameters.create(); 35 assertThat(parameters.getVariant()).isEqualTo(NO_PREFIX); 36 assertThat(parameters.hasIdRequirement()).isFalse(); 37 } 38 39 @Test buildParametersAndGetProperties_noPrefix_setVariantExplicitly()40 public void buildParametersAndGetProperties_noPrefix_setVariantExplicitly() throws Exception { 41 Ed25519Parameters parameters = Ed25519Parameters.create(NO_PREFIX); 42 assertThat(parameters.getVariant()).isEqualTo(NO_PREFIX); 43 assertThat(parameters.hasIdRequirement()).isFalse(); 44 } 45 46 @Test buildParametersAndGetProperties_tink()47 public void buildParametersAndGetProperties_tink() throws Exception { 48 Ed25519Parameters parameters = Ed25519Parameters.create(TINK); 49 assertThat(parameters.getVariant()).isEqualTo(TINK); 50 assertThat(parameters.hasIdRequirement()).isTrue(); 51 } 52 53 @Test buildParameterAndGetProperties_crunchy()54 public void buildParameterAndGetProperties_crunchy() throws Exception { 55 Ed25519Parameters parameters = Ed25519Parameters.create(CRUNCHY); 56 assertThat(parameters.getVariant()).isEqualTo(CRUNCHY); 57 assertThat(parameters.hasIdRequirement()).isTrue(); 58 } 59 60 @Test buildParameterAndGetProperties_legacy()61 public void buildParameterAndGetProperties_legacy() throws Exception { 62 Ed25519Parameters parameters = Ed25519Parameters.create(LEGACY); 63 assertThat(parameters.getVariant()).isEqualTo(LEGACY); 64 assertThat(parameters.hasIdRequirement()).isTrue(); 65 } 66 67 @Test testEqualsAndEqualHashCode_noPrefix()68 public void testEqualsAndEqualHashCode_noPrefix() throws Exception { 69 Ed25519Parameters parametersNoPrefix0 = Ed25519Parameters.create(); 70 Ed25519Parameters parametersNoPrefix1 = Ed25519Parameters.create(); 71 assertThat(parametersNoPrefix0).isEqualTo(parametersNoPrefix1); 72 assertThat(parametersNoPrefix0.hashCode()).isEqualTo(parametersNoPrefix1.hashCode()); 73 } 74 75 @Test testEqualsAndEqualHashCode_tink()76 public void testEqualsAndEqualHashCode_tink() throws Exception { 77 Ed25519Parameters parametersTink0 = Ed25519Parameters.create(TINK); 78 Ed25519Parameters parametersTink1 = Ed25519Parameters.create(TINK); 79 assertThat(parametersTink0).isEqualTo(parametersTink1); 80 assertThat(parametersTink0.hashCode()).isEqualTo(parametersTink1.hashCode()); 81 } 82 83 @Test testEqualsAndEqualHashCode_crunchy()84 public void testEqualsAndEqualHashCode_crunchy() throws Exception { 85 Ed25519Parameters parametersCrunchy0 = Ed25519Parameters.create(CRUNCHY); 86 Ed25519Parameters parametersCrunchy1 = Ed25519Parameters.create(CRUNCHY); 87 assertThat(parametersCrunchy0).isEqualTo(parametersCrunchy1); 88 assertThat(parametersCrunchy0.hashCode()).isEqualTo(parametersCrunchy1.hashCode()); 89 } 90 91 @Test testEqualsAndEqualHashCode_legacy()92 public void testEqualsAndEqualHashCode_legacy() throws Exception { 93 Ed25519Parameters parametersLegacy0 = Ed25519Parameters.create(LEGACY); 94 Ed25519Parameters parametersLegacy1 = Ed25519Parameters.create(LEGACY); 95 assertThat(parametersLegacy0).isEqualTo(parametersLegacy1); 96 assertThat(parametersLegacy0.hashCode()).isEqualTo(parametersLegacy1.hashCode()); 97 } 98 99 @Test testNotEqualAndNotEqualHashCode_noPrefix()100 public void testNotEqualAndNotEqualHashCode_noPrefix() throws Exception { 101 Ed25519Parameters parametersNoPrefix = Ed25519Parameters.create(); 102 103 Ed25519Parameters parametersTink = Ed25519Parameters.create(TINK); 104 Ed25519Parameters parametersCrunchy = Ed25519Parameters.create(CRUNCHY); 105 Ed25519Parameters parametersLegacy = Ed25519Parameters.create(LEGACY); 106 107 assertThat(parametersNoPrefix).isNotEqualTo(parametersTink); 108 assertThat(parametersNoPrefix.hashCode()).isNotEqualTo(parametersTink.hashCode()); 109 110 assertThat(parametersNoPrefix).isNotEqualTo(parametersCrunchy); 111 assertThat(parametersNoPrefix.hashCode()).isNotEqualTo(parametersCrunchy.hashCode()); 112 113 assertThat(parametersNoPrefix).isNotEqualTo(parametersLegacy); 114 assertThat(parametersNoPrefix.hashCode()).isNotEqualTo(parametersLegacy.hashCode()); 115 } 116 117 @Test testNotEqualAndNotEqualHashCode_tink()118 public void testNotEqualAndNotEqualHashCode_tink() throws Exception { 119 Ed25519Parameters parametersTink = Ed25519Parameters.create(TINK); 120 121 Ed25519Parameters parametersCrunchy = Ed25519Parameters.create(CRUNCHY); 122 Ed25519Parameters parametersLegacy = Ed25519Parameters.create(LEGACY); 123 124 assertThat(parametersTink).isNotEqualTo(parametersCrunchy); 125 assertThat(parametersTink.hashCode()).isNotEqualTo(parametersCrunchy.hashCode()); 126 127 assertThat(parametersTink).isNotEqualTo(parametersLegacy); 128 assertThat(parametersTink.hashCode()).isNotEqualTo(parametersLegacy.hashCode()); 129 } 130 131 @Test testNotEqualAndNotEqualHashCode_crunchy_legacy()132 public void testNotEqualAndNotEqualHashCode_crunchy_legacy() throws Exception { 133 Ed25519Parameters parametersCrunchy = Ed25519Parameters.create(CRUNCHY); 134 Ed25519Parameters parametersLegacy = Ed25519Parameters.create(LEGACY); 135 136 assertThat(parametersCrunchy).isNotEqualTo(parametersLegacy); 137 assertThat(parametersCrunchy.hashCode()).isNotEqualTo(parametersLegacy.hashCode()); 138 } 139 } 140