Skip to content

Commit b7b7125

Browse files
authored
Reject rounds=0 for SHA1 hashes (#326)
Port of firebase/firebase-admin-node#677
1 parent bb8e34f commit b7b7125

File tree

5 files changed

+31
-11
lines changed

5 files changed

+31
-11
lines changed

src/main/java/com/google/firebase/auth/hash/Md5.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
public class Md5 extends RepeatableHash {
2424

2525
private Md5(Builder builder) {
26-
super("MD5", 0, 120000, builder);
26+
super("MD5", 0, 8192, builder);
2727
}
2828

2929
public static Builder builder() {

src/main/java/com/google/firebase/auth/hash/Sha1.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
public class Sha1 extends RepeatableHash {
2424

2525
private Sha1(Builder builder) {
26-
super("SHA1", 0, 120000, builder);
26+
super("SHA1", 1, 8192, builder);
2727
}
2828

2929
public static Builder builder() {

src/main/java/com/google/firebase/auth/hash/Sha256.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
public class Sha256 extends RepeatableHash {
2424

2525
private Sha256(Builder builder) {
26-
super("SHA256", 0, 120000, builder);
26+
super("SHA256", 1, 8192, builder);
2727
}
2828

2929
public static Builder builder() {

src/main/java/com/google/firebase/auth/hash/Sha512.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
public class Sha512 extends RepeatableHash {
2424

2525
private Sha512(Builder builder) {
26-
super("SHA512", 0, 120000, builder);
26+
super("SHA512", 1, 8192, builder);
2727
}
2828

2929
public static Builder builder() {

src/test/java/com/google/firebase/auth/hash/InvalidHashTest.java

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -48,17 +48,21 @@ public void testInvalidHmac() {
4848

4949
@Test
5050
public void testInvalidRepeatableHash() {
51+
// TODO(rsgowman): Once we can update to Java8, we could just do something like this instead of
52+
// having all of the helpers:
53+
// assertThrows(IllegalArgumentException.class, ()-> Md5.builder().setRounds(-1).build());
54+
5155
List<RepeatableHash.Builder> builders = ImmutableList.<RepeatableHash.Builder>builder()
52-
.add(Sha512.builder().setRounds(-1))
53-
.add(Sha256.builder().setRounds(-1))
54-
.add(Sha1.builder().setRounds(-1))
56+
.add(Sha512.builder().setRounds(0))
57+
.add(Sha256.builder().setRounds(0))
58+
.add(Sha1.builder().setRounds(0))
5559
.add(Md5.builder().setRounds(-1))
5660
.add(Pbkdf2Sha256.builder().setRounds(-1))
5761
.add(PbkdfSha1.builder().setRounds(-1))
58-
.add(Sha512.builder().setRounds(120001))
59-
.add(Sha256.builder().setRounds(120001))
60-
.add(Sha1.builder().setRounds(120001))
61-
.add(Md5.builder().setRounds(120001))
62+
.add(Sha512.builder().setRounds(8193))
63+
.add(Sha256.builder().setRounds(8193))
64+
.add(Sha1.builder().setRounds(8193))
65+
.add(Md5.builder().setRounds(8193))
6266
.add(Pbkdf2Sha256.builder().setRounds(120001))
6367
.add(PbkdfSha1.builder().setRounds(120001))
6468
.build();
@@ -72,6 +76,22 @@ public void testInvalidRepeatableHash() {
7276
}
7377
}
7478

79+
@Test
80+
public void testValidRepeatableHash() {
81+
Md5.builder().setRounds(0).build();
82+
Md5.builder().setRounds(8192).build();
83+
Sha1.builder().setRounds(1).build();
84+
Sha1.builder().setRounds(8192).build();
85+
Sha256.builder().setRounds(1).build();
86+
Sha256.builder().setRounds(8192).build();
87+
Sha512.builder().setRounds(1).build();
88+
Sha512.builder().setRounds(8192).build();
89+
PbkdfSha1.builder().setRounds(0).build();
90+
PbkdfSha1.builder().setRounds(120000).build();
91+
Pbkdf2Sha256.builder().setRounds(0).build();
92+
Pbkdf2Sha256.builder().setRounds(120000).build();
93+
}
94+
7595
@Test
7696
public void testInvalidScrypt() {
7797
List<Scrypt.Builder> builders = ImmutableList.of(

0 commit comments

Comments
 (0)