• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2024 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.aead;
18 
19 import static com.google.common.truth.Truth.assertThat;
20 import static org.junit.Assert.assertThrows;
21 
22 import java.security.GeneralSecurityException;
23 import org.junit.Test;
24 import org.junit.runner.RunWith;
25 import org.junit.runners.JUnit4;
26 
27 @RunWith(JUnit4.class)
28 public final class XAesGcmParametersTest {
29   private static final XAesGcmParameters.Variant NO_PREFIX = XAesGcmParameters.Variant.NO_PREFIX;
30   private static final XAesGcmParameters.Variant TINK = XAesGcmParameters.Variant.TINK;
31 
32   @Test
buildParameters_noPrefix()33   public void buildParameters_noPrefix() throws Exception {
34     XAesGcmParameters parameters = XAesGcmParameters.create(XAesGcmParameters.Variant.NO_PREFIX, 8);
35     assertThat(parameters.getVariant()).isEqualTo(NO_PREFIX);
36     assertThat(parameters.getSaltSizeBytes()).isEqualTo(8);
37     assertThat(parameters.hasIdRequirement()).isFalse();
38   }
39 
40   @Test
buildParameters_tink()41   public void buildParameters_tink() throws Exception {
42     XAesGcmParameters parameters = XAesGcmParameters.create(XAesGcmParameters.Variant.TINK, 12);
43     assertThat(parameters.getVariant()).isEqualTo(TINK);
44     assertThat(parameters.getSaltSizeBytes()).isEqualTo(12);
45     assertThat(parameters.hasIdRequirement()).isTrue();
46   }
47 
48   @Test
buildParameters_invalidSaltSize_throws()49   public void buildParameters_invalidSaltSize_throws() throws Exception {
50     assertThrows(
51         GeneralSecurityException.class,
52         () -> XAesGcmParameters.create(XAesGcmParameters.Variant.TINK, 7));
53     assertThrows(
54         GeneralSecurityException.class,
55         () -> XAesGcmParameters.create(XAesGcmParameters.Variant.TINK, 13));
56   }
57 
58   @Test
testEqualsAndEqualHashCode_noPrefix()59   public void testEqualsAndEqualHashCode_noPrefix() throws Exception {
60     XAesGcmParameters parametersNoPrefix0 =
61         XAesGcmParameters.create(XAesGcmParameters.Variant.NO_PREFIX, 8);
62     XAesGcmParameters parametersNoPrefix1 =
63         XAesGcmParameters.create(XAesGcmParameters.Variant.NO_PREFIX, 8);
64     assertThat(parametersNoPrefix0).isEqualTo(parametersNoPrefix1);
65     assertThat(parametersNoPrefix0.hashCode()).isEqualTo(parametersNoPrefix1.hashCode());
66   }
67 
68   @Test
testEqualsAndEqualHashCode_tink()69   public void testEqualsAndEqualHashCode_tink() throws Exception {
70     XAesGcmParameters parametersTink0 =
71         XAesGcmParameters.create(XAesGcmParameters.Variant.TINK, 12);
72     XAesGcmParameters parametersTink1 =
73         XAesGcmParameters.create(XAesGcmParameters.Variant.TINK, 12);
74     assertThat(parametersTink0).isEqualTo(parametersTink1);
75     assertThat(parametersTink0.hashCode()).isEqualTo(parametersTink1.hashCode());
76   }
77 
78   @Test
testEqualsAndEqualHashCode_different()79   public void testEqualsAndEqualHashCode_different() throws Exception {
80     XAesGcmParameters parametersNoPrefix =
81         XAesGcmParameters.create(XAesGcmParameters.Variant.NO_PREFIX, 8);
82 
83     XAesGcmParameters parametersTink = XAesGcmParameters.create(XAesGcmParameters.Variant.TINK, 8);
84 
85 
86     assertThat(parametersNoPrefix).isNotEqualTo(parametersTink);
87     assertThat(parametersNoPrefix.hashCode()).isNotEqualTo(parametersTink.hashCode());
88 
89     assertThat(parametersTink).isNotEqualTo(parametersNoPrefix);
90     assertThat(parametersTink.hashCode()).isNotEqualTo(parametersNoPrefix.hashCode());
91 
92     XAesGcmParameters parametersTinkWithDifferentSalt =
93         XAesGcmParameters.create(XAesGcmParameters.Variant.TINK, 12);
94     assertThat(parametersTink).isNotEqualTo(parametersTinkWithDifferentSalt);
95     assertThat(parametersTink.hashCode()).isNotEqualTo(parametersTinkWithDifferentSalt.hashCode());
96   }
97 }
98