• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.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 AesCtrHmacAeadParametersTest {
29   @Test
buildParametersAndGetProperties()30   public void buildParametersAndGetProperties() throws Exception {
31     AesCtrHmacAeadParameters parameters =
32         AesCtrHmacAeadParameters.builder()
33             .setAesKeySizeBytes(16)
34             .setHmacKeySizeBytes(16)
35             .setIvSizeBytes(16)
36             .setTagSizeBytes(21)
37             .setHashType(AesCtrHmacAeadParameters.HashType.SHA256)
38             .setVariant(AesCtrHmacAeadParameters.Variant.NO_PREFIX)
39             .build();
40     assertThat(parameters.getAesKeySizeBytes()).isEqualTo(16);
41     assertThat(parameters.getHmacKeySizeBytes()).isEqualTo(16);
42     assertThat(parameters.getCiphertextOverheadSizeBytes()).isEqualTo(37);
43     assertThat(parameters.getIvSizeBytes()).isEqualTo(16);
44     assertThat(parameters.getTagSizeBytes()).isEqualTo(21);
45     assertThat(parameters.getHashType()).isEqualTo(AesCtrHmacAeadParameters.HashType.SHA256);
46     assertThat(parameters.getVariant()).isEqualTo(AesCtrHmacAeadParameters.Variant.NO_PREFIX);
47     assertThat(parameters.hasIdRequirement()).isFalse();
48   }
49 
50   @Test
buildParametersWithoutSettingVariant_hasNoPrefix()51   public void buildParametersWithoutSettingVariant_hasNoPrefix() throws Exception {
52     AesCtrHmacAeadParameters parameters =
53         AesCtrHmacAeadParameters.builder()
54             .setAesKeySizeBytes(16)
55             .setHmacKeySizeBytes(16)
56             .setIvSizeBytes(16)
57             .setTagSizeBytes(21)
58             .setHashType(AesCtrHmacAeadParameters.HashType.SHA512)
59             .build();
60     assertThat(parameters.getCiphertextOverheadSizeBytes()).isEqualTo(37);
61     assertThat(parameters.getTagSizeBytes()).isEqualTo(21);
62     assertThat(parameters.getVariant()).isEqualTo(AesCtrHmacAeadParameters.Variant.NO_PREFIX);
63     assertThat(parameters.hasIdRequirement()).isFalse();
64   }
65 
66   @Test
buildParametersWithoutSettingAesKeySize_fails()67   public void buildParametersWithoutSettingAesKeySize_fails() throws Exception {
68     assertThrows(
69         GeneralSecurityException.class,
70         () ->
71             AesCtrHmacAeadParameters.builder()
72                 .setHmacKeySizeBytes(16)
73                 .setIvSizeBytes(16)
74                 .setTagSizeBytes(21)
75                 .setHashType(AesCtrHmacAeadParameters.HashType.SHA256)
76                 .setVariant(AesCtrHmacAeadParameters.Variant.NO_PREFIX)
77                 .build());
78   }
79 
80   @Test
buildParametersWithoutSettingHmacKeySize_fails()81   public void buildParametersWithoutSettingHmacKeySize_fails() throws Exception {
82     assertThrows(
83         GeneralSecurityException.class,
84         () ->
85             AesCtrHmacAeadParameters.builder()
86                 .setAesKeySizeBytes(16)
87                 .setTagSizeBytes(21)
88                 .setIvSizeBytes(16)
89                 .setHashType(AesCtrHmacAeadParameters.HashType.SHA256)
90                 .setVariant(AesCtrHmacAeadParameters.Variant.NO_PREFIX)
91                 .build());
92   }
93 
94   @Test
buildParametersWithoutSettingTagSize_fails()95   public void buildParametersWithoutSettingTagSize_fails() throws Exception {
96     assertThrows(
97         GeneralSecurityException.class,
98         () ->
99             AesCtrHmacAeadParameters.builder()
100                 .setAesKeySizeBytes(16)
101                 .setHmacKeySizeBytes(16)
102                 .setIvSizeBytes(16)
103                 .setHashType(AesCtrHmacAeadParameters.HashType.SHA256)
104                 .setVariant(AesCtrHmacAeadParameters.Variant.NO_PREFIX)
105                 .build());
106   }
107 
108   @Test
buildParametersWithoutSettingIvSize_fails()109   public void buildParametersWithoutSettingIvSize_fails() throws Exception {
110     assertThrows(
111         GeneralSecurityException.class,
112         () ->
113             AesCtrHmacAeadParameters.builder()
114                 .setAesKeySizeBytes(16)
115                 .setHmacKeySizeBytes(16)
116                 .setTagSizeBytes(21)
117                 .setHashType(AesCtrHmacAeadParameters.HashType.SHA256)
118                 .setVariant(AesCtrHmacAeadParameters.Variant.NO_PREFIX)
119                 .build());
120   }
121 
122   @Test
buildParametersWithoutSettingHashType_fails()123   public void buildParametersWithoutSettingHashType_fails() throws Exception {
124     assertThrows(
125         GeneralSecurityException.class,
126         () ->
127             AesCtrHmacAeadParameters.builder()
128                 .setAesKeySizeBytes(16)
129                 .setHmacKeySizeBytes(16)
130                 .setIvSizeBytes(16)
131                 .setTagSizeBytes(21)
132                 .setVariant(AesCtrHmacAeadParameters.Variant.NO_PREFIX)
133                 .build());
134   }
135 
136   @Test
buildParametersWithVariantSetToNull_fails()137   public void buildParametersWithVariantSetToNull_fails() throws Exception {
138     assertThrows(
139         GeneralSecurityException.class,
140         () ->
141             AesCtrHmacAeadParameters.builder()
142                 .setAesKeySizeBytes(16)
143                 .setHmacKeySizeBytes(16)
144                 .setIvSizeBytes(16)
145                 .setTagSizeBytes(21)
146                 .setHashType(AesCtrHmacAeadParameters.HashType.SHA256)
147                 .setVariant(null)
148                 .build());
149   }
150 
151   @Test
buildParametersWithTinkPrefix()152   public void buildParametersWithTinkPrefix() throws Exception {
153     AesCtrHmacAeadParameters parameters =
154         AesCtrHmacAeadParameters.builder()
155             .setAesKeySizeBytes(16)
156             .setHmacKeySizeBytes(16)
157             .setTagSizeBytes(21)
158             .setIvSizeBytes(16)
159             .setHashType(AesCtrHmacAeadParameters.HashType.SHA256)
160             .setVariant(AesCtrHmacAeadParameters.Variant.TINK)
161             .build();
162     assertThat(parameters.getCiphertextOverheadSizeBytes()).isEqualTo(42);
163     assertThat(parameters.getTagSizeBytes()).isEqualTo(21);
164     assertThat(parameters.getVariant()).isEqualTo(AesCtrHmacAeadParameters.Variant.TINK);
165     assertThat(parameters.hasIdRequirement()).isTrue();
166   }
167 
168   @Test
buildParametersWithCrunchyPrefix()169   public void buildParametersWithCrunchyPrefix() throws Exception {
170     AesCtrHmacAeadParameters parameters =
171         AesCtrHmacAeadParameters.builder()
172             .setAesKeySizeBytes(16)
173             .setHmacKeySizeBytes(16)
174             .setTagSizeBytes(21)
175             .setIvSizeBytes(16)
176             .setHashType(AesCtrHmacAeadParameters.HashType.SHA256)
177             .setVariant(AesCtrHmacAeadParameters.Variant.CRUNCHY)
178             .build();
179     assertThat(parameters.getCiphertextOverheadSizeBytes()).isEqualTo(42);
180     assertThat(parameters.getTagSizeBytes()).isEqualTo(21);
181     assertThat(parameters.getVariant()).isEqualTo(AesCtrHmacAeadParameters.Variant.CRUNCHY);
182     assertThat(parameters.hasIdRequirement()).isTrue();
183   }
184 
185   @Test
buildParametersWithBadAesKeySize_fails()186   public void buildParametersWithBadAesKeySize_fails() throws Exception {
187     assertThrows(
188         GeneralSecurityException.class,
189         () ->
190             AesCtrHmacAeadParameters.builder()
191                 .setAesKeySizeBytes(40)
192                 .setHmacKeySizeBytes(16)
193                 .setTagSizeBytes(21)
194                 .setIvSizeBytes(11)
195                 .setHashType(AesCtrHmacAeadParameters.HashType.SHA256)
196                 .setVariant(AesCtrHmacAeadParameters.Variant.NO_PREFIX)
197                 .build());
198   }
199 
200   @Test
buildParametersWithBadHmacKeySize_fails()201   public void buildParametersWithBadHmacKeySize_fails() throws Exception {
202     assertThrows(
203         GeneralSecurityException.class,
204         () ->
205             AesCtrHmacAeadParameters.builder()
206                 .setAesKeySizeBytes(16)
207                 .setHmacKeySizeBytes(12)
208                 .setTagSizeBytes(21)
209                 .setIvSizeBytes(16)
210                 .setHashType(AesCtrHmacAeadParameters.HashType.SHA256)
211                 .setVariant(AesCtrHmacAeadParameters.Variant.NO_PREFIX)
212                 .build());
213   }
214 
215   @Test
buildParametersWithBadIvSize_fails()216   public void buildParametersWithBadIvSize_fails() throws Exception {
217     assertThrows(
218         GeneralSecurityException.class,
219         () ->
220             AesCtrHmacAeadParameters.builder()
221                 .setAesKeySizeBytes(16)
222                 .setHmacKeySizeBytes(12)
223                 .setTagSizeBytes(21)
224                 .setIvSizeBytes(11)
225                 .setHashType(AesCtrHmacAeadParameters.HashType.SHA256)
226                 .setVariant(AesCtrHmacAeadParameters.Variant.NO_PREFIX)
227                 .build());
228 
229     assertThrows(
230         GeneralSecurityException.class,
231         () ->
232             AesCtrHmacAeadParameters.builder()
233                 .setAesKeySizeBytes(16)
234                 .setHmacKeySizeBytes(12)
235                 .setTagSizeBytes(21)
236                 .setIvSizeBytes(17)
237                 .setHashType(AesCtrHmacAeadParameters.HashType.SHA256)
238                 .setVariant(AesCtrHmacAeadParameters.Variant.NO_PREFIX)
239                 .build());
240   }
241 
242   @Test
buildParametersWithSha1_acceptsTagSizesBetween10And20()243   public void buildParametersWithSha1_acceptsTagSizesBetween10And20() throws Exception {
244     assertThrows(
245         GeneralSecurityException.class,
246         () ->
247             AesCtrHmacAeadParameters.builder()
248                 .setAesKeySizeBytes(16)
249                 .setHmacKeySizeBytes(16)
250                 .setTagSizeBytes(9)
251                 .setIvSizeBytes(16)
252                 .setHashType(AesCtrHmacAeadParameters.HashType.SHA1)
253                 .setVariant(AesCtrHmacAeadParameters.Variant.NO_PREFIX)
254                 .build());
255     assertThrows(
256         GeneralSecurityException.class,
257         () ->
258             AesCtrHmacAeadParameters.builder()
259                 .setAesKeySizeBytes(16)
260                 .setHmacKeySizeBytes(16)
261                 .setTagSizeBytes(21)
262                 .setIvSizeBytes(16)
263                 .setHashType(AesCtrHmacAeadParameters.HashType.SHA1)
264                 .setVariant(AesCtrHmacAeadParameters.Variant.NO_PREFIX)
265                 .build());
266 
267     AesCtrHmacAeadParameters unused =
268         AesCtrHmacAeadParameters.builder()
269             .setAesKeySizeBytes(16)
270             .setHmacKeySizeBytes(16)
271             .setTagSizeBytes(10)
272             .setIvSizeBytes(16)
273             .setHashType(AesCtrHmacAeadParameters.HashType.SHA1)
274             .setVariant(AesCtrHmacAeadParameters.Variant.NO_PREFIX)
275             .build();
276     unused =
277         AesCtrHmacAeadParameters.builder()
278             .setAesKeySizeBytes(16)
279             .setHmacKeySizeBytes(16)
280             .setTagSizeBytes(20)
281             .setIvSizeBytes(16)
282             .setHashType(AesCtrHmacAeadParameters.HashType.SHA1)
283             .setVariant(AesCtrHmacAeadParameters.Variant.NO_PREFIX)
284             .build();
285   }
286 
287   @Test
buildParametersWithSha224_acceptsTagSizesBetween10And28()288   public void buildParametersWithSha224_acceptsTagSizesBetween10And28() throws Exception {
289     assertThrows(
290         GeneralSecurityException.class,
291         () ->
292             AesCtrHmacAeadParameters.builder()
293                 .setAesKeySizeBytes(16)
294                 .setHmacKeySizeBytes(16)
295                 .setTagSizeBytes(9)
296                 .setIvSizeBytes(16)
297                 .setHashType(AesCtrHmacAeadParameters.HashType.SHA224)
298                 .setVariant(AesCtrHmacAeadParameters.Variant.NO_PREFIX)
299                 .build());
300     assertThrows(
301         GeneralSecurityException.class,
302         () ->
303             AesCtrHmacAeadParameters.builder()
304                 .setAesKeySizeBytes(16)
305                 .setHmacKeySizeBytes(16)
306                 .setTagSizeBytes(29)
307                 .setIvSizeBytes(16)
308                 .setHashType(AesCtrHmacAeadParameters.HashType.SHA224)
309                 .setVariant(AesCtrHmacAeadParameters.Variant.NO_PREFIX)
310                 .build());
311 
312     AesCtrHmacAeadParameters unused =
313         AesCtrHmacAeadParameters.builder()
314             .setAesKeySizeBytes(16)
315             .setHmacKeySizeBytes(16)
316             .setTagSizeBytes(10)
317             .setIvSizeBytes(16)
318             .setHashType(AesCtrHmacAeadParameters.HashType.SHA224)
319             .setVariant(AesCtrHmacAeadParameters.Variant.NO_PREFIX)
320             .build();
321     unused =
322         AesCtrHmacAeadParameters.builder()
323             .setAesKeySizeBytes(16)
324             .setHmacKeySizeBytes(16)
325             .setTagSizeBytes(28)
326             .setIvSizeBytes(16)
327             .setHashType(AesCtrHmacAeadParameters.HashType.SHA224)
328             .setVariant(AesCtrHmacAeadParameters.Variant.NO_PREFIX)
329             .build();
330   }
331 
332   @Test
buildParametersWithSha256_acceptsTagSizesBetween10And32()333   public void buildParametersWithSha256_acceptsTagSizesBetween10And32() throws Exception {
334     assertThrows(
335         GeneralSecurityException.class,
336         () ->
337             AesCtrHmacAeadParameters.builder()
338                 .setAesKeySizeBytes(16)
339                 .setHmacKeySizeBytes(16)
340                 .setTagSizeBytes(9)
341                 .setIvSizeBytes(16)
342                 .setHashType(AesCtrHmacAeadParameters.HashType.SHA256)
343                 .setVariant(AesCtrHmacAeadParameters.Variant.NO_PREFIX)
344                 .build());
345     assertThrows(
346         GeneralSecurityException.class,
347         () ->
348             AesCtrHmacAeadParameters.builder()
349                 .setAesKeySizeBytes(16)
350                 .setHmacKeySizeBytes(16)
351                 .setTagSizeBytes(33)
352                 .setIvSizeBytes(16)
353                 .setHashType(AesCtrHmacAeadParameters.HashType.SHA256)
354                 .setVariant(AesCtrHmacAeadParameters.Variant.NO_PREFIX)
355                 .build());
356 
357     AesCtrHmacAeadParameters unused =
358         AesCtrHmacAeadParameters.builder()
359             .setAesKeySizeBytes(16)
360             .setHmacKeySizeBytes(16)
361             .setTagSizeBytes(10)
362             .setIvSizeBytes(16)
363             .setHashType(AesCtrHmacAeadParameters.HashType.SHA256)
364             .setVariant(AesCtrHmacAeadParameters.Variant.NO_PREFIX)
365             .build();
366     unused =
367         AesCtrHmacAeadParameters.builder()
368             .setAesKeySizeBytes(16)
369             .setHmacKeySizeBytes(16)
370             .setTagSizeBytes(32)
371             .setIvSizeBytes(16)
372             .setHashType(AesCtrHmacAeadParameters.HashType.SHA256)
373             .setVariant(AesCtrHmacAeadParameters.Variant.NO_PREFIX)
374             .build();
375   }
376 
377   @Test
buildParametersWithSha384_acceptsTagSizesBetween10And48()378   public void buildParametersWithSha384_acceptsTagSizesBetween10And48() throws Exception {
379     assertThrows(
380         GeneralSecurityException.class,
381         () ->
382             AesCtrHmacAeadParameters.builder()
383                 .setAesKeySizeBytes(16)
384                 .setHmacKeySizeBytes(16)
385                 .setTagSizeBytes(9)
386                 .setIvSizeBytes(16)
387                 .setHashType(AesCtrHmacAeadParameters.HashType.SHA384)
388                 .setVariant(AesCtrHmacAeadParameters.Variant.NO_PREFIX)
389                 .build());
390     assertThrows(
391         GeneralSecurityException.class,
392         () ->
393             AesCtrHmacAeadParameters.builder()
394                 .setAesKeySizeBytes(16)
395                 .setHmacKeySizeBytes(16)
396                 .setTagSizeBytes(49)
397                 .setIvSizeBytes(16)
398                 .setHashType(AesCtrHmacAeadParameters.HashType.SHA384)
399                 .setVariant(AesCtrHmacAeadParameters.Variant.NO_PREFIX)
400                 .build());
401     AesCtrHmacAeadParameters unused =
402         AesCtrHmacAeadParameters.builder()
403             .setAesKeySizeBytes(16)
404             .setHmacKeySizeBytes(16)
405             .setTagSizeBytes(10)
406             .setIvSizeBytes(16)
407             .setHashType(AesCtrHmacAeadParameters.HashType.SHA384)
408             .setVariant(AesCtrHmacAeadParameters.Variant.NO_PREFIX)
409             .build();
410     unused =
411         AesCtrHmacAeadParameters.builder()
412             .setAesKeySizeBytes(16)
413             .setHmacKeySizeBytes(16)
414             .setTagSizeBytes(48)
415             .setIvSizeBytes(16)
416             .setHashType(AesCtrHmacAeadParameters.HashType.SHA384)
417             .setVariant(AesCtrHmacAeadParameters.Variant.NO_PREFIX)
418             .build();
419   }
420 
421   @Test
buildParametersWithSha512_acceptsTagSizesBetween10And64()422   public void buildParametersWithSha512_acceptsTagSizesBetween10And64() throws Exception {
423     assertThrows(
424         GeneralSecurityException.class,
425         () ->
426             AesCtrHmacAeadParameters.builder()
427                 .setAesKeySizeBytes(16)
428                 .setHmacKeySizeBytes(16)
429                 .setTagSizeBytes(9)
430                 .setIvSizeBytes(16)
431                 .setHashType(AesCtrHmacAeadParameters.HashType.SHA512)
432                 .setVariant(AesCtrHmacAeadParameters.Variant.NO_PREFIX)
433                 .build());
434     assertThrows(
435         GeneralSecurityException.class,
436         () ->
437             AesCtrHmacAeadParameters.builder()
438                 .setAesKeySizeBytes(16)
439                 .setHmacKeySizeBytes(16)
440                 .setTagSizeBytes(65)
441                 .setIvSizeBytes(16)
442                 .setHashType(AesCtrHmacAeadParameters.HashType.SHA512)
443                 .setVariant(AesCtrHmacAeadParameters.Variant.NO_PREFIX)
444                 .build());
445     AesCtrHmacAeadParameters unused =
446         AesCtrHmacAeadParameters.builder()
447             .setAesKeySizeBytes(16)
448             .setHmacKeySizeBytes(16)
449             .setTagSizeBytes(10)
450             .setIvSizeBytes(16)
451             .setHashType(AesCtrHmacAeadParameters.HashType.SHA512)
452             .setVariant(AesCtrHmacAeadParameters.Variant.NO_PREFIX)
453             .build();
454     unused =
455         AesCtrHmacAeadParameters.builder()
456             .setAesKeySizeBytes(16)
457             .setHmacKeySizeBytes(16)
458             .setTagSizeBytes(64)
459             .setIvSizeBytes(16)
460             .setHashType(AesCtrHmacAeadParameters.HashType.SHA512)
461             .setVariant(AesCtrHmacAeadParameters.Variant.NO_PREFIX)
462             .build();
463   }
464 
465   @Test
testEqualsAndEqualHashCode()466   public void testEqualsAndEqualHashCode() throws Exception {
467     AesCtrHmacAeadParameters parameters1 =
468         AesCtrHmacAeadParameters.builder()
469             .setAesKeySizeBytes(16)
470             .setHmacKeySizeBytes(16)
471             .setTagSizeBytes(21)
472             .setIvSizeBytes(16)
473             .setHashType(AesCtrHmacAeadParameters.HashType.SHA256)
474             .setVariant(AesCtrHmacAeadParameters.Variant.NO_PREFIX)
475             .build();
476     AesCtrHmacAeadParameters parameters2 =
477         AesCtrHmacAeadParameters.builder()
478             .setAesKeySizeBytes(16)
479             .setHmacKeySizeBytes(16)
480             .setTagSizeBytes(21)
481             .setIvSizeBytes(16)
482             .setHashType(AesCtrHmacAeadParameters.HashType.SHA256)
483             .setVariant(AesCtrHmacAeadParameters.Variant.NO_PREFIX)
484             .build();
485 
486     assertThat(parameters1).isEqualTo(parameters2);
487     assertThat(parameters1.hashCode()).isEqualTo(parameters2.hashCode());
488   }
489 
490   @Test
testNotEqualandNotEqualHashCode()491   public void testNotEqualandNotEqualHashCode() throws Exception {
492     AesCtrHmacAeadParameters parameters1 =
493         AesCtrHmacAeadParameters.builder()
494             .setAesKeySizeBytes(16)
495             .setHmacKeySizeBytes(16)
496             .setTagSizeBytes(21)
497             .setIvSizeBytes(16)
498             .setHashType(AesCtrHmacAeadParameters.HashType.SHA256)
499             .setVariant(AesCtrHmacAeadParameters.Variant.NO_PREFIX)
500             .build();
501 
502     AesCtrHmacAeadParameters parameters2 =
503         AesCtrHmacAeadParameters.builder()
504             .setAesKeySizeBytes(32)
505             .setHmacKeySizeBytes(16)
506             .setTagSizeBytes(21)
507             .setIvSizeBytes(16)
508             .setHashType(AesCtrHmacAeadParameters.HashType.SHA256)
509             .setVariant(AesCtrHmacAeadParameters.Variant.NO_PREFIX)
510             .build();
511     assertThat(parameters1).isNotEqualTo(parameters2);
512     assertThat(parameters1.hashCode()).isNotEqualTo(parameters2.hashCode());
513 
514     parameters2 =
515         AesCtrHmacAeadParameters.builder()
516             .setAesKeySizeBytes(16)
517             .setHmacKeySizeBytes(16)
518             .setTagSizeBytes(22)
519             .setIvSizeBytes(16)
520             .setHashType(AesCtrHmacAeadParameters.HashType.SHA256)
521             .setVariant(AesCtrHmacAeadParameters.Variant.NO_PREFIX)
522             .build();
523     assertThat(parameters1).isNotEqualTo(parameters2);
524     assertThat(parameters1.hashCode()).isNotEqualTo(parameters2.hashCode());
525 
526     parameters2 =
527         AesCtrHmacAeadParameters.builder()
528             .setAesKeySizeBytes(16)
529             .setHmacKeySizeBytes(16)
530             .setTagSizeBytes(21)
531             .setIvSizeBytes(16)
532             .setHashType(AesCtrHmacAeadParameters.HashType.SHA384)
533             .setVariant(AesCtrHmacAeadParameters.Variant.NO_PREFIX)
534             .build();
535     assertThat(parameters1).isNotEqualTo(parameters2);
536     assertThat(parameters1.hashCode()).isNotEqualTo(parameters2.hashCode());
537 
538     parameters2 =
539         AesCtrHmacAeadParameters.builder()
540             .setAesKeySizeBytes(16)
541             .setHmacKeySizeBytes(16)
542             .setTagSizeBytes(21)
543             .setIvSizeBytes(14)
544             .setHashType(AesCtrHmacAeadParameters.HashType.SHA256)
545             .setVariant(AesCtrHmacAeadParameters.Variant.NO_PREFIX)
546             .build();
547     assertThat(parameters1).isNotEqualTo(parameters2);
548     assertThat(parameters1.hashCode()).isNotEqualTo(parameters2.hashCode());
549 
550     parameters2 =
551         AesCtrHmacAeadParameters.builder()
552             .setAesKeySizeBytes(16)
553             .setHmacKeySizeBytes(16)
554             .setTagSizeBytes(21)
555             .setIvSizeBytes(16)
556             .setHashType(AesCtrHmacAeadParameters.HashType.SHA256)
557             .setVariant(AesCtrHmacAeadParameters.Variant.TINK)
558             .build();
559     assertThat(parameters1).isNotEqualTo(parameters2);
560     assertThat(parameters1.hashCode()).isNotEqualTo(parameters2.hashCode());
561   }
562 }
563