1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.codec.digest;
19
20 import static org.junit.jupiter.api.Assertions.assertNotNull;
21 import static org.junit.jupiter.api.Assertions.assertThrowsExactly;
22
23 import org.junit.jupiter.api.Test;
24 import org.junitpioneer.jupiter.SetSystemProperty;
25
26 class Sha2CryptKeyLengthTest {
27
28 private static final String SHA256_SALT = "$5$abcdefghijklmnop";
29
30 private static final String SHA512_SALT = "$6$abcdefghijklmnop";
31
32 @Test
33 void testKeyLengthAboveCeilingRejectedByCrypt() {
34 assertThrowsExactly(IllegalArgumentException.class, () -> Crypt.crypt(new byte[4097], SHA256_SALT));
35 assertThrowsExactly(IllegalArgumentException.class, () -> Crypt.crypt(new byte[4097], SHA512_SALT));
36 assertThrowsExactly(IllegalArgumentException.class, () -> Crypt.crypt(new byte[4097]));
37 }
38
39 @Test
40 void testKeyLengthAboveCeilingRejectedBySha2Crypt() {
41 assertThrowsExactly(IllegalArgumentException.class, () -> Sha2Crypt.sha256Crypt(new byte[4097], SHA256_SALT));
42 assertThrowsExactly(IllegalArgumentException.class, () -> Sha2Crypt.sha512Crypt(new byte[4097], SHA512_SALT));
43 }
44
45 @Test
46 void testKeyLengthAtCeilingAccepted() {
47 assertNotNull(Sha2Crypt.sha256Crypt(new byte[4096], SHA256_SALT));
48 assertNotNull(Sha2Crypt.sha512Crypt(new byte[4096], SHA512_SALT));
49 }
50
51 @Test
52 @SetSystemProperty(key = Sha2Crypt.KEY_MAX_PROPERTY, value = "8192")
53 void testKeyLengthCeilingOverrideRestoresPreviousValue() {
54 assertNotNull(Sha2Crypt.sha512Crypt(new byte[8192], SHA512_SALT));
55 }
56 }